home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1990
/
08
/
grdlagen
/
newdisp.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1990-07-05
|
3KB
|
117 lines
(* ------------------------------------------------------ *)
(* NEWDISP.PAS *)
(* Demonstration von "New" und "Dispose" als Funktionen *)
(* in Verbindung mit virtuellen Methoden, Destruktoren, *)
(* Konstruktoren und statischen Methoden *)
(* (c) 1990 R.Reichert & TOOLBOX *)
(* ------------------------------------------------------ *)
PROGRAM NewDispose_And_VirtualMethods;
USES Crt;
TYPE
APtr = ^A;
A = OBJECT
CONSTRUCTOR Init;
PROCEDURE Hallo;
PROCEDURE CallShow;
PROCEDURE Show; VIRTUAL;
DESTRUCTOR Done; VIRTUAL;
END;
BPtr = ^B; (* Die Methode "Hallo": virtuell *)
B = OBJECT (A)
CONSTRUCTOR Init;
PROCEDURE Hallo; VIRTUAL;
PROCEDURE Show; VIRTUAL;
DESTRUCTOR Done; VIRTUAL;
END;
CPtr = ^C; (* "Hallo" muß jetzt virtuell sein *)
C = OBJECT (B)
PROCEDURE Hallo; VIRTUAL;
END;
VAR
aa : APtr; (* oder: aa : BPtr;
oder: aa : CPtr; *)
(* ------------------------------------------------------ *)
(* Implementieren der Methoden von A *)
(* ------------------------------------------------------ *)
CONSTRUCTOR A.Init;
BEGIN
WriteLn('Hier ist der Constructor A.');
END;
PROCEDURE A.Hallo;
BEGIN
WriteLn('A sagt "hallo" ');
END;
PROCEDURE A.CallShow;
BEGIN
WriteLn('A ruft die Methode "Show" ');
Show;
END;
PROCEDURE A.Show;
BEGIN
WriteLn('und hier ist "Show"');
END;
DESTRUCTOR A.Done;
BEGIN
WriteLn('A ist fertig.');
END;
(* ------------------------------------------------------ *)
(* Implementieren der Methoden von B *)
(* ------------------------------------------------------ *)
CONSTRUCTOR B.Init;
BEGIN
WriteLn('Jetzt kommt der Constructor B.');
END;
PROCEDURE B.Show;
BEGIN
WriteLn('B zeigt sich, ...');
END;
PROCEDURE B.Hallo;
BEGIN
WriteLn('...sagt auch "Hallo" ...');
END;
DESTRUCTOR B.Done;
BEGIN
WriteLn('... und tritt ab.');
END;
(* ------------------------------------------------------ *)
(* Implementieren der Methoden von C *)
(* ------------------------------------------------------ *)
PROCEDURE C.Hallo;
BEGIN
WriteLn('C tritt nicht auf und sagt keinen Text.');
{ Im Dialog ist das Stück ein bißchen schwach }
END;
(* ------------------------------------------------------ *)
(* Hauptprogramm, am besten mit F7 "durchsteppen" *)
(* ------------------------------------------------------ *)
BEGIN
ClrScr;
aa := New(BPtr, Init); (* oder: aa := New(APtr, Init);
oder: aa := New(CPtr, Init); *)
aa^.Hallo;
aa^.Show;
aa^.CallShow;
aa^.Done;
ReadLn;
END.
(* ------------------------------------------------------ *)
(* Ende von NEWDISP.PAS *)