Przejdź do zawartości

Object Pascal/Obiekty object

Z Wikibooks, biblioteki wolnych podręczników.

Obiekty zachowują się podobnie jak rekordy. Mają jednak metody i obsługują dziedziczenie. Nie obsługują za to wariantów.

Składnia rekordu

[edytuj]
program obiektO;
type
   samochod = object {deklaracja obiektu}
     kolor: String;
     marka: String;
     ilosc: Word;
     procedure sprzedane(ile: Word); {metoda - procedura}
   end;
   
   dostawczy = object(samochod) {dziedziczenie}
     ladownosc: Cardinal;
     function CzySieZmiesci(ile: Cardinal): boolean; {metoda - funkcja}
   end;

{implementacje metod}

procedure samochod.sprzedane(ile: Word);
begin
   ilosc := ilosc - ile;
end;

function dostawczy.CzySieZmiesci(ile: Cardinal): boolean;
begin
   CzySieZmiesci := ladownosc >= ile;
end;

var
   OpisSamochodu1: samochod;
   OpisSamochodu2: dostawczy;
   
begin
   OpisSamochodu1.kolor := 'Niebieski';
   OpisSamochodu1.marka := 'Honda';
   OpisSamochodu1.ilosc := 7;
   Writeln('Marka Samochodu 1: ', OpisSamochodu1.marka);
   Writeln('Ilość na stanie: ', OpisSamochodu1.ilosc);
   
   OpisSamochodu2.kolor := 'Szary';
   OpisSamochodu2.marka := 'Żuk';
   OpisSamochodu2.ilosc := 5;
   OpisSamochodu2.ladownosc := 11500;
   Writeln('Marka Samochodu Dostawczego 2: ', OpisSamochodu2.marka);
   Writeln('Ilość na stanie: ', OpisSamochodu2.ilosc);
   
   if OpisSamochodu2.CzySieZmiesci(10000) then
   begin
      Writeln('Samochód spełnia wymagania firmy X. Firma X kupuje dwie sztuki.');
      OpisSamochodu2.sprzedane(2);
      Writeln('Nowa ilość na stanie: ', OpisSamochodu2.ilosc);
   end
   else
      Writeln('Samochód nie spełnia wymagań firmy X');
   
   Readln;
end.