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::StatickáMetoda(),
vlastnosti pomocí syntaxe JménoTřídy::$StatickáVlastnost.
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("jmeno");
$input->setType(HtmlFormInput::TYPE_HIDDEN);
Více viz. http://blog.irminsul.cz/…icova-slova/