Data abstraction

22 belangrijke vragen over Data abstraction

Noem twee belangrijke eigenschappen van modules.

  • Modifiable: een module kan onafhankelijk van andere programmacomponenten gewijzigd worden;
  • Reusable: dezelfde module kan in verschillende programma's gebruikt worden.

[T6.1]

Drie vormen van modules zijn packages, abstract types en classes. Wat is het verschil?

Een package is een verzameling gedeclareerde entiteiten met een gemeenschappelijk doel.

Een abstract type is een module die een verborgen type exporteert, samen met een verzameling operaties op dat type. Een abstract type is in feite een abstractie van een type.

Een klasse is een verzameling objecten met dezelfde attributen en methoden die op deze attributen werken. Een klasse ontstaat door toepassing van het abstractieprincipe op objecten.

[T6.intro]

Wat is in Ada het verschil tussen de package specification en de package body?

In de package specification (ook wel package declaration genoemd) worden de publieke componenten van de package gedeclareerd.

In de package body worden de private componenten van de package gedeclareerd. De package body bevat tevens de implementatie van de gedeclareerde (publieke en private) entiteiten.

[T6.1]

  • Hogere cijfers + sneller leren
  • Niets twee keer studeren
  • 100% zeker alles onthouden
Ontdek Study Smart

Noem twee voordelen van encapsulation van een variabele.

  • De representatie van de variabele kan gewijzigd worden zonder dat de programmacode aangepast hoeft te worden;
  • De toegang tot de variabele via publieke methoden verloopt gecontroleerd.

[T6.1]

Wat is het verschil tussen een Ada package en een Java package?

Ada packages kunnen gezien worden als modules. Binnen een Ada package worden verschillende entiteiten gedeclareerd met een gemeenschappelijk doel.

Java packages kunnen uitsluitend klasse- en interfacedeclaraties en subpackage-definities bevatten en zijn een hulpmiddel om naamsconflicten binnen klassedeclaraties te vermijden.

[C5.1]

 

Bevat een Ada package altijd een package body?

Nee, dat hoeft niet. Als binnen een package bijvoorbeeld uitsluitend constanten gedeclareerd worden, dan kunnen de implementatiedetails achterwege blijven.

[C5.1.2]

Noem drie problemen die kunnen optreden als een module een publiek type bevat.

  • De applicatiecode kan de representatie van het type direct benaderen. Als de representatie gewijzigd wordt, dan moet de applicatiecode ook gewijzigd worden.
  • De representatie van het type kan in een ongeldige toestand komen; wijzigingen kunnen buiten de standaardoperaties om ongecontroleerd plaatsvinden.
  • De representatie van het type is niet gegarandeerd uniek, zodat een vergelijking van twee gelijke types een verkeerde uitkomst kan geven.

[T6.2]

Wat is in Ada het verschil tussen een private type en een limited private type?

Een private type kent naast de operaties die in de package zijn gedefinieerd ook een aantal standaardoperaties (bijv. de vergelijkingsoperator).

Een limited private type kent uitsluitend de operaties die in de package zijn gedefinieerd.

[T6.2]

De operaties die op een abstract type kunnen worden uitgevoerd, kunnen worden onderverdeeld in drie groepen. Welke zijn dit?

  • Constructors: berekent een nieuwe waarde van het type, zonder gebruik te maken van een bestaande waarde van het type.
  • Transformers: berekent een nieuwe waarde van het type en maakt daarbij gebruik van een bestaande waarde van het type.
  • Accessors: berekent op basis van een bestaande waarde van het type een waarde van een ander type.

[T6.2]

Wat wordt in objectgeoriënteerde talen verstaan onder een constructor?

Een constructor is een methode die object van een bepaalde klasse creëert en eventueel initialiseert.

[T6.3.1]

Wat wordt in objectgeoriënteerde talen verstaan onder een methode?

Een methode is een operatie die een bestaand object inspecteert en/of wijzigt.

[T6.3.1]

Stel dat we in Java twee objecten met precies dezelfde attribuutwaarden hebben. Als we deze met de standaard vergelijkingsoperator vergelijken, blijkt dat de objecten niet gelijk zijn. Hoe is dit te verklaren?

Java past bij vergelijking van objecten reference semantics toe. Dit houdt in dat niet de objecten, maar de referenties naar de objecten worden vergeleken.

[T6.3.1]

Hoe wordt in C++ het verschil gemaakt tussen de private en de publieke componenten van een objectklasse?

In C++ bestaat een klassedeclaratie uit twee componenten: een private-component (aangeduid met het keyword private) en een public-component (aangeduid met het keyword public).

[T6.3.1] 

Abstracte typen en klassen hebben gemeen dat de variabelen van een type private zijn en uitsluitend gewijzigd kunnen worden via daartoe bestemde operaties. Noem vier verschillen tussen abstracte typen en klassen.

  • De creatie van een verborgen variabele gebeurt bij abstracte typen door declaratie en bij klassen door instantiatie van de klasse.
  • De initialisatie van verborgen variabele gebeurt bij abstracte typen door een geëxporteerde operatie en bij klassen tijdens de instantiatie van de klasse.
  • Bij abstracte typen wordt het verborgen type als argument aan de geëxporteerde operaties meegegeven.
  • Klassen kennen, in tegenstelling tot abstracte typen, de concepten van subklassen en overerving. 

[C5.3]

Objectgeoriënteerde talen kennen het concept van subklassen. Wat houdt dit in?

Een subklasse is een verzameling objecten met de attributen en methoden uit de superklasse plus een aantal eigen attributen en methoden. Daarnaast is het mogelijk dat een of meer methoden uit de superklasse zijn geherdefinieerd.

[T6.3.2]

Wat wordt bedoeld met dynamic dispatch?

Dynamic dispatch houdt in dat tijdens verwerking aan de hand van het actuele type van een object wordt bepaald welke versie van een (overridden) methode moet worden uitgevoerd.

Dynamic dispatch is alleen nodig als een methode overridable is en als het actuele type van een object bij het vertalen nog niet bekend is.

[T6.3.2]  

 

Wat houdt de toegangsaanduiding protected in?

Een protected component is zichtbaar binnen de eigen klasse, binnen de package en binnen de subklassen van de klasse.

[T6.3.2]

Wat wordt bedoeld als een methode overridable is?

Als een methode overridable is betekent dit dat het mogelijk is om de methode binnen een subklasse te herdefiniëren.

In Java is elke methode die niet als final is gedeclareerd overridable.

In C++ is elke methode die als virtual is gedeclareerd overridable.

[T6.3.2]

In welke twee opzichten verschilt een abstracte klasse van een gewone klasse?

  • Een abstracte klasse heeft geen constructor.
  • Een abstracte klasse kan abstracte methoden bevatten.

[T6.3.3]

Bij multiple inheritance kan een klasse meerdere superklassen hebben. Welk probleem brengt dit met zich mee?

Als een klasse van verschillende superklassen verschillende versies van dezelfde methode erft, dan is niet duidelijk welke versie van de methode toegepast moet worden.

[T6.3.3]

Wat wordt in verband met de declaratie van klassen bedoeld met het begrip interface?

Een interface is een verzameling abstracte methoden die elke klasse die de interface implementeert moet definiëren.

Een klasse kan meerdere interfaces implementeren. Interfaces vormen dus in zekere zin een alternatief voor multiple inheritance.

[T6.3.3]

Wat is het verschil tussen information hiding en encapsulation?

Information hiding is het verbergen van implementatiedetails van de geëxporteerde entiteiten.

Encapsulation is het opslaan van verschillende entiteiten in een module, waarbij onderscheid wordt gemaakt tussen publieke componenten en private componenten die de publieke componten implementeren.

De vragen op deze pagina komen uit de samenvatting van het volgende studiemateriaal:

  • Een unieke studie- en oefentool
  • Nooit meer iets twee keer studeren
  • Haal de cijfers waar je op hoopt
  • 100% zeker alles onthouden
Onthoud sneller, leer beter. Wetenschappelijk bewezen.
Trustpilot-logo