Re: Clean Object Class Design -- What is it?
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:
- A collection of data object types, which form the basic building blocks for any database that conforms to the model.
- A collection of general integrity rules, which constrain the set of occurrences of those object types that can legally appear in any such database.
- 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.