Example Geometry1

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

Example Geometry1


[ Pi µvar: 3.14159265358979;

  Self makeFigure
   µmethod:
    [ x µvar: 0;
      y µvar: 0;
      self setX: newX
       µmethod:
        [ x µ<- newX;
          Void ];
      self setY: newY
       µmethod:
        [ y µ<- newY;
          Void ];
      Self addRadius
       µmethod:
        [ r µvar: 0;
          self setR: newR   
           µmethod:
            [ r µ<- newR;
              Void ];
          Self addSecondRadius
           µmethod:
            [ rr µvar: 0;
              self setRR: newRR   
               µmethod:
                [ rr µ<- newRR;
                  Void ];
              self area
               µmethod:
                [ Pi * r * rr ];
              Self addSecondRadius
               µmethod:
                [ self setRR: newRR   
                   µmethod:
                    [ self error: "cannot set second radius" ];
                  self area
                   µmethod:
                    [ Pi * r sqr ]];
              µself ];
          Self addRadius
           µmethod:
            [ self setR: newR   
               µmethod:
                [ self error: "cannot set radius" ];
              self area
               µmethod:
                [ 0 ]];
          Self addSecondRadius ]];
                
  Figure  µvar: Object  makeFigure;
  Ellipse µvar: Figure  addRadius;
  Circle  µvar: Ellipse addSecondRadius;
  Point   µvar: Circle  addSecondRadius;

  P µvar: Point µclone;
  P setX: 0;
  P setY: 0;
  C µvar: Circle µclone;
  C setX: 0;
  C setY: 0;
  C setR: 1;
  E µvar: Ellipse µclone;
  E setX: 0;
  E setY: 0;
  E setR: 1;
  E setRR: 2;
  E µinspect;
  C µinspect;
  P µinspect;
  "        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 ]