home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / modula3 / 840 next >
Encoding:
Internet Message Format  |  1992-07-20  |  3.2 KB

  1. Xref: sparky comp.lang.modula3:840 comp.lang.misc:2679 comp.lang.c++:11203
  2. Newsgroups: comp.lang.modula3,comp.lang.misc,comp.lang.c++
  3. Path: sparky!uunet!mcsun!fuug!funic!news.cs.hut.fi!news!Ari.Huttunen
  4. From: Ari.Huttunen@hut.fi (Ari Juhani Huttunen)
  5. Subject: Re: Sather's Multiple Inheritance
  6. In-Reply-To: mbk@lyapunov.ucsd.edu's message of 19 Jul 1992 19:20:59 GMT
  7. Message-ID: <ARI.HUTTUNEN.92Jul20110402@wonderwoman.hut.fi>
  8. Sender: usenet@cs.hut.fi (Uutis Ankka)
  9. Organization: Helsinki University of Technology, Finland
  10. References: <ROCKWELL.92Jul18202725@socrates.umd.edu> <14cfarINNir8@network.ucsd.edu>
  11. Date: Mon, 20 Jul 1992 09:04:02 GMT
  12. Lines: 74
  13.  
  14. >Eliot Moss:
  15. >   Sounds to me as if
  16. >   Sather flattens the types out completely, which will interfere with
  17. >   building large system, by undermining encapsulation.
  18.  
  19. Well said. That is my understanding also. But the front page of Sather
  20. manual says that large systems are not intended to be built with Sather.
  21. (No, I don't think it is a good policy either.)
  22.  
  23. "Abstract. This report describes the object-oriented programming lan-
  24. guage Sather. Sather is a simplified, optimized variant of Eiffel (Sather 
  25. tower is a landmark in Berkeley). It is meant to be a working language, 
  26. focussed on the practical needs of writing efficient, reusable code. It is 
  27. designed for individual researchers or small groups and eliminates fea-
  28. tures which are pedantic, of purely theoretical interest, or necessary 
  29. only for large or naive programming teams. Sather has clean and sim-
  30. ple syntax, parameterized classes, object-oriented dispatch, multiple in-
  31. heritance, strong typing, and garbage collection. It generates efficient C 
  32. code which is easily integrated with existing code. "
  33.  
  34. Rockwell:
  35. >From what I read, you can get opacity by the simple expedient of
  36. >masking the detail you want hidden with a later namespace conflict.
  37. >You can see the names, but the original definitions are shadowed from
  38. >the point where you see those names.
  39.  
  40. Kennel:
  41. >I don't know what quite you mean, but there's the "private" attribute:
  42.  
  43. Let's consider a simple example:
  44.  
  45. class FATHER is
  46.  
  47.     private xyz:INT;
  48.  
  49.     foobar is
  50.         xyz := 123;
  51.     end; -- foobar
  52.  
  53. end; -- FATHER
  54.  
  55. class CHILD is
  56.  
  57.     FATHER;
  58.     alias father_xyz xyz; 
  59.  
  60.     xyz:DOUBLE is 
  61.         res := 1.0;
  62.     end; -- xyz
  63.  
  64. end; -- CHILD
  65.  
  66. When the 'foobar'-procedure is used on an object of type FATHER, it works
  67. correctly and assigns 123 to an integer 'xyz'. But when the foobar is
  68. used on an object of type CHILD, well, the compiler catches the error...
  69. (You cannot assign to a procedure.)
  70.  
  71. The 'private' does not prevent redefinition of 'xyz' in CHILD. Also, the
  72. 'foobar' still uses the old name 'xyz' in CHILD, because the 'alias' 
  73. does not change it. (But you can refer to the integer in CHILD by calling
  74. it 'father_xyz'.)
  75.  
  76. (I ran the code through a Sather compiler.)
  77.  
  78. >Though actually
  79. >in Sather you can manually find out the "type" of any random object:
  80. >( I guess the only allowed operations are equality and inequality on this. )
  81.  
  82. With the help of library classes you can test if one type is a subtype
  83. of another.
  84. --
  85. ...............................................................................
  86. Ari Huttunen                               They say the sky high above
  87. 90-7285944                                   is Caribbean blue...  (Enya)
  88.