next up previous contents index
Next: Vytváření objektu Up: Metody instance Previous: Aktualizace   Obsah   Index

Konstruktor

Při vzniku objektu je obvykle vhodné definovat inicializační akci, která naplní jeho atributy hodnotami. Konstruktor je metoda mající stejné jméno jako třída. Předpokládejme následující příklad:

class osoba[rok_narozeni => integer;
pohlavi => char('M','F');
static soucet => integer default 0;
osoba(integer B) soucet is soucet + 1, rok_narozeni is B
osoba(integer B, char G) soucet is soucet + 1, rok_narozeni is B, pohlavi je G]

Výše definovaná třída má dva konstruktory mající různé vstupní hodnoty. Narozdíl od ostatních metod jsou konstruktory prováděny při vzniku objektu třídy. Mějme dotaz:

?-liz = new osoba(1950).

Vznikne nový objekt třídy osoba, je mu přiřazeno jméno liz a odpovídajícímu atributu je nastavena hodnota 1950, dále je pak zvýšen součet objektů ve třídě zavoláním konstruktoru. Všimněme si, že atribut pohlavi žádnou hodnotu nezískal. Systém přiřadí tomuto atributu implicitní hodnotu F. Ke změně hodnoty tohoto atributu musíme později použít delete a insert.

Není-li takový konstruktor ve třídě definován, je nutné použít následující dotaz a následnou aktualizaci k dosažení stejného výsledku.

?-liz = new osoba(). ?-liz.count is liz.count+1.

Uvědomme si, že Pluto provádí typovou kontrolu a také kontrolu konzistence. Mějme následující příklad:

?-pam = new osoba(1952,"Female") ?-liz.rok_narizeni is 1952

Systém zaprvé zahlásí, že "Female" není znak a zadruhé řekne, že liz má již atribut rok_narozeni naplněn.


next up previous contents index
Next: Vytváření objektu Up: Metody instance Previous: Aktualizace   Obsah   Index
Tomáš Kubíček 2002-05-19