[SE] Polymorfisme bij var records?
Posted: Thu May 31, 2007 8:07 pm
Uit den Arickx zenne cursus:
voorbeeld van een C++ class:
vergelijking met Oberon:
Hij heeft het dus over een variabele record als receiver te gebruiken in Oberon.
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!
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!