Przejdź do głównej zawartości

Programowanie obiektowe cz. 2

zobacz PDF

W tej publikacji chciałbym dokładniej przedstawić na czym polega programowanie obiektowe. Każdy obiektowy język programowania ma w sobie zdefiniowane następujące pojęcia:

  • hermetyzacja
  • dziedziczenie
  • polimorfizm
  • kompozycja

Jeżeli w danym języku programowania nie ma implementacji któregoś z tych pojęć to nie jest to typowy język obiektowy.

Zatem czym jest program komputerowy?. Odpowiedź jest prosta. Program komputerowy jest zbiorem obiektów, które się ze sobą komunikują.

Natomiast czym jest obiekt? Obiekt to blok programu, który ma atrybuty określające jego stan oraz metody definiujące jego zachowanie. Na przykład obiekt pracownik firmy będzie miał takie atrybuty jak numer ubezpieczenia, data urodzin, płeć i inne. Natomiast zachowaniem obiektu pracownik firmy mogą być takie metody jak setGender() lub getGender(), które ustawiają i sprawdzają wartości atrybutu obiektu jakim jest płeć.

 Innym pytaniem może być - jak są tworzone obiekty. Tutaj z pomocą przychodzi pojęcie klasy. Klasa jest szablonem służącym do tworzenia obiektów. A dokładniej mówiąc klasa zawiera definicje atrybutów i zachowań, które będą miały wszystkie obiekty utworzone przy jej użyciu. 

Jeżeli pewien obiekt wywołuję metodę innego obiektu to tak naprawdę wysyła do niego komunikat. 

Niektóre metody danej klasy mogą zawierać prywatne metody niedostępne dla innych obiektów. Jest to jedna z największych zalet programowania obiektowego. Fakt, że dany obiekt nie musi udostępniać wszystkich swoich atrybutów i zachowań nazywa się hermetyzacją

Zbiór publicznych metod w danej klasie służący do sposobu komunikowania się z obiektami określa jej interfejs. Zatem w skład interfejsu wchodzą tylko publiczne atrybuty i metody danej klasy.

Kolejną ważną cechą obiektowości jest możliwość wielokrotnego wykorzystania kodu przy pomocy dziedziczenia . Dzięki dziedziczeniu dana klasa może przejąć atrybuty i metody innej klasy. Załóżmy, że mamy klasę ssaki, która ma pewien zbiór atrybutów i metod. Następnie chcemy utworzyć nową klasę o nazwie psy. Aby nie pisać jej od nowa możemy dziedziczyć wszystkie atrybuty i metody klasy ssaki dodając kilka nowych metod aby została utworzona klasa psy. 

Ostatnim pojęciem jakie chciałem przedstawić w tej publikacji jest polimorfizm. Załóżmy, że klasa A dwie metody write() oraz print(). Obie metody są publiczne i wchodzą w skład interfejsu klasy A.

class A

  {

  function write();

    {

    echo 'Klasa A';

    }

function print()

  {

   $this->write();

  }

}

Teraz utwórzmy klasę B, która dziedziczy po klasie A

 class B extends A

  {

   function write()

     {

      echo 'Klasa B';

     }

  } 

 Zatem na czym polega polimorfizm? . Klasa A ma metodę print(). Wewnątrz metody print() klasy A wywoływana jest metoda write(). W tym przypadku mamy takie zachowanie, że jeżeli metodę print() wywoła klasa A to zostanie wywołana metoda write() klasy A. Natomiast jeżeli metodę prnt() wywołuje klasa B to zostanie wywyłana metoda write() klasy B. Na tym właśnie polega polimorfizm.

Komentarze