home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 12 / grdlagen / oopdemo.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1989-06-02  |  4.0 KB  |  136 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    OOPDEMO.PAS                         *)
  3. (*           Objektorientierte Programmierung             *)
  4. (*        unter Turbo Pascal 5.5 und Quick Pascal         *)
  5. (*          (c) 1989 W.Rinke & TOOLBOX                    *)
  6. (* ------------------------------------------------------ *)
  7. PROGRAM OOP_Demo;
  8.  
  9. USES Crt;
  10.  
  11. (* ------------------------------------------------------ *)
  12. (*  Die Oberklasse "Figur" vererbt alle ihre Fähigkeiten  *)
  13. (*  an sämtliche Unterklassen.                            *)
  14. (*  Die Fähigkeiten des Objekts "Figur" sind              *)
  15. (*    - die Instanz-Variablen x, y und FChr und           *)
  16. (*    - die Prozeduren "Init", "Show", "Hide" und "Move"  *)
  17. (* ------------------------------------------------------ *)
  18. TYPE Figur = OBJECT
  19.            x, y : INTEGER;
  20.            FChr : STRING;
  21.  
  22.            PROCEDURE Init(InitX, InitY : INTEGER;
  23.                      InitFChr : STRING);
  24.            { Initialisierung der Instanzvariablen }
  25.  
  26.            PROCEDURE Show;
  27.            { Bringt ein Objekt auf den Bildschirm }
  28.  
  29.            PROCEDURE Hide;
  30.            { Entfernt ein Objekt vom Bildschirm }
  31.  
  32.            PROCEDURE Move(DeltaX, DeltaY : INTEGER);
  33.            { Bewegt ein Objekt relativ zum alten Ort }
  34.  
  35.          END;  { Objekt Figur }
  36.  
  37. (* ------------------------------------------------------ *)
  38. (*   Nun werden die Methoden definiert, nach denen das    *)
  39. (*   Hauptobjekt Aufträge (messages) ausführt             *)
  40. (* ------------------------------------------------------ *)
  41.  
  42.   PROCEDURE Figur.Init(InitX, InitY : INTEGER;
  43.                InitFChr : STRING);
  44.   BEGIN
  45.     Self.x := InitX;
  46.     Self.y := InitY;
  47.     Self.FChr := InitFChr;
  48.   END;
  49.  
  50.   PROCEDURE Figur.Show;
  51.   BEGIN
  52.     GotoXY(Self.x, Self.y);
  53.     Write(Self.FChr);
  54.   END;
  55.  
  56.   PROCEDURE Figur.Hide;
  57.   BEGIN
  58.     GotoXY(Self.x, Self.y);
  59.     Write(' ');
  60.   END;
  61.  
  62.   PROCEDURE Figur.Move(DeltaX, DeltaY : INTEGER);
  63.   BEGIN
  64.     Self.Hide;          { eine Prozedur eines Objekts kann
  65.              sich der Methoden der eigenen
  66.              Klasse bedienen                   }
  67.     Self.x := Self.x + DeltaX;
  68.     Self.y := Self.y + DeltaY;
  69.     Self.Show;
  70.   END;
  71.  
  72. (* ------------------------------------------------------ *)
  73. (*  Nun können neue Objekte zugefügt werden.              *)
  74. (*  Alle neuen Objekte können sich nun der Methoden der   *)
  75. (*  Oberklasse bedienen...                                *)
  76. (* ------------------------------------------------------ *)
  77.  
  78. TYPE Stern = OBJECT (Figur)
  79.            PROCEDURE Init(InitX, InitY : INTEGER); 
  80.          END;
  81.  
  82.   PROCEDURE Stern.Init(InitX, InitY : INTEGER);
  83.   BEGIN
  84.     Figur.Init(InitX, InitY, '*');
  85.   END;
  86.  
  87. TYPE Gesicht = OBJECT (Figur)
  88.          PROCEDURE Init(InitX, InitY : INTEGER);
  89.            END;
  90.  
  91.   PROCEDURE Gesicht.Init(InitX, InitY : INTEGER);
  92.   BEGIN
  93.     Figur.Init(InitX, InitY, Chr(1));
  94.   END;
  95.  
  96. TYPE Schrift = OBJECT (Figur)
  97.          PROCEDURE Init(InitX, InitY : INTEGER);
  98.            END;
  99.  
  100.   PROCEDURE Schrift.Init(InitX, InitY : INTEGER);
  101.   BEGIN
  102.     Figur.Init(InitX, InitY, 'TOOLBOX');
  103.   END;
  104.  
  105. (* ------------------------------------------------------ *)
  106. (* ... aber auch eigene Methoden entwickeln.              *)
  107. (* ------------------------------------------------------ *)
  108.  
  109. VAR Star : Stern;
  110.     Face : Gesicht;
  111.     Text : Schrift;
  112.     i    : INTEGER;
  113.  
  114. BEGIN
  115.   ClrScr;
  116.   Star.Init(10, 10);
  117.   Face.Init(21, 21);
  118.   Star.Show;                { Wenn man die Namen geschickt }
  119.   Face.Show;                { vergibt, kann man mit den    }
  120.   Delay(1000);              { Objekten "reden". Das macht  }
  121.   Star.Move(10, 10);        { Code lesbar.                 }
  122.   Face.Move(-10, -10);
  123.   Delay(1500);
  124.   Face.Move(-10, 3);
  125.   Star.Hide;
  126.   Text.Init(1, 15);
  127.   Text.Show;
  128.   FOR i := 1 TO 72 DO BEGIN
  129.     Text.Move(1, 0);        { "Text" ist fast zu allgemein }
  130.     Face.Move(1, 0);
  131.     Delay(100);
  132.   END;
  133. END.
  134. (* ------------------------------------------------------ *)
  135. (*               Ende von OOPDEMO.PAS                     *)
  136.