home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 10 / grdlagen / odemo.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1989-09-07  |  1.8 KB  |  97 lines

  1. PROGRAM OODemo;
  2.  
  3. TYPE
  4.   Counter = OBJECT
  5.               accum : REAL;
  6.               id    : STRING;
  7.               CONSTRUCTOR Init;
  8.               DESTRUCTOR  Done;  VIRTUAL;
  9.               PROCEDURE Count(v : REAL);
  10.               PROCEDURE RPrint;  VIRTUAL;
  11.               PROCEDURE Print;
  12.               FUNCTION  Sum : REAL;
  13.             END;
  14.  
  15.   CONSTRUCTOR Counter.Init;
  16.   BEGIN
  17.     accum := 0;
  18.     id    := 'COUNTER';
  19.   END;
  20.  
  21.   DESTRUCTOR Counter.Done;
  22.   BEGIN
  23.   END;
  24.  
  25.   PROCEDURE Counter.Count(v : REAL);
  26.   BEGIN
  27.     WriteLn(id, ' : Neuer Wert: ', v);
  28.     accum := accum + v;
  29.   END;
  30.  
  31.   PROCEDURE Counter.RPrint;
  32.   BEGIN
  33.     WriteLn('Summe = ', sum);
  34.   END;
  35.  
  36.   PROCEDURE Counter.Print;
  37.   BEGIN
  38.     WriteLn('Datenerfassung ', id, ' beendet. Ergebnis: ');
  39.     RPrint;
  40.   END;
  41.  
  42.   FUNCTION Counter.Sum;
  43.   BEGIN
  44.     Sum := accum;
  45.   END;
  46.  
  47. TYPE
  48.   Stat = OBJECT(Counter)
  49.            anzahl : INTEGER;
  50.            CONSTRUCTOR Init;
  51.            PROCEDURE Count(v : REAL);
  52.            FUNCTION Mean : REAL;
  53.            PROCEDURE RPrint;  VIRTUAL;
  54.          END;
  55.  
  56.   CONSTRUCTOR Stat.Init;
  57.   BEGIN
  58.     Counter.Init;
  59.     anzahl := 0;
  60.     id     := 'STAT';
  61.   END;
  62.  
  63.   PROCEDURE Stat.Count(v : REAL);
  64.   BEGIN
  65.     anzahl := succ(anzahl);
  66.     Counter.Count(v);
  67.   END;
  68.  
  69.   FUNCTION Stat.Mean : REAL;
  70.   BEGIN
  71.     Mean := sum / anzahl;
  72.   END;
  73.  
  74.   PROCEDURE Stat.RPrint;
  75.   BEGIN
  76.     WriteLn('Die Summe der gelesenen ', anzahl, ' Zahlen ist ', sum);
  77.     WriteLn('Der Mittelwert ist ', Mean);
  78.   END;
  79.  
  80. VAR
  81.   Zaehler   : ^Counter;
  82.   Statistik : ^Stat;
  83.   r         : REAL;
  84.  
  85. BEGIN
  86.   New(Zaehler, Init);
  87.   New(Statistik, Init);
  88.   WHILE NOT Eof DO BEGIN
  89.     ReadLn(r);
  90.     Zaehler^.Count(r);
  91.     Statistik^.Count(r*r);
  92.   END;
  93.   Zaehler^.Print;
  94.   Statistik^.Print;
  95. END.
  96.  
  97.