home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / object / 4564 < prev    next >
Encoding:
Text File  |  1992-12-16  |  3.3 KB  |  62 lines

  1. Newsgroups: comp.object
  2. Path: sparky!uunet!cs.utexas.edu!torn!nott!cunews!cunews!knight
  3. From: knight@mrco.carleton.ca (Alan Knight)
  4. Subject: Re: Object hidden state and side effects
  5. Message-ID: <knight.724557211@cunews>
  6. Sender: news@cunews.carleton.ca (News Administrator)
  7. Reply-To: knight@mrco.carleton.ca (Alan Knight)
  8. Organization: Carleton University
  9. References: <1992Dec14.112222.13987@kei.is.s.u-tokyo.ac.jp> <1992Dec15.014420.6604@midway.uchicago.edu> <1992Dec16.65250.10645@kei.is.s.u-tokyo.ac.jp> <1992Dec16.175126.14968@midway.uchicago.edu>
  10. Date: Thu, 17 Dec 1992 01:53:31 GMT
  11. Lines: 51
  12.  
  13. In <1992Dec16.175126.14968@midway.uchicago.edu> dave@alex.uchicago.edu (Dave Griffith) writes:
  14.  
  15. >In article <1992Dec16.65250.10645@kei.is.s.u-tokyo.ac.jp> jeff@is.s.u-tokyo.ac.jp writes:
  16. >>In article <1992Dec15.014420.6604@midway.uchicago.edu> dave@alex.uchicago.edu (Dave Griffith) writes:
  17.  
  18. > ... "Objects" as I have
  19. >been using the term use reference semantics.  Two objects are only equal if
  20. >they are identical.  "Values" use copy semantics for assignment. (What they
  21. >use for equality semantics is a deeper and IMHO more interesting question, but 
  22. >I digress.)  How these semantics are actually implemented is a implementation
  23. >decision and should not be considered here.  
  24.  
  25. This definitely seems to be the root of the confusion. You mean
  26. something different by "object" than I do, and I expect than Jeff
  27. McAffer or Jan Steinman do.  If you call something an object only if
  28. equality and identity are the same operation, then most OO langauges
  29. already support the distinction being called for, since the equality
  30. operation can be defined to be anything you like. This is certainly
  31. the case for "value objects" in Smalltalk, such as Booleans, Numbers,
  32. Symbols, etc. Somebody just posted that the same thing is true in
  33. Eiffel. Maybe you can't do it in C++, but that's a whole other debate.
  34.  
  35. >>about it.  They are just objects to which I can send messages, pass as
  36. >>parameters...  They have a protocol... and allow only those operations
  37. >>that are in line with their "essential sameness"
  38.  
  39. >But most languages have no way to _enforce_ the requirement that they "only
  40. >allow operations that are in line with their essential sameness".  They
  41. >treat their builtin classes as "special", and don't allow programmer defined
  42. >classes to be defined as special in the same way.  It would be useful in C++
  43. >for instance to define a Bignum class which didn't allow the programmer
  44. >to set 3 equal to 5, even if that Bignum class is eventually subclassed.  
  45. >Subclassing can blow away the original programmers intent of immutability, 
  46. >with possibly disastrous effects on program correctness.
  47.  
  48. The only "special" distinction in Smalltalk is between SmallIntegers
  49. and everything else.  The distinction is effectively invisible in
  50. normal use.  Also, what you are asking for is possible in C++ (but not
  51. in Smalltalk). In C++, private class members are not visible to
  52. subclasses. If you don't provide any destructive functions then they
  53. cannot be added when you subclass. I think you can circumvent this by
  54. writing "friend" functions, but that's an explicit mechanism provided
  55. to circumvent the language restrictions in the name of performance.
  56.  
  57. -- 
  58.  Alan Knight  knight@mrco.carleton.ca  +1 613 788 2600x1027 
  59.  Dept. of Mechanical and Aerospace Engineering              
  60.  Carleton University, Ottawa, Ontario, Canada, K1S 5B6      
  61.  
  62.