A Blue programozási nyelv

Objektum-orientált programozás

Öröklődés

Az öröklődés arra használható, hogy egy már létező osztályt specializáljunk. Ezeket a specializációkat a superclass (vagy "szülő") alosztályának (vagy "gyerekének") nevezzük.

Alosztályok definiálása

Az osztályok más osztályok alosztályai lehetnek. A szülő osztályokat az osztálydefiníció fejlécébe kell beírni.


Példa:
class Car is Vehicle == az auto osztály definicíója ... end class

Az alosztály minden rutint és változót örököl a szülőtől. Az egyetlen kivétel a létrehozó rutin.

Egy örökölt interface rutin nem lehet rejtett (azaz nem lehet az interface-ből eltávolítani).

Átdefiniálás

A gyerekben átdefiniálható az örökölt rutin implementációja. Ezt a rutin fejlécébe írt redefined kulcsszóval tehetjük meg. Az átdefiniált függvény paraméterlistája az eredetiével megegyező kell, hogy legyen. A paraméterlista cseréje illegális.

Néha szükséges egy átdefiniált rutin eredetijét meghívni. Ez a super!rutinnév hivatkozással érhető el. (Gyakori használata a szülő létrehozó rutinjának meghívása).


Példa:
class Student is Person ... interface creation (name:String, dob:Date, sid:Integer) is == a Student osztaly egy peldanyanak letrehozasa do super!creation(name, dob) student_num:=sid end creation ... end class

A rutin implementációját nem szükséges mindig a definiáláskor megadni. Ha a deferred kulcsszót használjuk, akkor ez azt jelenti, hogy a rutin implementációját nem akarjuk megadni (befagyasztott rutin). Azokat az osztályokat, melyeknek legalább egy rutinja befagyasztott, absztrakt osztályoknak nevezzük. Absztrakt osztálynak nem lehet létrehozni példányát. Az absztrakt osztályok gyerekeinek kell tartalmaznia a befagyasztott rutin implementációját. Ha nem tartalmazzák az implementációt, maguk is absztrakt osztályok lesznek.