home *** CD-ROM | disk | FTP | other *** search
- PROGRAM OODemo;
-
- TYPE
- Counter = OBJECT
- accum : REAL;
- id : STRING;
- CONSTRUCTOR Init;
- DESTRUCTOR Done; VIRTUAL;
- PROCEDURE Count(v : REAL);
- PROCEDURE RPrint; VIRTUAL;
- PROCEDURE Print;
- FUNCTION Sum : REAL;
- END;
-
- CONSTRUCTOR Counter.Init;
- BEGIN
- accum := 0;
- id := 'COUNTER';
- END;
-
- DESTRUCTOR Counter.Done;
- BEGIN
- END;
-
- PROCEDURE Counter.Count(v : REAL);
- BEGIN
- WriteLn(id, ' : Neuer Wert: ', v);
- accum := accum + v;
- END;
-
- PROCEDURE Counter.RPrint;
- BEGIN
- WriteLn('Summe = ', sum);
- END;
-
- PROCEDURE Counter.Print;
- BEGIN
- WriteLn('Datenerfassung ', id, ' beendet. Ergebnis: ');
- RPrint;
- END;
-
- FUNCTION Counter.Sum;
- BEGIN
- Sum := accum;
- END;
-
- TYPE
- Stat = OBJECT(Counter)
- anzahl : INTEGER;
- CONSTRUCTOR Init;
- PROCEDURE Count(v : REAL);
- FUNCTION Mean : REAL;
- PROCEDURE RPrint; VIRTUAL;
- END;
-
- CONSTRUCTOR Stat.Init;
- BEGIN
- Counter.Init;
- anzahl := 0;
- id := 'STAT';
- END;
-
- PROCEDURE Stat.Count(v : REAL);
- BEGIN
- anzahl := succ(anzahl);
- Counter.Count(v);
- END;
-
- FUNCTION Stat.Mean : REAL;
- BEGIN
- Mean := sum / anzahl;
- END;
-
- PROCEDURE Stat.RPrint;
- BEGIN
- WriteLn('Die Summe der gelesenen ', anzahl, ' Zahlen ist ', sum);
- WriteLn('Der Mittelwert ist ', Mean);
- END;
-
- VAR
- Zaehler : ^Counter;
- Statistik : ^Stat;
- r : REAL;
-
- BEGIN
- New(Zaehler, Init);
- New(Statistik, Init);
- WHILE NOT Eof DO BEGIN
- ReadLn(r);
- Zaehler^.Count(r);
- Statistik^.Count(r*r);
- END;
- Zaehler^.Print;
- Statistik^.Print;
- END.
-