[[oktatas:programozás:pascal|< Pascal]] ====== Objektum Orientált Programozás ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2013, 2014, 2015 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== Bevezetés ===== A FreePascalban alapvetően az Object kulcsszóval hozhatunk létre osztályokat. A class használatához szükség van a {$mode objfpc} módosítóra. Az osztályt a típusok részben kell felsorolni. ===== Példaosztály ===== program Program01; {$mode objfpc} type Dolgozo = Class private Nev : String; Kor : Integer; Fiz : Real; public procedure beallitKor(atvettKor: Integer); function lekerKor(): Integer; end; procedure Dolgozo.beallitKor(atvettKor : Integer); begin Kor := atvettKor; end; function Dolgozo.lekerKor(): Integer; begin lekerKor := Kor; end; var Joska : Dolgozo; BEGIN Joska.Nev := 'Nagy József'; Joska.Kor := 24; Joska.Fiz := 380000; WriteLn(Joska.Nev); WriteLn(Joska.Kor); WriteLn(Joska.Fiz:0:2); ReadLn; END. program Program01; {$mode objfpc} type Dolgozo = Class public Nev : String; Kor : Integer; Fiz : Real; constructor Create(); end; var Joska : Dolgozo; constructor Dolgozo.Create(); begin Nev := 'Névtelen'; Kor := 0; Fiz := 0; end; BEGIN Joska := Dolgozo.Create(); Joska.Kor := 24; WriteLn(Joska.Nev); WriteLn(Joska.Kor); ReadLn; END. ===== Példaobjektum ===== program Program01; type Dolgozo = Object public Nev : String; Kor : Integer; Fiz : Real; end; var Joska : Dolgozo; BEGIN Joska.Kor := 24; WriteLn(Joska.Nev); WriteLn(Joska.Kor); ReadLn; END. ===== Virtuális metódus ===== A virtuális metódust felülírhatjuk a gyermek osztályokban. A FreePascalban a virtual kulcsszót kell a függvény végére írni: program program01; {$mode objfpc} type Dolgozo = Class public nev : String; fizetes: Real; procedure beallitAlapFizetes(); virtual; end; Mernok = Class(Dolgozo) public procedure beallitAlapFizetes(); end; procedure Dolgozo.beallitAlapFizetes(); begin fizetes := 400000; end; procedure Mernok.beallitAlapFizetes(); begin fizetes := 800000; end; var joska: Dolgozo; feri : Mernok; BEGIN joska := Dolgozo.Create(); joska.nev := 'Nagy József'; WriteLn(joska.nev); joska.beallitAlapFizetes(); WriteLn(joska.fizetes:0:0); feri := Mernok.Create(); feri.nev := 'Topos Ferenc'; feri.beallitAlapFizetes(); WriteLn(feri.nev); WriteLn(feri.fizetes:0:0); END. Meg kell jegyezzük, a Freepascal 2.6.2-6 a metódus felülírását megengedte akkor is, ha nem tettük ki a virtual kulcsszót. ===== Függelék ===== ==== Osztály példa ==== program program01; {$mode objfpc} type Dolgozo = Class public nev : String; fizetes: Real; procedure beallitAlapFizetes(); end; procedure Dolgozo.beallitAlapFizetes(); begin fizetes := 400000; end; var joska: Dolgozo; BEGIN joska := Dolgozo.Create(); joska.nev := 'Nagy József'; WriteLn(joska.nev); joska.beallitAlapFizetes(); WriteLn(joska.fizetes:0:0); END.