Podstawy
programowania obiektowego
U podstaw programowania obiektowego leży ściślejsze powiązanie rzeczywistości z jej abstrakcyjną reprezentacją w programie. Cel ten osiągnięto poprzez zdefiniowanie klas, obiektów i metod.
Podstawowe pojęcia programowania obiektowego:
klasa, obiekt, pole i metoda
Klasa to wzorzec określający, jakie dane (pola) dotyczące obiektu są pamiętane i jakie czynności (metody) dany obiekt potrafi wykonać.
Obiekt - instancja klasy – (ang. instance) to konkretyzacja danej klasy, wypełnienie wzorca określonymi danymi.
Do pól i metod odwołujemy się podając nazwę zmiennej obiektowej, a po kropce nazwę pola np.: Objekt1.Pole1, Objekt4.Pole2.
Ta sama zasada dotyczy metod np.: Objekt1.Metoda1, Objekt2.Metoda3.
Deklarując
klasę w Turbo Pascalu zaczynamy od słowa type, następnie podajemy z dużej litery
nazwę klasy poprzedzoną dużą literą T. Dalej znak = i słowo kluczowe object.
Następnie deklarujemy pola i metody. Deklarację klasy kończy end;
type TKlasa = object
pole1:typ1;
pole2:typ2;
…
procedure Metoda1(parametr_formalny:typ);
function Metoda2(parametr_formany:typ);
end;
Każda metoda musi zostać w programie zdefiniowana. Definicja metody wygląda tak jak definicja procedury lub funkcji, z tą tylko różnicą, że nazwa metody musi zawierać nazwę klasy.
W treści metody można bezpośrednio bez podawania klasy odwoływać się do pól oraz innych metod tej klasy.
procedure TKlasa.Metoda1(parametr_formalny:typ);
begin
…
end;
function
TKlasa.Metoda2(parametr_formalny:typ):typ_funkcji;
begin
…
end;
Parametry formalne metody muszą nosić inne nazwy niż pola składowe klasy.
Definicja klasy TProstokąt
type
TProstokat = object
x,y:integer; {pozycja na ekranie lewego górnego rogu}
a,b:integer;
{długości boków prostokąta}
procedure Inicjuj(xx,yy,aa,bb:integer;
procedure Narysuj;
procedure Wymaz;
procedure Przesun(xn, yn:integer);
function Pole:longint;
end;
(* poniższa metoda rysuje prostokąt*)
procedure TProstokat.Inicjuj;
begin
x:=xx;y:=yy;
a:=aa;b:=bb;
end;
procedure TProstokat.Narysuj;
begin
Rectangle(x,y,x+a,y+a);
end;
… itd.
function
TProstokat.Pole;
begin
Pole:=a*b;
end;
Wszystkie metody muszą zostać zdefiniowane i w takiej kolejności jak to ma miejsce w klasie TProstokat.
Klasa TProstokat zawiera 4 pola (tj. zmiene x,y, a i b) oraz 5 metod (są to procedury Inicjuj, Narysuj, Wymaz, Przesun oraz funkcja Pole).
Przedstawiona w przykładzie definicja klasy TProstokat ma pewną wadę. Dostęp do pól i metod tej klasy nie jest niczym ograniczony. Można zmienić (przypadkowo) wartości np. współrzędnych prostokąta, co spowoduje niewłaściwe narysowanie obiektu. Problemów tych można uniknąć, ograniczając dostęp do pól. W TP jest to możliwe, jeśli deklarację klasy umieścimy wewnątrz modułu, a pola i metody podzielimy na prywatne i publiczne odpowiednio słowami kluczowymi: private i public. W programach korzystających z modułu będą dostępne tylko pola i metody zadeklarowane jako publiczne.