Poznámky OOP I - základní pojmy

Vydáno: 4.10.08 Kategorie:

Název třídy – podstatné jméno (ne sloveso), vytváří se tzv. VelbloudiNotací, každá třída musí mít unikátní název a pro každou třídu by měl být vytvořen samostatný soubor.

Atributy třídy (něco jako proměnné) – měly by být zapouzdřené (tzn. přistupovat k nim přes setry a getry), začínají malým písmenem jinak opět velbloudiNotace

Metody třídy (něco jako funkce) – název metody začíná malý písmenem, mělo by se jednat o slovesa (filtruj, uprav atd.)
Existují také metody začínají na:

  • set (setry) – nastavují hodnotu
  • get (getry) – vrací hodnotu
  • add – přidávají k nějaké hodnotě další hodnotu
  • is – jsou kontrolní, vracejí booleanovskou hodnotu (true/false)

Speciální metodou je __toString() která vrací informaci o třídě. (Dá se to chápat tak, že pokud je __toString() implementována, zavolá se vždy když dáme print nebo echo na danou instanci objektu).

Více viz. http://blog.irminsul.cz/…p-2-zaklady/

Viditelnost v OOP

Public (veřejná)
Není li u metody či atributu definována viditelnost, pak je vždy viditelnost typu public, což značí že „každý má právo k této vlastnosti přistupovat“.

Protected (chráněná)
Viditelnost atributů a metod je pouze v samotné třídě a třídách, které jsou potomkem, případně předkem.

Private (soukromá)
K vlastnostem označeným jako private může přistupovat pouze a jedině vlastní třída.

Static
Je zvláštní typ vlastnosti, který se váže na třídu a nikoli na danou instanci. Její hodnota je tedy nezávislá na tom, zda objekt existuje či nikoliv. K přístupu ke statickým metodám či vlastnostem uvnitř třídy, používáme místo jména třídy klíčová slova self:: nebo parent::, mimo danou třídu metody voláme pomocí zápisu JménoTřídy::Sta­tickáMetoda(), vlastnosti pomocí syntaxe JménoTřídy::$Sta­tickáVlastnos­t.

Příklad z intervalu:

class Trida{
public static $pocitadlo = 0;
public $id;
public $pocitadlo_nestaticke = 0;
public $id_nestaticke;

  public function __construct(){
  $this->id = self::$pocitadlo++;
  $this->id_nestaticke = $this->pocitadlo_nestaticke++;

  }
}

$instance = new Trida();
echo $instance->id;
echo $instance->id_nestaticke;

$instance2 = new Trida();
echo $instance2->id;
echo $instance2->id_nestaticke;
//Příklad vypíše čtyři čísla (0010), $instance->id bude mít vždy
// jinou hodnotu (inkrementovanou o 1 v konstruktoru, neboť každá nová instance této třídy provede zvýšení a protože je pocitadlo typu static, tak se to zapamatuje pro všechny instance), u $instance->id_nestaticke bude vždy hodnota stejná.

http://php.interval.cz/…ti-a-metody/

Final
Používá se pro ochranu rodičovských tříd, aby nemohly být přepsány jejich potomky. Final může být použito před jménem třídy nebo metody

Konstanta v OOP

Konstanta je neměnná a je přístupná i mimo vytvořený objekt. Konstanta je definována počátečním const po němž následuje název konstanty kapitálkami. Na konstantu se odkazujeme stejně jako na statické atributy za pomocí :: – a to buď self::KONSTANTA uvnitř třídy, nebo mimo třídu jako Trida::KONSTANTA (toto je však možné i uvnitř třídy).

Př.

class HtmlFormInput {
       const TYPE_HIDDEN = "hidden";
       …
}
$input = new HtmlFormInput("jme­no");
$input->setType(HtmlFormInput::TYPE_HID­DEN);

Více viz. http://blog.irminsul.cz/…icova-slova/