NOTE: This document is superceded somewhat (see all objects),
but the essence remains: all objects should conform to a unified
architecture, much like Maxwell's equations dictate all the macro behavior of
your world.
OOP has gotten very confused. Besides reaching a plateau of "everything is an
object" and the false peak of templating systems to re-use code in different
type-contexts ("false peak" because most use of such different types is a
semantic difference, so it makes no sense to conform syntactically), it has
never reached even it`s noble goals of re-useable code. That had been one of
the goals of OOP, not theoretical purity or saving code, although that it can
achieve as well. This document creates a new level of understanding through
the application of philosophy , namely [epistemology] and [Metaphysics],
answering problems with ontology to make a loosely-
coupled , modular , uniform system of objects.
Most programmers never got past Design Patterns, but this is a low bar just to
ensure that your objects don't totally fail. We can do better than that. We
can focus on a computer's syntactic solutions to semantic problems. That is,
we only need a few different syntaxes, if selected properly, to solve many
different semantic problems through something like language analysis. Like
proper use of functions, indentation, inheritance, and message-passing. These
correspond to verbs, nouns (object/function definitions), adjectives (more
specific nouns/objects), and adverbs, respectively. One can say a lot of
useful, compact sentences with these alone.
This page is to help sort out the confusion that you undoubtedly have, because
the whole field is confused. Most programmers thought you should simulate
real-word objects (Square is-a Shape) and C++ originates with SIMULA, but most
programs are not simulations. Generally, objects do not simulate things in the
real world. A "Student" object is not simulating a student, it is a record of
who that student is and what that student is doing. There are at least two
dimensions of object dimensionality or order, such that two separate fields
of object hierarchies may exist, but should not cross (except through their
methods and attribute access?) So, data objects add increasing levels of
structure, sophistication, and constraints to data, while UI objects add
increaseing levels of order and prettiness. The real value of OOP in the age
of the internet is going to be massive amounts of data processing
(exabytes) into elegant ontologies of knowledge.
TL;DR or Zen version for those who don't want to read and cogitate, go
ontology.
Here begineth the lesson:
/* ABC methods mimic cell biology: getState (turns into a run method in more
complex objects), getID, clone (move these latter to data ecosystem higher-
level meta method). (look for 1:2:4 type order of methods for each level of
more concreteness.)
Wiki: Application Aesthetics
Wiki: DataEcosystem
Wiki: Gospel of Data Ecologies
Wiki: Metaphysics
Wiki: OOP
Wiki: Zen of Language Design
Wiki: all objects
Wiki: epistemology
Wiki: precision domain principle
Wiki: programming language theory