[[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.