uses crt; type loomaviit=^loom; loom=object nimi: string; constructor Init(algnimi:string); procedure jutusta; virtual; procedure panenimi(uusnimi:string); virtual; function leianimi: string; virtual; end; kassiviit=^kass; kass=object(loom) procedure jutusta; virtual; end; koeraviit=^koer; koer=object(loom) procedure jutusta; virtual; end; hiireviit=^hiir; hiir=object(loom) procedure jutusta; virtual; end; inimeseviit=^inimene; inimene=object(loom) kodulemmik:loomaviit; constructor Init(algnimi:string); procedure uus_lemmik(uus:loomaviit); procedure jutusta; virtual; procedure silita; end; constructor loom.Init(algnimi:string); begin panenimi(algnimi); end; procedure loom.jutusta; begin textcolor(blue); writeln('xxx'); textcolor(lightgray); end; procedure loom.panenimi(uusnimi: string); begin nimi:=uusnimi; end; function loom.leianimi: string; begin leianimi:=nimi; end; procedure kass.jutusta; begin writeln('njau'); end; procedure koer.jutusta; begin writeln('uuu'); end; procedure hiir.jutusta; begin sound(1000); readkey; nosound; end; constructor inimene.Init(algnimi:string); begin kodulemmik:=NIL; panenimi(algnimi); end; procedure inimene.silita; begin writeln('Pai sulle, armas ',kodulemmik^.leianimi); end; procedure inimene.jutusta; begin writeln('mmmm mjah'); end; procedure inimene.uus_lemmik(uus:loomaviit); begin if kodulemmik<>NIL then dispose(kodulemmik); kodulemmik:=uus; end; var tudeng:inimeseviit; begin tudeng:=new(inimeseviit, init('Kati')); tudeng^.uus_lemmik(new(hiireviit, init('Tipsu'))); tudeng^.silita; tudeng^.kodulemmik^.jutusta; tudeng^.uus_lemmik(new(inimeseviit, init('Jaanus'))); tudeng^.silita; tudeng^.kodulemmik^.jutusta; end.