voorbeeld van een C++ class:
Code: Select all
class time
{
public:
time(); // constructor!
void set_time(int const, int const, int const);
void print_time_universal();
void print_time_standard();
Code: Select all
In de strikte zin noemen we dit in Oberon-2 jargon geen “echte klasse”, om de eenvoudige reden dat we steeds afgesproken hebben dat een object in Oberon-2 aangewezen moet worden via een pointer. Niets weerhoudt er ons echter van om bovenstaande klasse ook in Oberon-2 te gebruiken! Echter zal men geen polymorfisme kunnen toepassen op dergelijke constructie (waarom??)!
Het is toch mogelijk om een record "Class" te maken en dan als volgt een procedure te maken:
PROCEDURE (VAR receiver: Class) Test(getal: INTEGER)
Het is dan toch ook mogelijk om "Class" uit te breiden tot "ClassExt" en dan deze procedure te maken:
PROCEDURE (VAR receiver: ClassExt) Test(getal: INTEGER)
Dit werkt dus perfect, een super-call en type-guards ook, maar dit is dan toch geen polymorfisme... ?
Enlighten me!