PPizza1=^OPizza1;
OPizza1=object(OPizza) {2. trieda - 1. potomok objektu OPizza}
PocetPriloh:string;
CenaPizza:integer;
function VypocitajCenu(Cena:integer):integer; {Prekryvanie}
Procedure VypisPizza; Virtual;
Destructor Done;
end;
PPizza2=^OPizza2; {3. trieda - 2. potomok triedy OPizza}
OPizza2=object(OPizza1)
CasPripravy:integer;
function VypocitajCenu(Cena:integer):string; {Prekryvanie metody OPizza1}
procedure DoplnUdaje;
function WritePizza:string;
procedure VypisPizza; Virtual;
Destructor Done;
end;
PReadPizza=^OReadPizza;
OReadPizza=object
procedure Citaj;
end;
PNewPizza=^ONewPizza;
ONewPizza=object(OReadPizza) {Dedene z OReadPizza}
Zaznam:integer;
end;
constructor OReadPizzaDO.Init(ACenaDO:integer);
begin
CenaDO:=ACenaDO;
end;
destructor OReadPizzaDO.Done;
begin
end;
procedure OReadPizzaDO.VypisDO; {Pizza zoznam}
var subor:text;
begin
end;
procedure OReadPizza.citaj;
var subor:text;
PorCislo:integer;
riadok,SPorCislo:string;
begin
textbackground(1);
Writeln('Vasa pizza bola pridana do Pizza zoznamu:');
textbackground(0);
writeln;
while not Eof(subor) do
begin
Readln(subor, riadok);
PorCislo:=PorCislo+1;
str(PorCislo,SPorcislo);
if (PorCislo < 100) then
Sporcislo:=' '+SporCislo;
{Odelovac zaznamov}
while Pos('/', riadok) > 0 do
riadok[Pos('/', riadok)] := ' ';
Writeln(Sporcislo,' ',riadok);
end;
close(subor);
end;
{Deklaracia triedy OPizza2}
function OPizza2.WritePizza:string;
var CCasPripravy:string;
begin
str(CasPripravy,CCasPripravy);
clrscr;
WritePizza:=(Nazov+' Pizza / '+Hmotnost+' g / '
+Zaklad+' (zaklad) / '+PocetPriloh+' (prilohy) / '
+CCasPripravy+' min / '+VypocitajCenu(CenaPizza)+' Sk');
end;
function OPizza2.VypocitajCenu(Cena:integer):string;
var CenaTmp:integer;
CenaStr:string; {Zmena vystupu na string}
const Zisk1=50;
const Zisk2=25; {Ak je cas pripravy viac ako 15 min}
const Zisk3=75; {Ak je cas pripravy menej ako 5 min}
begin
if (CasPripravy > 15) then CenaTmp:=Cena+Zisk2
else CenaTmp:=Cena+Zisk1;