Tartalomjegyzék

< Pascal

Objektum Orientált Programozás

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

Program01.pas
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.
Program01.pas
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

Program01.pas
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:

program01.pas
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

program01.pas
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.