Podstawy programowania obiektowego
 

1. Podstawowe pojęcia 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.

 

1.1. Definiowanie klas w języku Turbo Pascal


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;

 

1.2. Implementacja metod deklarowanej klasy

 

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

 

1.3. Pola i metody prywatne

 

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.