deals with complex interrelated systems. It defines rules whereby objects send messages to each other, and processing occurs as an emergent behaviour.
The brain works like this (i.e., neurons sending hormonal signals to each other), as does an amplifier.
- This is a stretched analogy. Lots of things can be considered a "message". A function call, a record in a log queue table, etc.
deals with programming object-oriented systems.
Consider an organization of people - a company. A company functions in much the same way, and if we can apply knowledge of ObjectOrientation
learned through ObjectOrientedProgramming
, we might be able to solve some hitherto unsolvable problems in organizational theory. -- EddieEdwards
How about "Event Driven" systems, compared to and contrasted with "Object Oriented" systems? (good O-O systems have an Event-based runtime core, etc.)
Win32 is event-driven (
message-based) but isn't object-oriented
How about "Object-BASED" rather than "Object-ORIENTED", as I hear some people characterize VisualBasic
? (I think they mean, manipulating object instantiations of existing class libraries, but not creating new class definitions?)
See also ReactiveProgramming
or the ReactiveProgrammingModel?
Related to LawOfDemeter
and other PrinciplesOfObjectOrientedDesign
See also ObjectOrientationTips
What exactly is the definition of ObjectOrientation
? Is there an algebra or calculus which can describe it completely? Or is it more of a technique or mindset?
I see three different views of ObjectOrientation
1. Scandinavian View
Programming is modeling. Because people think in terms of concepts like "object" and "action",
our programming/modeling languages must support these concepts. This is the view of the people
who invented SimulaLanguage
, the first object-oriented language.
2. Mystical View
All computation consists of objects sending messages to each other. The ActorLanguages
people are perhaps the best representative
of this view, with each object running in parallel with the others. I call it "mystical" because
our hardware is stubbornly different from it.
That's an odd reason to call something "mystical". The ActorsModel is a model of computation with a precise definition, given by formal "locality laws" and "event ordering laws". In that sense it is quite "anti-mystical".
Smalltalk is an amusing example, because Smalltalkers will say that a program is a bunch of
objects sending messages to each other, but in fact all that is happening is procedure calls.
Yes, that is the main difference between Smalltalk and any of the ActorLanguages.
3. Software Engineering View
An object-oriented language is defined as one with certain features. These features are usually DataAbstraction?
and inheritance, though identity should probably be on the list, and I have seen
garbage collection on the list, as well. BobMartin
is pushing this view when he says that
OOP is about better tools for structuring software, not about modeling the real world.
I have decided that, like the blind men and the elephant, all these views are correct. People tend to fixate on one or the other of them, but the truth of OOP is bigger than our descriptions of it.
Any paradigm could possibly say similar things. "YouJustDontGetIt
: This should be merged with ObjectOriented
. ...or ObjectOrientedLandscape