Object-Orientation FAQ

COMP.OBJECT FAQ
Version: 1.0.9
Date:    4/2/96
Author:
  Bob Hathaway
  Geodesic Systems, Inc.
  Cyberdyne Systems Corporation
  rjh@geodesic.com
  http://www.geodesic.com/people/Bob
  75027.1663@compuserve.com
Copyright 1992-1995  Bob Hathaway
All rights reserved.
Permission is granted to freely copy and distribute this document but only
with this full header attached and at no cost to others with the exception
of a nominal distribution fee, if any.  No sale, resale or reprinting is
granted without the explicit written permission of the author.
Anonymous FTP Sites and Hypertext Server:
  anonymous@zaphod.uchicago.edu:/pub/CompObj9.faq(.Z)     (128.135.72.61)
  anonymous@rtfm.mit.edu:/pub/usenet/comp.object/*_Part_* (18.181.0.24 Tmp)
  http://iamwww.unibe.ch/~scg/OOinfo/FAQ/index.html       (new IAM location)
Mail Server:  (See also section 1.24)
  mail mail-server@rtfm.mit.edu
  Subject:
  send usenet/comp.object/*
Zaphod is preferred over rtfm for anonymous ftp retrieval, as it provides a
single file.  Rtfm contains the FAQ as posted.
To use the hypertext system, see APPENDIX E, entries 27.
Comp.Object Archive:
  A new and workable comp.object archive is now available on the www, with
  much thanks to Markus A. Beckmann, beckmann@informatik.mathematik.uni-mainz.de.
http://aaimzb.mathematik.uni-mainz.de/Personal/Mitarbeiter/comp.object.idx.html
Object Currents:
  A related and free new on-line Object resource edited by yours truly:
http://www.sigs.com/objectcurrents - Please take a look!
Contributors:  Per Abrahamsen, Margaret Burnett, Edwardo Casais, Stewart
  Clamen, Dennis De Champeaux, Mike DeVaney, Eric Dujardin, Piercarlo Grandi,
  Tim Harvey, Brian Henderson-Sellers, Urs Hoelzle, Paul Johnson, Bill
  Kinnersley, Oscar Nierstrasz, James Odell, David Wheeler, Eoin Woods, and
  many others whose contributions have helped this document to fulfull its
  objective of bringing object-oriented concepts and systems to everyone.
  Special thanks to Object Systems, Geodesic Systems and Cyberdyne Systems for
  providing the support and resources needed to make this effort possible.
  Object Systems was primarily a "think tank" and producer of object-oriented
  technologies, Geodesic Systems brings the latest in object-oriented theory
  and technique to practical and widespread use, as does Cyberdyne.
  And to kick off the new Appendix G, Commercial OO Libraries and Systems, I'm
  introducing our own new product (partly developed by me:-), the Great Circle
  (TM) automatic memory management system for C and C++.  I've used it on
  several of my own projects where it automatically fixed all memory leaks
  instantly.
  New formatted and submitted entries for Appendix G are most welcome.
Objective:
  In the spirit of other FAQs, to provide a simple document to answer the most
  frequently asked and recurring questions and to allow new users to understand
  frequently discussed topics and terms used in comp.object.   This should
  bring new comp.object readers and/or writers to at least an introductory
  level of comprehension as soon as possible.  Other goals (hopes) are to
  provide a quick and current reference on available systems such as object-
  oriented languages, CASE, OODB and etc. and to provide good references to
  current and relevant OO systems, groups, texts and literature.
Disclaimer:
  This document does not necessarily reflect the opinions of the author's or
  any contributor's companies.  There are no explicit or implicit guarantees
  implied by this document.
While object systems are a constantly changing and moving target with a broad
diversity of often conflicting methodologies, constructs, terminologies,
approaches, languages, implementations and etc. and comp.object has a wide
diversity of readers and writers ranging from students, professors and
researchers in academia to beginners, professionals, top-notch experts and
leaders in industry with a broad range of experience and backgrounds ranging
across many paradigms, this FAQ can certainly not aspire to satisfy all of them
completely but instead attempts to provide the most well-rounded treatment of
object-oriented concepts and realizations primarily from the mainstream and
popular authors and systems and further to provide a collection of available
systems and tools in the appendices.
Several improvements are planned for future FAQs, including a glossary.
SECTION 1:  BASICS
  1.1)  What Is An Object?
  1.2)  What Is Object Encapsulation (Or Protection)?
  1.3)  What Is A Class?
  1.4)  What Is A Meta-Class?
  1.5)  What Is The Infinite Regress Of Objects And Classes?
  1.6)  What are MOPs and Reflection?
  1.7)  What Is Inheritance?
  1.8)  What Is Multiple Inheritance?
  1.9)  Does Multiple Inheritance Pose Any Additional Difficulties?
  1.10) What Is Dynamic Inheritance?
  1.11) What Is Shared (Repeated) Inheritance?
  1.12) Why Use Inheritance?
  1.13) Why Don't Some People Like Inheritance?
  1.14) What Is Specialization/Generalization/Overriding?
  1.15) What Is The Difference Between Object-Based And Object-Oriented?
  1.16) Is A Class An Object?
  1.17) Is An Object A Class?
  1.18) What Is A Method? (And Receiver And Message)
  1.19) What Are Multi-Methods And Multiple-Polymorphism?
  1.20) What Is OOP?
  1.21) What Is OOA/OOD (And Where Can I Get What I Need On It)?
  1.22) Where Did Object-Orientation Come From?
  1.23) What Are The Benefits Of Object-Orientation?
  1.24) What Other FAQs Are available?
SECTION 2:  TYPING
  2.1)  What Is Polymorphism?
  2.2)  What Does Polymorphism Boil Down To In OO Programming Languages?
  2.3)  What Is Dynamic Binding?
  2.4)  Is There A Difference Between Being A Member Or Instance Of A Class?
  2.5)  What Is This I Read About ML And Functional Programming Languages?
  2.6)  What Is the Difference Between Static And Dynamic Typing?
  2.7)  What Is A Separation Between Type And Class (Representation)?
  2.8)  What Are Generics And Templates?
SECTION 3:  GENERAL
  3.1)  What Is The "Classical" Object-Oriented Paradigm?
  3.2)  What Is The "Delegation/Prototyping" Object-Oriented Paradigm?
  3.3)  Are There Any Other Object-Oriented Paradigms?
  3.4)  What Are The Major Object-Oriented Programming Languages Today?
  3.5)  What Are Object-Oriented Databases And Persistence?
  3.6)  What Are Object-Oriented Operating Systems?
  3.7)  What Are The Current Object-Oriented Methodologies?
  3.8)  What Is The OMG/OMA/ORB/CORBA?
  3.9)  Why Is Garbage Collection A Good Thing?
  3.9b) Why is Garbage Collection Necessary For Object-Oriented Programming?
  3.10) What Can I Do To Teach OO To The Kids?
  3.11) What Is Available On Object-Oriented Testing?
  3.12) What Distributed Systems Are Available?
  3.13) What Is The MVC Framework?
  3.14) What Is Real-Time?
  3.15) What Is Available on OO Metrics?
  3.16) What Are Visual Object-Oriented Programming Systems?
  3.17) What Tutorials Are Available On Object-Oriented Concepts and Languages?
SECTION 4:  COMMONLY ASKED LANGUAGE SPECIFIC QUESTIONS
  4.1)  What Is Downcasting?
  4.2)  What Are Virtual Functions?
  4.3)  Can I Use Multiple-Polymorphism Or Multi-Methods In C++?
  4.4)  Can I Use Dynamic Inheritance In C++?
ANNOTATED BIBLIOGRAPHY
APPENDIXES
  APPENDIX A  VIPS
  APPENDIX B  OBJECT-ORIENTED DATABASES AND VENDORS
  APPENDIX C  OBJECT-ORIENTED LANGUAGES AND VENDORS
  APPENDIX D  OBJECT-ORIENTED CASE (OOA/D/P TOOLS) AND VENDORS
  APPENDIX E  ANONYMOUS FTP SITES
  APPENDIX F  MAGAZINES, JOURNALS AND NEWSLETTERS
  APPENDIX G  COMMERCIAL OBJECT-ORIENTED LIBRARIES AND SYSTEMS
[Another appendix on commercial object-oriented class libraries should be
 added soon]

Table of Contents

This document was translated by ms2html v1.8 on 04.06.96.