On 12/01/2024 01:07 PM, Lynn McGuire wrote:
On 12/1/2024 11:17 AM, wij wrote:
There are several understandings:
https://www.quora.com/As-an-experienced-OOP-programmer-in-your-opinion-whats-the-biggest-problem-of-OOP-object-oriented-programming
>
>
...
OO can have many meaning. I took OO to mean object, the basic entity
of the
programming model and the operation of the object. The concept, as
foundmental,
has to be solid, practical and easily usable. Otherwise, more codes
and efforts
will be needed latter to fix it, making the original goal
,practically, a lie.
IOW, (nearly) a flawless model is all the basics. ...
https://sourceforge.net/projects/cscall/files/MisFiles/ClassGuidelines.txt/download
>
>
From my view, programming language has to provide a model, so that
programmers
know what they are dealing with, to solve the problem (recent C++
seems solving
just syntax problems).
In (my) OOP, 'portability' (or reusable) is first achieved by making the
probramming object compatible (form platform to platfrom or from time
to time
in the same platform, but libwy only considers linux, but the idea
should be
generally applicable), i.e. like pod types, structures, union may not
be portable.
>
Programming object or 'concept' are 'better' represented/wrapped by
class (keyword)
All should be simple, I don't know how to make the idea of 'object'
more simpler.
See the guidelines.
>
OTOH, in C/C++, every memory objects/function has address, the
language cannot
pretend it is not actually dealing with a large array of raw 'bytes'
and its
restrictions (and restrict by Turing Machine). I think that is
generally where
many programming problems from. And, understanding C or assembly is
nearly a must
before understanding C++, otherwise, no real meaning, simply put.
>
"Object-Oriented Analysis and Design with Applications 3rd Edition" by
Grady Booch, etc
>
https://www.amazon.com/Object-Oriented-Analysis-Design-Applications-3rd/dp/020189551X/
>
>
Lynn
>
That nicely helps reflect on Booch-Rumbaugh, "Gang of Four",
after initiatives like CASE Computer Aided Software Engineering,
what was RAD Rapid Application Development, matters like
UML Unified Modeling Language and SysML a variety,
with regards to things like "Pattern Languages of
Program Design", PLoP as it were, of the divers kinds
of well-known "patterns", in OOA/OOD Object-Oriented Analysis
and Object Oriented Design, various patterns of integration
and abstraction, as with regards to type and category
and monadic programming and structured programming,
procedular and functional, these days for example
MBSE Model Based Software Engineering, which largely
intends to _derive_ software from schema, with regards
to exemplars in language like SmallTalk and Eiffel,
"object-oriented" and into "constraint-based programming",
after initiatives like BCPL and Algol, earlier initiatives
in structured programming, with regards to the great success
or ubiquity it may rather be like Java or C#/.Net/Mono after
the CLR and IL ASM layers, JavaScript and its ways that
implement classes after slots, for that something like
C++ has always been a rather premier object-oriented
target with regards to classes.
"Boxes and arrows", say.
The, "double diamond" or "dreaded diamond" of C++ with
regards to virtual and pure virtual functions, and then,
"inverting the tree" or "inverting the diamond", result
usually formalisms in type theory while as well category
theory has much to say, as with regards to the usual
expansion versus constriction, of subclasses, then as
with regards to usual mature schemas like XSD about
documents, having both expansion and constriction,
making for a usual idea that directed-acyclic-graphs
are much easier to reason than reference-resolution.
All usually "underneath the hood", in the metaphor
of the automobile, as with regards to "library designers"
and "library users", users.
The, "double diamond" is a usual marker on ski courses
as "un-ski-able". Yet, languages like C++ have carefully
proscribed the defined behavior of multiple concrete inheritance,
while other languages for example Java have "merely" signatures,
about duck-typing.
Here the GoF patterns mostly end at "singleton" and "factory",
pretty much with regards to scope, and "impl and pointer to impl",
while then much otherwise is "document schema".
https://en.wikipedia.org/wiki/Metadata_modelingIn the old days the CAD/CAM was a vector-screen
workstation with a keyboard and digitizer and
plotter, after learning how to draw in perspective,
back when #1 pencils were hard, these days there's
quite a bit involved in parts and assemblies.
Where everything is a flange or a jig, ....
If you like "object-oriented", maybe you'll like
"object-relational": it's totally ubiquitous.
So is pretty much "object-everything".