TI-S2

Objecten en waarden (title-id)

Inhoud

Klassen: objecten en waarden

Een C++ klasse kan verschillende ‘dingen’ implementeren:

Objecten

De klassieke OO implementatie van een klasse betreft meestal een object: het object heeft een identiteit, het is iets tastbaars of bestaands. Denk aan

Objecten vergelijken

De eigenschappen van een object kunnen in de loop van zijn bestaan veranderen, maar het object blijft hetzelfde object. Als je twee objecten vergelijkt, dan bedoel je (meestal): ‘zijn deze twee variabelen hetzelfde object’.

Objecten zitten vaak in een klasse hiërarchie:

alt text Figuur - UML voorbeeld van klasse student_assistent

Waarden

Een waarde is bijvoorbeeld

Kenmerken van een waarde

Waarden vergelijken

Als je twee waarden test op gelijkheid dan bedoel je of ze beiden dezelfde waarde bevatten, niet of ze dezelfde variabele zijn.

ADTs: waarden als klassen

Een waarde maakt doorgaans geen deel uit van een klasse hiërarchie, maar het kan toch nuttig zijn om een waarde als klasse te implementeren omdat je dan details van de implementatie kunt verbergen, en methoden en operaties kunt aanbieden.

Zo’n klasse noemt men een Abstract Data Type (ADT).

Objecten vs. ADTs

De typische eigenschappen van een object en een ADT staan in de volgende tabel naast elkaar.

Object ADT
Heeft een identiteit. Bevat een waarde.
Gelijkheid betekent hetzelfde object zijn. Gelijkheid betekent dezelfde waarde bevatten.
Maakt deel uit van een klasse hiërarchie. Staat op zich zelf.
Geen equality of andere vergelijkingen, geen operatoren. Heeft equality, mogelijk andere vergelijkingen, vaak operatoren.
Een basis klasse heeft een virtuele destructor, en vaak ook (veel) andere virtuele methoden. Niet bedoeld om van te erven.
Is zelden een constante. Constanten komen vaak voor.
Is vaak een fysiek ‘object’. Typisch voorbeeld: persoon. Is vaak iets meetbaars, en heeft vaak een eenheid. Typisch voorbeeld: kleur.
Bevat vaak referenties naar andere objecten. Is doorgaans ‘self contained’: bevat geen verwijzingen naar andere objecten.