Metody
Metody objektů se od běžných podprogramů způsobem práce s nimi. U podprogramů je již v době překladu jasné, o jaký podprogram se jedná. U metody je tato skutečnost známa až v okamžiku jejího volání. Před každým voláním metody se tedy nejprve musí určit, do kterého balíku volaný podprogram náleží. Díky tomu je volání metody o něco pomalejší, než volání obyčejného podprogramu.Voláme-li metody třídy, lze snadno určit balík, do kterého podprogram náleží (jméno třídy je zadáno jako první argument metody). O něco komplikovanější je to v případě, že voláme metodu objektu. Protože je při vytváření pomocí funkce „bless“ objektu řečeno, k jaké třídě náleží, je potom možné pomocí funkce „ref“ název této třídy zpětně získat. Existují dva druhy volání metod:
1. pomocí operátoru ->
2. pomocí nepřímé notace.
Volání metod pomocí operátoru ->
Na levé straně operátoru se nalézá ten, kdo chce metodu vyvolat, a na pravé straně jméno metody. Je-li nalevo objekt, jedná se o volání metody objektu, je-li tam jméno třídy, jedná se o volání metody třídy.Seznam argumentů metody musí být uzavřen v kulatých závorkách.
$objekt->metoda;
// metoda objektu
$objekt->metoda(l, 2, 3);
// metoda objektu s argumenty
Trida->metoda;
// metoda třídy
Trida->metoda(l, 2, 3);
// metoda třídy s argumenty
Volání metod pomocí nepřímé notace
Tento způsob volání metod je shodný s voláním obyčejných podprogramů v Perlu. Nejprve je uvedeno jméno funkce, pak následuje ten, kdo metodu volá a nakonec případný seznam argumentů. Kulaté závorky kolem seznamu argumentů jsou nepovinné stejně jako u seznamových operátorů (je třeba se pouze řídit prioritou operátorů ve výrazu).
// metoda objektu
metoda $objekt;
// metoda objektu s argumenty
metoda $objekt 1, 2, 3;
metoda $objekt (1, 2, 3);
// metoda třídy
metoda Trida;
// metoda třídy s argumenty
metoda Trida 1, 2, 3;
metoda Trida (1, 2, 3);
A to by bylo pro dnešek všechno. V dalším díle se podíváme na dědičnost. V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.
Autor: Robert Habrman