Object-Orientation FAQ Version: 1.0.9 Date: 4/2/1996 Author : Bob Hathaway Geodesic Systems, Inc. Cyberdyne Systems Corporation rjh@xxxxxxxxxxxx http://www.geodesic.com/people/Bob 75027.1663@xxxxxxxxxxxxxx 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. Get your own mirror of the oofaq See also The notes about this FAQ. _________________________________________________________________ Search Object Orientation FAQ ______ ____________________ _________________________________________________________________ Table of Contents * 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? # Webster's New World Dictionary: # Author's Definition: # Strachey's Original Definition [Strachey 67]: # Cardelli and Wegner's Definition [Cardelli 85]: # Booch's Definition [Booch 91, p. 517]: # Meyer's Definition [Meyer 88, sect. 10.1.5 Polymorphism]: # Stroustrup's Definition [Stroustrup 90, p. + 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 The Difference Between Static And Dynamic Typing? + 2.6) What Is This I Hear About ML And Functional Programming Languages? + 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? o 3.8.1 Contact Information o 3.8.2 OMG Summary o 3.8.3 Mail Server Access o 3.8.4 OMG Publications # First Class (Bi-Monthly Newsletter) # Object Management Architecture Guide (OMA) # The Common Object Request Broker: Arch. and Spec. (Corba) # Pricing o 3.8.5 Implementations (Brief) # Sun DOE # Tivoli o 3.8.6 Implementation Descriptions # The ELECTRA Toolkit # HD_DOMS # HP ORB Plus and HP Distributed Smalltalk # Iris RDOM # Object-Oriented Technologies DOME # ORBELINE - The SMART Object Request Broker # Orbix + Availability + Documents Available from IONA # NCR 'Cooperative Frameworks' -- a Distributed Object Foundation + 3.8.7 Books, Articles, And Literature + 3.9) Why is Garbage Collection A Good Thing? + 3.10) What Can I Do To Teach OO To The Kids? + 3.11) What Is Available On Object-Oriented Testing? # What? # Who? # Why? # Written Material # Software # ACKs + 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? * 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 * APPENDICES * APPENDIX A VIPS + Booch, Grady <egb@xxxxxxxxxxxx> + Cox, Brad + Goldberg, Adele (Alan Kay, Dan Ingalls) + Meyer, Bertrand <bertrand@xxxxxxxxxx> + Nygaard, Kristen (and Dahl, Ole-Johan) + Rumbaugh, Dr. James + Shlaer, Sally (and Mellor, Stephen J.) + Stroustrup, Bjarne (bs@xxxxxxxxxxxxx) * APPENDIX B OBJECT-ORIENTED DATABASES AND VENDORS + EXTENDED RELATIONAL DB MODEL o Research Systems # POSTGRES (Berkeley) + Commercial Systems # Illustra # Montage (ORDBMS) [Research System POSTGRES] # Omniscience ORDBMS # Raima Database Manager/Velocis/Raima Object Manager # Total ORDB + OO DATA MODEL o Research Systems # AVANCE (SYSLAB) # CLOSQL (University of Lancaster) # ConceptBase - A Deductive Object Manager for Meta Data Bases # COOL/COCOON (Ulm Universitaet) # Exodus (University of Wisconsin) # Machiavelli (University of Pennsylvania) # OBST/STONE (Forschungszentrum Informatik [FZI], Karlsruhe, Germany) + The OBject system of STONE --- OBST + Data Model + Schemas and Containers + Incremental Loading + Prototype + Schema Evolution Support Environment (USE) + Structurer and Flattener (STF) + tclOBST + System Requirements # Ode # Oggetto, University of Lancaster, UK. # IDB Object Database # ORION (Now marketed as ITASCA) # OTGen (Carnegie Mellon University/UMass Amherst) # PLOB! (Hamburg University) # VODAK o Commercial Systems # ArtBASE (Object-Oriented Data Model) # EasyDB (Basesoft Open Systems, Sweden) # GemStone (Formerly Servio Corporation) # ITASCA # MATISSE + For additional information on MATISSE, contact # NeoAccess # OBST+ # O2 (O2 Technology) # Objectivity/DB (Objectivity) # ObjectStore # ONTOS [formerly VBase] (Now ONTOS, Inc. formerly Ontologic) # Odapter/OpenODB (Hewlett-Packard) # OOFILE (A.D. Software) # Phyla # POET <Persistent Objects and Extended Database Technology> (Poet Software) # Statice (Symbolics) # UniSQL # Unisys Universal Repository # Versant (Versant Object Technology) # VisualWorks + Other Models o Research Systems # GRAS # IRIS (HP Labs) o Commercial Systems # IDL (Persistent Data Systems) # Pick + Interfaces o Research Systems # Penguin (Stanford) # DBTools.h++ # OBJECT GATEWAY # Persistence # Subtleware # Synchronicity * APPENDIX C OBJECT-ORIENTED LANGUAGES AND VENDORS * APPENDIX D OBJECT-ORIENTED CASE (OOA/D/P TOOLS) AND VENDORS + ARTICLES, PRODUCTS, AND PAPERS ON CASE SYSTEMS # Proceedings of the Workshop on the Next Generation of CASE Tools (NGCT) * APPENDIX E ANONYMOUS FTP SITES + PROGRAMMING LANGUAGES + COMPILER TOOLS + DATABASES (See also APPENDIX B) + TOOLS AND CASE + LIBRARIES AND INTERFACES + DOCUMENTATION AND INFO SERVERS + PAPERS + GENERAL + OTHER + DESCRIPTIONS # 1 Alcool-90 (dyn ML) # 2 Arjuna (Distr Prog System) # 3 BOS (prototyping) # 4 G++ for DOS (Many sites) # 5 cooC (Concurrent, OO C ext.) # 6 FMPL (prototyping) # 7 MAX (visual OO) # 8 O'small (OO lang for teaching) # 9 OBJ3 (OO lang) # 10 OBST (lang, perst, OODB) # 11 OOT (OO Turing demo) # 12 Sather (simple Eiffel) # 13 Self # 14 C++ gram, etc. # 15 ConceptBase (OODB, reqkey) # 16 C++ OODB # 17 Exodus (Storage Man, perst) # 18 GRAS # 19 MOOD (OODB, lim arch) # 20 Ode (C++ OODB) # 21 POSTGRES (Ext. Rel. DBMS) # 22 Sniff (C++ devel environ) # 23 C++ tags # 24 short tool # 25 COOL(C++, Cfront 2.1, from GE) # 26 idl.SunOS4.x, idl.Solaris2.x # 27 Browser for OO info # 28 Apertos(Meta-Obj Distr OS, research) # 29 Actors Paper (UIUC) # 30 Chambers' Thesis # 31 graph drawing # 32 Law of Demeter # 33 OO Dyn Grping, memory # 34 Pred Classes (Cecil) # 35 Manchester Archive and some # 36 Object Design's OO7 Results # 37 Graph service # 38 C++SIM (Simula-like Sim Pkg) # 39 commercial on cd-rom # 40 C++ Signatures (subtyping) # 41 The Texas Persistent Store # 42 OSE C++lib # 43 Traces,kiczales,MOP,DI # 44 C++ coding standard # 45 Kala Archive # 46 BeBOP(seq,par,LP,OO,meta) # 47 Knowledge Media, Massive cd-rom, lots of freeware # 48 u++, C++ Trans. and Concry RTS # 49 Real Time # 50 Ada95 (compiler, GNU) # 51 OO Course Slides # 52 GTE Distrib Reports # 53 KEOBJ, OO DSP micro-kernel + 1 DESCRIPTION + 2 WHERE TO FIND THE PACKAGE # 54 MindFrame for Windows # 55 ACE Lib, C++ Networking # 56 Teaching Intro to OO Slides, T. Budd # 57 Value Dependence Graphs # 58 Various on OO # 59 ILU OMG CORBA # 60 Internet Info CDROM, including FAQs # 61 Metrics # 62 Amadeus, persistence # 63 Chorus,Dist,RT,MicroK # 64 Self Opt. # 65 ORBELINE: CORBA + Highlights + Complete CORBA implementation + Features + Platforms + LICENSING + ACKNOWLEDGEMENTS # 66 OO Designer CASE Tool + 0. Summary # 67 OOTher OO CASE Tool # 68 OS Papers (OO?) # 69 Trellis # 70 CooL-SPE # 71 Contra-/Co- Variance + ADVERTISEMENT: This paper tries to explain # 72 Quality # 73 Quality # 74 TRILLIUM (CMM) # 75 Dylan # 76 Object Domain (Shareware Case Tool) # 77 Cecil # 78 Meta-Case Info # 79 C++ Std Temp. Lib # 80 Phantom (Distr Prog) # 81 Java (Distr Prog) # 82 Reflection Paper # 83 OZ++ (Distr Env) # 84 OOA/D Example, Java # 85 Envelope Engine OORAD # 86 OODB Driver # 87 C++ VFn Elim # 88 Use Cases * APPENDIX F MAGAZINES, JOURNALS AND NEWSLETTERS * APPENDIX G COMMERCIAL OBJECT-ORIENTED LIBRARIES AND SYSTEMS __________________________________________________________________________ About this FAQ Anonymous FTP Sites and Hypertext Server: anonymous@xxxxxxxxxxxxxxxxxxx:/pub/CompObj9.faq(.Z) (128.135.72 .61) anonymous@xxxxxxxxxxxx:/pub/usenet/comp.object/*_Part_* (18.181.0.2 4 Tmp) http://iamwww.unibe.ch/~scg/OOinfo/FAQ/index.html (new IAM locatio n) Mail Server: (See also section 1.24) mail mail-server@xxxxxxxxxxxx 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@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx e. 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. This document was translated by ms2html v1.8 on 10.04.96.