OOP and the scope of a class, am I wrong?
-
OOP? Hell, I'm pissed they never taught anything about debugging techniques or using a debugger! It would make teaching the languages and code much easier if they could see exactly what's changing while the code is running.
Asking questions is a skill CodeProject Forum Guidelines Google: C# How to debug code Seriously, go read these articles. Dave Kreskowiak
They also didn't teach building/making complex software systems. We learned on OpenVMS and the debugger is nigh on unusable so it's no surprise they didn't teach it. Learning how to debug without a debugger is much more important anyway.
-
My take: A class should group related data and actions that center around a single concept. A car class might contain 4 Tire class instances as data members, an Engine instance, and a Gearbox instance. Each one has actions relevant to its operation like Engine.Start(), and Wheel.Rotate() But I'm hearing that professors are teaching that classes are effectively a single action like
ReadTextFile
and it makes me a lot more irritated than I probably should be. Am I wrong here?Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
The prof is teaching “microServices” I remember seeing a text book purporting to teach OO with C++. I seriously think that a professor took an Introduction to Programming with classic BASIC and converted it paragraph by paragraph to C++. It was horrendous!
-
My take: A class should group related data and actions that center around a single concept. A car class might contain 4 Tire class instances as data members, an Engine instance, and a Gearbox instance. Each one has actions relevant to its operation like Engine.Start(), and Wheel.Rotate() But I'm hearing that professors are teaching that classes are effectively a single action like
ReadTextFile
and it makes me a lot more irritated than I probably should be. Am I wrong here?Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
Use the right paradigm for the right job. And I'll refer to this again for any who haven't read it: Stevey's Blog Rants: Execution in the Kingdom of Nouns[^]
-
They also didn't teach building/making complex software systems. We learned on OpenVMS and the debugger is nigh on unusable so it's no surprise they didn't teach it. Learning how to debug without a debugger is much more important anyway.
I wish they would have taught just the basic technique of outputting suspect variables to the console, but when I was going, they didn't teach even that.
Asking questions is a skill CodeProject Forum Guidelines Google: C# How to debug code Seriously, go read these articles. Dave Kreskowiak
-
My take: A class should group related data and actions that center around a single concept. A car class might contain 4 Tire class instances as data members, an Engine instance, and a Gearbox instance. Each one has actions relevant to its operation like Engine.Start(), and Wheel.Rotate() But I'm hearing that professors are teaching that classes are effectively a single action like
ReadTextFile
and it makes me a lot more irritated than I probably should be. Am I wrong here?Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
When I was learning C++, most college professors knew a bit of C and taught C as C++. I see things have not improved
-
I believe ablative gerund belongs to latin grammar, and there is no such thing as easy latin. But I'm probably wrong though, as I never learned latin.
Wrong is evil and must be defeated. - Jeff Ello
-
My take: A class should group related data and actions that center around a single concept. A car class might contain 4 Tire class instances as data members, an Engine instance, and a Gearbox instance. Each one has actions relevant to its operation like Engine.Start(), and Wheel.Rotate() But I'm hearing that professors are teaching that classes are effectively a single action like
ReadTextFile
and it makes me a lot more irritated than I probably should be. Am I wrong here?Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
honey the codewitch wrote:
Am I wrong here?
No, not at all. A class, in the various languages that contemplate it as a construct, is one of several possible forms of implementing an ADT (Abstract Data Type). Generally data + code, plus some other "automation" to implement inheritance and, consequently, dynamic polymorphism, at least in languages like C++. An ADT is also an opaque structure (like FILE in the C library) in addition to the free functions that operate on it: it does not matter what the "guts/bowels" (hidden part) of a class or structure look like, what matters is the interface with which it allows you to operate, i.e., the functions that accept an explicit or implicit "this".
-
My take: A class should group related data and actions that center around a single concept. A car class might contain 4 Tire class instances as data members, an Engine instance, and a Gearbox instance. Each one has actions relevant to its operation like Engine.Start(), and Wheel.Rotate() But I'm hearing that professors are teaching that classes are effectively a single action like
ReadTextFile
and it makes me a lot more irritated than I probably should be. Am I wrong here?Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
Your description is very accurate IMHO... Can you - secretly - share the name of the places those professors teaching? I want to ensure my kids don't go near there... :-D
"If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization." ― Gerald Weinberg
-
I believe ablative gerund belongs to latin grammar, and there is no such thing as easy latin. But I'm probably wrong though, as I never learned latin.
Wrong is evil and must be defeated. - Jeff Ello
Awesome rabbit-hole :)
-
Holy ... Dear Richard, you know me now for a longer time as an English non native. Can you please describe 'ablative gerund' in _very simple words_ for me? Thank you very much in advance ;)
-
My take: A class should group related data and actions that center around a single concept. A car class might contain 4 Tire class instances as data members, an Engine instance, and a Gearbox instance. Each one has actions relevant to its operation like Engine.Start(), and Wheel.Rotate() But I'm hearing that professors are teaching that classes are effectively a single action like
ReadTextFile
and it makes me a lot more irritated than I probably should be. Am I wrong here?Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
honey the codewitch wrote:
A car class might contain 4 Tire class instances ... Am I wrong here?
Yes - you misspelled "tyre". ;P
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
-
Ha ha! I remember "ablative" and "gerund" from my Latin classes back in the 1950s. So I just put the two words together as a joke. But the joke, it appears, is on me, as there realy is such a thing. But I am not sure exactly what that thing is.
[Gerund and Gerundive | Dickinson College Commentaries](https://dcc.dickinson.edu/grammar/latin/gerund-and-gerundive#:~:text=The ablative of the gerund,%2C and (rarely) prō.)
Freedom is the freedom to say that two plus two make four. If that is granted, all else follows. -- 6079 Smith W.
-
Your description is very accurate IMHO... Can you - secretly - share the name of the places those professors teaching? I want to ensure my kids don't go near there... :-D
"If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization." ― Gerald Weinberg
You're probably safe. I ran into this while helping a student from South Africa
Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
-
My take: A class should group related data and actions that center around a single concept. A car class might contain 4 Tire class instances as data members, an Engine instance, and a Gearbox instance. Each one has actions relevant to its operation like Engine.Start(), and Wheel.Rotate() But I'm hearing that professors are teaching that classes are effectively a single action like
ReadTextFile
and it makes me a lot more irritated than I probably should be. Am I wrong here?Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
honey the codewitch wrote:
professors are teaching that classes are effectively a single action like ReadTextFile
I hope what they meant (but probably didn't clearly convey) is a recommendation for a
TextFileReader
class (that derives fromFileReader
that derives fromStreamReader
) that has methods like Read() and ReadToEnd(). /raviMy new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com
-
honey the codewitch wrote:
professors are teaching that classes are effectively a single action like ReadTextFile
I hope what they meant (but probably didn't clearly convey) is a recommendation for a
TextFileReader
class (that derives fromFileReader
that derives fromStreamReader
) that has methods like Read() and ReadToEnd(). /raviMy new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com
Not at all. It had ParsePatientData, and OuputPatientData Yeah. It's like that. And the assignment required the name.
Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
-
My take: A class should group related data and actions that center around a single concept. A car class might contain 4 Tire class instances as data members, an Engine instance, and a Gearbox instance. Each one has actions relevant to its operation like Engine.Start(), and Wheel.Rotate() But I'm hearing that professors are teaching that classes are effectively a single action like
ReadTextFile
and it makes me a lot more irritated than I probably should be. Am I wrong here?Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
I guess that could be considered a class in a command-based architecture, where ReadTextFile inherits from (or implements) some sort of base Command class and it contains all the information the processing system needs to perform that action, but it's a stretch, and certainly not to be taught as "the norm"...
-
I guess that could be considered a class in a command-based architecture, where ReadTextFile inherits from (or implements) some sort of base Command class and it contains all the information the processing system needs to perform that action, but it's a stretch, and certainly not to be taught as "the norm"...
That's almost certainly what is being taught. It comes from the (very helpful) book 'Design Patterns' by Erich, Gamma, et. al. (aka. 'the Gang of Four' ... abbreviated everywhere to 'GoF'). It is useful in particular situations, and it has trade-offs. Professors should teach it, but I doubt they are advocating that it should be always done that way ... that's more likely students not grasping the nuance of when to apply the pattern.
-
My take: A class should group related data and actions that center around a single concept. A car class might contain 4 Tire class instances as data members, an Engine instance, and a Gearbox instance. Each one has actions relevant to its operation like Engine.Start(), and Wheel.Rotate() But I'm hearing that professors are teaching that classes are effectively a single action like
ReadTextFile
and it makes me a lot more irritated than I probably should be. Am I wrong here?Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
-
Of course, but I was simplifying and glossing over details to simply get to the larger point, to wit: In my mind, a class is a noun, not a verb, essentially.
Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
honey the codewitch wrote:
In my mind, a class is a noun, not a verb, essentially
For me, a class may be either a noun or a verb. As a noun, the concept represented by the class is a thing, and the class provides information and operations for that thing. For a verb the concept is a process, and the class supports that process. I guess 'process' can be thought of as a noun, but thinking of it that way adds indirection to my thinking.
Software Zen:
delete this;
-
My take: A class should group related data and actions that center around a single concept. A car class might contain 4 Tire class instances as data members, an Engine instance, and a Gearbox instance. Each one has actions relevant to its operation like Engine.Start(), and Wheel.Rotate() But I'm hearing that professors are teaching that classes are effectively a single action like
ReadTextFile
and it makes me a lot more irritated than I probably should be. Am I wrong here?Check out my IoT graphics library here: https://honeythecodewitch.com/gfx And my IoT UI/User Experience library here: https://honeythecodewitch.com/uix
No, you are correct. Your car is a valid class as you define it. ReadTextFile() is a function. To be a valid class, imo, it would be TextFile as the class, with properties and actions. TextFile.length, etc. and TextFile.Read,write,etc. My take, in English grammar, is that a class should be a noun, with adjectives, verbs and possibly adverbs that go with it. If it's short of that, it deserves another look for consideration as a function or structure. I suppose, depending on the language, a class could be looked at as a convenient way to store a reusable. What a declaration nightmare that creates, using your example.