Example g2

Prof. Dr. Theo D'Hondt
Last revision: August 7th, 1996

Example g2


[ Pi µvar: 3.14159265358979;
  Self makeEllipse
   µmethod:
    [ x µvar: 0;
      y µvar: 0;
      r µvar: 0;
      rr µvar: 0;
      self setX: newX
       µmethod: [ x µ<- newX; self ];
      self setY: newY
       µmethod: [ y µ<- newY; self ];
      self setR: newR   
       µmethod: [ r µ<- newR; self ];
      self setRR: newRR   
       µmethod: [ rr µ<- newRR; self ];
      self area
       µmethod: [ Pi * r * rr ];
      Self makeCircle
       µmethod:
        [ self setRR: newRR   
           µmethod:
            [ "illegal change" error ];
          self area
           µmethod:
            [ Pi * r sqr ];
          Self makePoint
           µmethod:
            [ self setR: newR  
               µmethod:
                [ "illegal change" error ];
              self area
               µmethod:
                [ 0 ];
              µself ];
          µself ];
     µself ];
          
  Ellipse   µvar: Object  makeEllipse;
  Circle    µvar: Ellipse makeCircle;
  Point     µvar: Circle  makePoint;

  P µvar: ((Point µclone) setX: 1) setY: 2;
  C µvar: (((Circle µclone) setX: 1) setY: 2) setR: 1;
  E µvar: ((((Ellipse µclone) setX: 1) setY: 2) setR: 1) setRR: 2;
  "  area of point = " display; P area display; Eoln display;
  " area of circle = " display; C area display; Eoln display;
  "area of ellipse = " display; E area display; Eoln display] µvalue