From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,7f8fc37d854731d6 X-Google-Attributes: gid103376,public X-Google-Thread: 109fba,7f8fc37d854731d6 X-Google-Attributes: gid109fba,public X-Google-Thread: 10461e,7f8fc37d854731d6 X-Google-Attributes: gid10461e,public X-Google-Thread: 114809,7f8fc37d854731d6 X-Google-Attributes: gid114809,public X-Google-Thread: 1108a1,7f8fc37d854731d6 X-Google-Attributes: gid1108a1,public From: vlad@world2u.com (Vlastimil Adamovsky) Subject: Re: Interesting but sensitive topic to discuss (HELP: - OOP and CASE tools) Date: 1996/11/10 Message-ID: #1/1 X-Deja-AN: 195666226 x-nntp-posting-host: i123.165.world2u.com references: <32813322.41C6@kyebek3.kjist.ac.kr> <55pqr5$136a@grimsel.zurich.ibm.com> <328109CD.6685@concentric.net> x-nntp-posting-user: (Unauthenticated) x-trace: 847641961/20152 newsgroups: comp.object,comp.lang.c++,comp.lang.ada,comp.lang.smalltalk,comp.ai Date: 1996-11-10T00:00:00+00:00 List-Id: pcg@aber.ac.uk (Piercarlo Grandi) wrote: >>>> "alovejoy" == Alan Lovejoy writes: >alovejoy> Objects are objects, not classes. >Ok, even if there are some famous authors that don't seem to agree. >alovejoy> OO programs are systems of interacting **objects**, not >alovejoy> systems of interacting **classes**. >Consider: > class complex > { > private: float rho,theta; > public: float proj_real(); float proj_imag(); > complex operator +(complex); > .... > > }; > class rational > { > private: float above,below; > public: float num(); float den(); > rational operator +(rational); > .... > } > .... >So far this is not an OO program, according to your definition, for >there are no objects whatsoever in it, only classes, and there are no >``interactions'' among classes in it either. It is correct, your above definitions of whatever is not Object oriented programming. You are actually defining algorithm. This issue has been succesfully addressed by STL. >alovejoy> The architecture and design of a program is a function of what >alovejoy> **objects** it contains and how they interact. >Now let's try to add some more detail: > // the above plus ... > main() > { > complex c1, c2; > operator >>(cin,c1); operator >>(cin,c2); > operator <<(cout,operator +(c1,c2)); > // or more briefly: cin >> c1; cin >> c2; cout << (c1+c2); > exit(0); > } >Is this an OO program? No. >To my naked eye the above is an (outline of an) OO program, but it >contains only classes ('complex' and 'rational', variables ('c1', 'c2', >'cin', 'cout') and procedures ('main', 'operator <<', 'operator >>' >'operator +', and 'exit'). It contains only one class 'complex', which is in this context a mere type. >Objects do come into existence (thanks to the execution of constructors) >only during the _execution_ of the program, and they are passed as >arguments to various procedures at execution time too; they don't seem >to be contained in the *program*, and even when they are contained in a >computation created by executing the program they don't seem to >interact, any more than the arguments to a procedure may be said to >``interact''. The OO design describes objects and their behaivor at the run-time. Behavior and classes, types and delegees and delegators can change on demand during running the program. So classes are usefull to describe behavior of a object at given time but but not at another time. I Vlastimil Adamovsky ** C++ and Smalltalk consultant ** * http://www.stepweb.com *