home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!pipex!bnr.co.uk!uknet!gdt!aber!fronta.aber.ac.uk!pcg
- From: pcg@aber.ac.uk (Piercarlo Grandi)
- Newsgroups: comp.object
- Subject: Re: A Pre-Release FAQ
- Message-ID: <PCG.92Dec29203617@decb.aber.ac.uk>
- Date: 29 Dec 92 20:36:17 GMT
- References: <1992Dec29.042355.10967@netcom.com>
- Sender: news@aber.ac.uk (USENET news service)
- Reply-To: pcg@aber.ac.uk (Piercarlo Grandi)
- Organization: Prifysgol Cymru, Aberystwyth
- Lines: 99
- In-Reply-To: objsys@netcom.com's message of 29 Dec 92 04: 23:55 GMT
- Nntp-Posting-Host: decb.aber.ac.uk
-
- On 29 Dec 92 04:23:55 GMT, objsys@netcom.com (Bob Hathaway) said:
-
- objsys> BASICS ======
- objsys> What Is an Object?
-
- objsys> Simply put, an object is a variable. In classical
- objsys> object-oriented programming, this variable has a type (called a
- objsys> class) defining its structure and operations (called methods)
- objsys> which may be performed on the object. Classes also define
- objsys> inheritance for objects.
-
- This is among the definitions of object/type/class the most stupid (I
- can count several fairly major and catastrophic mistakes[*]; probably
- *no* part of your definition makes sense, starting with the 'simply
- put') you could come up with. Have your seriously reread your article
- before posting it?
-
- A point of order too: a FAQ should not be about the FAQ author's
- opinions; the FAQ should only be a list of facts: for example in an OO
- FAQ at the 'what is an object' entry I would say something like: 'There
- is a lot of controversy as to the proper definition of object; the
- Simula 67 common base language says "A"; Hoare and Nyygard in Structured
- Programming say "B"; the Smalltalk manual says "C"; the C++ ARM says
- "D"; Cardelli and Wegner in their poorly edited article say "E" on page
- P and then "F" on page Q;' and so on.
-
- Just avoid making up things in your FAQ, it's beyond your chances.
-
- If you restrict yourself to lists of facts (A says B but C says D, you
- can get book/source/document X from Y, ...) then you do a service to
- this newsgroup, if not you just provide laughing stock for the
-
- * Just a small list of the absurdities:
-
- objsys> Simply put,
-
- What is the correct definition of 'object' is highly controversial;
- you cannot simply put yours out as the simply put one, and without
- even justifying it, merely stating it as a fact. Especially if it
- makes no sense. What amazing presumption to sneak your own totally
- bogus definition of a crucial term in a FAQ as if there were an
- established consensus about it!
-
- objsys> an object is a variable.
-
- Ah, for sure. So while we see the object i being defined and used in
- these two lines
-
- complex i(0.0,1.0);
- printf("i.im = %f\n",i.im);
-
- in neither of the following C++ lines
-
- const complex i(0.0,1.0);
- printf("i.im = %f\n",complex(0.0,1.0).im);
-
- we see any object, in the first because we only see constants (and a
- keyword and a struct name) in the second because there is no variable
- name at all (printf is the name of a user function, complex is that of
- a struct, and im is that of a field accessor function).
-
- objsys> In classical object-oriented programming, this variable has a
- objsys> type
-
- Ah really? In Smalltalk 'variables' are not typed at all. Same in many
- other mainstream OO languages. Or am I dreaming that it is 'values' that
- are 'typed' in those languages?
-
- objsys> a type (called a class)
-
- Are you so incredibly sure that the type of an object and its class
- are the one and same concept, such that 'type' and 'class' are just
- synonyms? This would be amazing news to most of the people who have
- been working on formal methods and OO systems.
-
- objsys> defining its structure and operations (called methods) which
- objsys> may be performed on the object.
-
- Why ever should they be performed on the object? That is a common
- case, but not necessairly true. A method is commonly closed with
- respect to the environ of the object, but it need not access it at
- all.
-
- objsys> Classes also define inheritance for objects.
-
- Ah certainly! Classes don't define an inheritance lattice between
- themselves, no, they define inheritance between objects! So I can say
- that, simply put, object A inherits from object B thanks to class C?
- As far as I know inheritance does not apply to objects except in
- delegation type systems, which are not (yet) the mainstream of OO
- programming; indeed the word 'inheritance' is usually meant to apply
- only to classes, the similar relationship between objects is
- distinctly called 'delegation'.
-
-
- --
- Piercarlo Grandi, Dept of CS, PC/UW@Aberystwyth <pcg@aber.ac.uk>
- E l'italiano cantava, cantava. E le sue disperate invocazioni giunsero
- alle orecchie del suo divino protettore, il dio della barzelletta
-