[dba-Tech] OOP is upside-down

Peter Brawley peter.brawley at earthlink.net
Sun Jul 12 11:14:42 CDT 2020

On 7/12/2020 7:50, Arthur Fuller wrote:
> OOP pretends to model itself  on the real world, but in fact does the
> opposite -- it encourages you to be God-like. Start with a class called
> Mammal, define some basic properties and methods, then inherit some
> species (dog, cat, whale).  Biology doesn't work like that. It begins with
> the individual species and then discovers a common parent species, and then
> another parent.

Unlike OOP classes, species have fuzzy, fungible boundaries.

Inheritance, encapsulation, polymorphism ... they all fail. 


> What OOP needs is a way to model ancestry bottom-up. I imagine a tree-like
> UI akin to the Windows Explorer, but with a new capability. Imagine that
> you define classes called Giraffe, Chimp and Whale. Then it dawns upon you
> that all of them share several characteristics; so then you create a new
> class called Mammal, collect the Giraffe, Chimp and Whale, and drag them
> into the Inheritance tree. All characteristics shared by all of them
> migrate to the ancestor class. The class itself contains a method called
> Speak (for the Whale, it's Click, Click, for the Chimp it's "Ehhhh", and so
> on). collect those common characteristics, then drag and drop them (in this
> case, the Speak method) into the ancestor class.
> That's how biology, chemistry and physics work: bottom-up, not top-down.
> Admittedly, prepared to what I'm suggesting might run into conflicts such
> as naming. You might have named the Whale method Click rather than Speak,
> and the dog method Bark rather than Speak. Certainly that is a problem that
> my proposed Drag and Drop method cannot resolve easily. But nevertheless, I
> am no prepared to abandon this notion. instead, I shall give it more
> thought, and imagine a tree-lik UI that gathers the obvious commonalities
> and moves the data and methods up to the ancestor, leaving only the
> differences (both data and methods) in the descendants. This allows you to
> realize that there is a common method called Speak, but you named it
> differently in the previous classes: in the Whale you named it ClickClick,
> in the Cat you named it Meow, in the dog you named it Bark. You're a
> mortal; we all make mistakes, and fail to recognize common characteristics
> until way after the fact of creation.
> What OOP needs is a way to address, and maybe even solve, this problem.

More information about the dba-Tech mailing list