Re: Clean Object Class Design -- What is it?

From: Bob Badour <bbadour_at_golden.net>
Date: Sun, 8 Jul 2001 12:46:22 -0400
Message-ID: <Ye027.4207$Zl1.94508103_at_radon.golden.net>


>mischaracterizations of both the OO paradigm and the Relational paradigm  (if
>I can call it that).

Where and how has anyone mischaracterized anything OO?

As for relational, it is a logical data model and not a paradigm, and I wish you would not call it that.

A data model consists of:

  1. A collection of data object types, which form the basic building blocks for any database that conforms to the model.
  2. A collection of general integrity rules, which constrain the set of occurrences of those object types that can legally appear in any such database.
  3. A collection of operators, which can be applied to such object occurrences for retrieval and other purposes.

(Quoted from the bibliography of Chapter 4 of Date's _Introduction to Database Systems, Sixth Edition_, which paraphrases earlier work by E. F. Codd.)

A paradigm (in the sense I believe you use the word) is:

A set of assumptions, concepts, values, and practices that constitutes a way of viewing reality for the community that shares them, especially in an intellectual discipline.

(From _The American HeritageŽ Dictionary of the English Language, Fourth Edition_ found http://www.dictionary.com)

I previously asked some rhetorical questions based on the definition above. I will ask them again:

What if the community's assumptions are generally false?

  • Faulty assumption: Object databases outperform relational databases.
  • Faulty assumption: Relations or tuples resemble object classes.
  • Faulty assumption: Relational domains are not object classes.
  • Faulty assumption: Relational domains have no internal structure.
  • Faulty assumption: Object designs require fewer entities than relational designs.
  • Faulty assumption: Association by pointer has any advantage over association by value.
  • Faulty assumption: Object references are more "natural" than relations.
  • Faulty assumption: Object references simplify.
  • Faulty assumption: Additional data object types (in the sense from data model above) increase semantic expressibility.
  • Faulty assumption: Object designs capture greater semantics than relational designs.
  • Faulty assumption: Normalization is difficult.
  • Faulty assumption: Normalization is not necessary.
  • Faulty assumption: Normalization necessarily impacts performance.
  • Faulty assumption: Theory is impractical.

What if the community's concepts are vague and fuzzy?

  • Define "object" (How many OO folks ever distinguish among object classes, object instances, object values and object variables in their discussions?)
  • Define "inheritence" (How many OO folks use the same unqualified term to mean inheritence of interface, inheritence of implementation, inheritence of representation, the concepts of specialization/generalization, and polymorphism?)
  • What is the difference between the OO concept of identity and the simple addressability of variables?
  • How many OO proponents think that references and dynamic memory allocation are inherent in OO?

What if the community's values are often misguided?

  • How does any expert programmer justify marginally saving their own effort at the cost of greatly increasing the effort of their end-users?
  • How does any programmer whose work uses databases justify dismissing the science of databases?
  • How can any programmer justify dismissing theory as impractical?

What if the community's practices are generally ad hoc and arbitrary?

  • Just look at any religious war among different OO language fans.
  • Consider that there is no single accepted concept or definition of OO.
Received on Sun Jul 08 2001 - 18:46:22 CEST

Original text of this message