Restricted OO is about syntax: the form of local expression. Full OO is about semantics: the meaning of system execution.
Critique and discuss.
, pragmatics, and form.
Clarify and discuss. I can't comment on #2, since I don't know aspect oriented programming. However, I agree with this #1.
Restricted OO is also called "class-oriented" programming, and yes, quite often it's just about the "object-oriented syntax" without the slighest understanding about the semantics.
Ask 10 random "OO"-programmers about why they use OO (or CO) instead of ie. procedural or functional programming. I'll bet that about 9 of them mentions code re-use but not the real world modelling and user/stakeholders mental models.
Syntax matters too. I've been working for more than 4 months now on an odd subject for a software engineer: PLC automation programming. It has been possible to write PLC programs in real OO ways, but the syntax has been designed only procedural (an structural) programming in mind.
Recently they (CoDeSys et al) have added syntax for OO too (eg. Methods and Properties), and they think they have just invented the OO in PLC, which is not true (although it requires now less imagination to do OO in PLC). The funny thing on PLC programming is that Objects in PLC tend to have quite literal counterparts in the real world. For example a DieselEngine object ("functionblock instance") corresponds to the real world object "diesel engine".
-Risto
I can't see a way to express restricted OO using BNF. Nor can I see formal constraint expressions that distinguishes between inner and environment objects.
When POJO code is executed, it gives rise to a certain behavior. That's its semantics, AFAIU.
Restricted OO is a restriction on this behavior. Sounds like semantics to me.
so I do agree that it helps grasp the semantics but not that it is the semantics