PHP-osztályok és -objektumok (1.)

Mi az objektumorientált programozás?

Az objektumorientált programozás (OOP) egy programozási modell, mely az osztályok és az objektumok koncepcióján alapul. A procedurális programozással ellentétben, ahol a hangsúly az eljárásokon és a funkciókon van, melyek operációkat hajtanak végre az adatokon, az objektumorientált programozás az olyan objektumok létrehozására fókuszál, amelyek együttesen tartalmazzák az adatokat és a funkciókat.

Az objektumorientált programozásnak számos előnye van a hagyományos vagy a procedurális programozással szemben. A legfontosabb előnyök a következők:

  • Tiszta és egyértelmű moduláris struktúrát ad a programoknak.
  • Segít betartani a „ne ismételd magad” elvet, és ezáltal megkönnyíti a kód karbantartását, módosítását és a debuggolást is.
  • Lehetővé teszi, hogy sokkal összetettebb viselkedést hozzunk létre kevesebb kóddal, rövidebb fejlesztési idővel és az újrahasznosíthatóság magas fokával.

Az osztályok és az objektumok fogalma

Az osztályok és az objektumok az objektumorientált programozás két fő aspektusa. Az osztály a változók és a funkciók önálló, független kollekciója, melyek együttműködnek annak érdekében, hogy elvégezzenek egy vagy több specifikus feladatot. Az objektumok az osztályok individuális példányai.

Az osztály úgy működik, mint egy sablon vagy egy vázlat, melyből számos individuális objektum hozható létre. Ezek megtartják az osztály generikus tulajdonságait és viselkedését, viszont minden objektumnak más-más értéke lehet a tulajdonságokra.

Az osztályt a class kulcsszó segítségével tudjuk meghatározni, melyet az osztály neve és egy pár kapcsos zárójel ({}) követ, ahogy azt a következő példánkban is megfigyelheted majd.

Hozzunk létre egy PHP-fájlt, melynek a neve Rectangle.php lesz, majd szúrjuk be a fájlba a következő kódot, hogy elválasszuk az osztály kódját a program többi részétől. Ezután az osztályt bárhol használhatjuk, azzal, hogy beillesztjük a rectangle.php fájlt.

PHP-kód:

<?php
  class Rectangle
  {
      // Tulajdonságok meghatározása
      public $length = 0;
      public $width = 0;

      // A kerület meghatározásának módszere
      public function getPerimeter() {
          return (2 * ($this->length + $this->width));
      }

      // A terület meghatározásának módszere
      public function getArea() {
          return ($this->length * $this->width);
      }
  }
?>

A public kulcsszó a tulajdonságok és a módszerek előtt arra utal, hogy a tulajdonság vagy a módszer bárhonnan elérhető. Erről bővebben is lesz még szó leckecsoportunkban.

Fontos megjegyezni, hogy az osztályon belül a változókat tulajdonságoknak nevezzük, míg a funkciók megnevezése a módszer. Az osztályok megnevezése során a PascalCase módszert alkalmazzuk, azaz minden szó nagybetűvel kezdődik (pl. MyClass).

Az osztály meghatározása után a new kulcsszó segítségével objektumokat hozhatunk létre az osztályból. Az osztály módszerei és tulajdonságai közvetlenül elérhetőek az objektum által.

Hozzunk létre egy új PHP-fájlt, melynek a test.php nevet adjuk, majd szúrjuk be a fájlba a következő PHP-kódot:

<?php
  // Az osztály definíciója
  require 'rectangle.php';

  // Új objektum létrehozása a Rectangle osztályból
  $obj = new Rectangle();

  // Az objektum tulajdonságai értékének lekérése
  echo $obj->length; // Megjelenítés: 0
  echo $obj->width; // Megjelenítés: 0

  // Az objektum tulajdonságai értékének beállítása
  $obj->length = 30;
  $obj->width = 20;

  // Az objektum tulajdonságai értékeinek ismételt olvasása, hogy bemutassuk a változásokat
  echo $obj->length; // Megjelenítés: 30
  echo $obj->width; // Megjelenítés: 20

  // Az objektum módszereinek hívása
  echo $obj->getPerimeter(); // Megjelenítés: 100
  echo $obj->getArea(); // Megjelenítés: 600
?>

Az OOP valódi ereje azonban akkor mutatkozik meg, amikor egy osztályból több esetet használunk, ahogy a következő példa is mutatja:

PHP-kód:

<?php
  // Az osztály definíciója
  require 'rectangle.php';

  // Több objektum létrehozása a Rectangle osztályból
  $obj1 = new Rectangle();
  $obj2 = new Rectangle();

  // Mindkét objektum módszerének lehívása
  echo $obj1->getArea(); // Megjelenítés: 0
  echo $obj2->getArea(); // Megjelenítés: 0

  // Az $obj1 tulajdonság értékeinek beállítása
  $obj1->length = 30;
  $obj1->width = 20;

  // Az $obj2 tulajdonság értékeinek beállítása
  $obj2->length = 35;
  $obj2->width = 50;

  // Mindkét objektum módszerének ismételt lehívása
  echo $obj1->getArea(); // Megjelenítés: 600
  echo $obj2->getArea(); // Megjelenítés: 1750
?>

Ahogy a példa is mutatja, a getArea() módszer a különböző objektumokon alkalmazva különböző adatcsoportokkal dolgozott. Minden objektum független, a saját tulajdonságaival és módszereivel, ezért külön is manipulálható.

Jó gyakorlást!

Az oldal sütiket használ, hogy személyre szabjuk a tartalmakat és reklámokat, hogy működjenek a közösségi média funkciók, valamint hogy elemezzük a weboldal forgalmát. Bővebben a "Részletek mutatása" gombra olvashat.
Az oldal sütiket használ, hogy személyre szabja az oldalon megjelenő tartalmat és reklámokat.