Cd objektum Turbo Pascal

A Programozás Wiki wikiből
Program ObjectsInTurboPascal;

Uses Crt;

{a cd objektum típus deklarációja}
Type Cd = Object {Ős típus}
            szin:String;
            meret:Integer;
            foglalt:Integer;
            Procedure KezdoErtekAdas(UjSzin:String; UjMeret,UjFoglalt:Integer);
            Function SzabadHely:Integer;
            Function Kapacitas:Integer;
            Function MilyenSzinu:String;
          End;

         {kezdőérték megadására készítjük}
         Procedure Cd.KezdoErtekAdas(UjSzin:String; UjMeret,UjFoglalt:Integer);
         Begin
           szin:=UjSzin;      {a szin mező a Cd objektumé}
           meret:=UjMeret;    {a meret mező a Cd objektumé}
           foglalt:=UjFoglalt; {a foglalt mező a Cd objektumé}
         End;

         {szabad terület lekérdezése}
         Function Cd.SzabadHely:Integer;
         Begin
           SzabadHely:=meret-foglalt;
         End;

         {lemez kapacitásának lekérdezése}
         Function Cd.Kapacitas:Integer;
         Begin
           Kapacitas:=meret;
         End;

         {a cd objektum szin mezőjének lekérdezése}
         Function Cd.MilyenSzinu:String;
         Begin
           MilyenSzinu:=szin;
         End;

         {származtassunk az Ős Cd típusból}
         {tehát ez egy közvetlen leszármazott }
Type ZeneCd = Object(Cd){itt örököl a közvetlen Ős típustól (Cd) }
                Eloado:String;    {itt kapja az új tulajdonságokat}
                AlbumCime:String;
           {illetve adhatunk meg uj metodusokat is}
                Procedure KezdoErtekAdas(UjEloado,UjAlbumCime:String);
                Function KiAzEloado:String;
                Function MiAzAlbumCime:String;
              End;


         Procedure ZeneCd.KezdoErtekAdas(UjEloado,UjAlbumCime:String);
         Begin
           Cd.KezdoErtekAdas('Piros',650,300);
           Eloado:=UjEloado;       {a ZeneCd objektum Eloado mezője}
           AlbumCime:=UjAlbumCime; {a ZeneCd objektum AlbumCime mezője}
         End;

         {amire törekedni kell az az, hogy az objektum
          egyes mezőihez csak a metódusokon keresztül
          férjünk hozzá }
         Function ZeneCd.KiAzEloado:String;
         Begin
           KiAzEloado:=Eloado;
         End;

         Function ZeneCd.MiAzAlbumCime:String;
         Begin
           MiAzAlbumCime:=AlbumCime;
         End;

{hozzuk létre a ZeneCd objektum egy példányát.}

Var MulatosZene:ZeneCd;


Begin {main}
  ClrScr;

  {kezdőértékadás}
  MulatosZene.KezdoErtekAdas('Mulatós Valaki','Nagy Mulatós Album 4.');

  {kérdezzünk le adatokat az albumról (objektumról)}
  WriteLn('Album Cime : ',MulatosZene.MiAzAlbumCime);
  WriteLn('Eloado Neve: ',MulatosZene.KiAzEloado);
  WriteLn('Cd Meret   : ',MulatosZene.Kapacitas);
  WriteLn('Szabad     : ',MulatosZene.SzabadHely);
  WriteLn('Cd Szine   : ',MulatosZene.MilyenSzinu);
  ReadLn;
End.