Předtím, než mohu začít psát objektově, musím mít elementární znalosti o tom, co jsou objekty, instance, jak funguje dědičnost, apod. Pokusím se zde popsat tyto znalosti tak, abych byl schopen na nich stavět.
Dost častá chyba je, když programátor pochopí OOP jako něco složitého či nereálného k použití. Ještě větší chybou je, když vývojář začne stavět projekt na objektech, aniž by měl dostatek znalostí k tomu, jak efektivně využít všech vlastností (toto byla i má chyba).
Takže o co vlastně jde? Na začátku můžete objekty chápat jako balíčky, které obsahují funkce a promenné, s kterými se dá pracovat v zájmu balíčku (objektu). Jinými slovy řečeno: "Objekty jsou obal nad procedurálním (obýčejným) kódem.".
OOP obsahuje spoustu nového názvosloví, které je potřeba znát, abych byl schopen rozluštit, o čem se dva objektoví programátoři mluví :)
// toto je trida
class Zamestnanec
{
// toto je atribut tridy
private $cislo;
// konstruktor tridy
public function __construct() {}
// metoda tridy
public function setCislo($cislo)
{
$this->cislo = $cislo;
}
// metoda tridy
public function getCislo()
{
return $this->cislo;
}
}
?>
Pokud má třída metody začínající set či get, tak je nazývame jako setry a getry. Tyto setry a getry nastavují a vracejí hodnoty, respektive pracují s atributem třídy, který by se měl vždy definovat jako "private".
Tímto jsem popsal základní názvosloví kolem třídy. V druhém kole popíši, jak třídu použiji.
$z = new Zamestnanec();
$z->setCislo(123);
echo $z->getCislo();
Takže, co je co? :) Promenná $z můžeme nazvat instancí objektu. Instance je jinak řečeno odkaz na objekt. Objekt je "new Zamestnanec()". Někdo by si zde mohl myslet, že objekt poznám tak, že obsahuje "new", ale není toúplně tak pravda. Např. objekt může být vytvářen jako jedináček (Singleton), který může být vytvořen pouze jednou. Takový objekt se vytváří interně a proto ho zvenku nevytvářím pomocí new (o tom, ale až později).
Dále je vidět, že pomocí instance (odkazu na objekt) volám metody set a get. Z vnějšku mohu volat pouze metody, které jsou public (veřejné). Důvody, proč je něco private, něco private a něco public, popíšu později.
To by bylo do začátku asi vše. Byli byste nyní schopni napsat třídu Auto obsahující atribut rychlost a metody na nastavení a vrácení rychlosti? Stejně tak i tuto třídu použít? ;)
Já jsem věděl že nebudu litovat, zařadím-li si tento blog do čtečky
OdpovědětVymazatAbych to rozvedl - jediný český blog který píše jen o tom co mě zajímá a to čtivou a srozumitelnou formou
OdpovědětVymazat