Generic abstraction

15 belangrijke vragen over Generic abstraction

Op welke wijze is generieke abstractie in Ada geïmplementeerd?

Ada kent generic procedures en generic packages die geparametriseerd kunnen worden met betrekking tot values en types.
Omdat Ada naamequivalentie voor typen gebruikt, zijn twee verschillende instanties van de generieke package altijd verschillende typen.
[T7.1.1] [T7.2.1]

Op welke wijze is generieke abstractie in Java geïmplementeerd?

Java kent generieke klassen die geparametriseerd kunnen worden met betrekking tot types (echter geen primitieve types). Bij instantiatie van de generieke klasse geven we als argument een klasse mee.
[T7.2.3]

Op welke wijze is generieke abstractie in Haskell geïmplementeerd?

Haskell kent typeklassen. Een typeklasse is een groep typen waarop bepaalde functies kunnen worden toegepast. Bij het instantiëren van een typeklasse moeten we de functies uit de typeklasse definiëren voor het nieuwe type.
[C14.4]
  • Hogere cijfers + sneller leren
  • Niets twee keer studeren
  • 100% zeker alles onthouden
Ontdek Study Smart

Noem twee voordelen van het gebruik van generieke modulen

  • Binnen een programma: vermijden duplicatie van code
  • In verschillende programma's: hergebruik van code
[T7.1]

Een C++ generieke klasse (class template) kan 'on the fly' worden geïnstantieerd. Welke twee problemen brengt dit met zich mee?

  • Conceptueel: generieke klassen kunnen wegens type-equivalentie niet geïnstantieerd worden met variabelen in plaats van waarden
  • Pragmatisch: het is mogelijk om meerdere klassen met dezelfde argumenten te instantiëren, terwijl één dezelfde klasse volstaat.
[T7.1.2]

Waarom wordt genericiteit in C++ als zwakker beschouwd dan in bijvoorbeeld Ada of Java?

C++ wordt wat genericiteit betreft als zwakker beschouwd omdat het niet mogelijk is voorwaarden te specificeren waaraan het parametertype moet kunnen voldoen (bijvoorbeeld de benodigde opreraties).
[C6.zelftoets]

Geef een voorbeeld van een generieke abstractie met betrekking tot een waarde

Een lijst die geparametriseerd is met betrekking tot de lengte van de lijst.
[T7.1]

Wat gebeurt er bij instantiatie van een generieke abstractie?

De formele parameters worden vervangen door de argumenten van de instantiatie.
[T7.1]

In welk opzicht is een generieke abstractie een toepassing van het abstractieprinicpe?

Een generieke module is een abstractie van een declaratie, waarbij de body van de generieke module de declaratie vormt. Bij instantiatie van de generieke module worden bindingen tot stand gebracht.
[T7.1]

In welk opzicht is een generieke abstractie een toepassing van het correspondentieprincipe?

Als een programmaonderdeel gebruik maakt van een type dat elders in het programma gedefinieerd is, dan moet het volgens het correspondentieprincipe mogelijk zijn om het programmaonderdeel te parametriseren met betrekking tot het betreffende type.
[T7.2]

Hoe wordt in Ada bereikt dat een typeparameter over de benodigde operaties beschikt?

De generieke package wordt niet alleen met een type, maar ook met de benodigde operaties geparametriseerd.
[T7.2.1]

Hoe wordt in C++ bereikt dat een typeparameter over de benodigde operaties beschikt?

Daar zijn geen voorzieningen voor. Als de typeparameter niet over de benodigde operaties beschikt treedt bij het vertalen van het programma een fout op.
[T7.2.2]

Hoe wordt in Java bereikt dat een typeparameter over de benodigde operaties beschikt?

Bij de typeparameter kan worden aangegeven dat het type een bepaalde interface moet implementeren.
[T7.2.3]

In Java kunnen klassen middels de constructor geparametriseerd worden met betrekking tot een waarde. Waarom kan een dergelijke constructie niet beschouwd worden als generieke klasse?

Een dergelijke constructie kan niet beschouwd worden als generieke  klasse omdat het niet mogelijk is om daarvan klasse-instanties te maken.  Alle instanties zijn van hetzelfde type, ongeacht de waarde die aan de  constructor wordt meegegeven.
[C6.2]

In Ada en C++ is het mogelijk een module te parametriseren met betrekking tot een waarde. Wat zijn de verschillen tussen beide talen?

In Ada kan een module tijdens verwerking worden geïnstantieerd door een declaratie. Doordat Ada naamequivalentie voor typen gebruikt, zijn twee verschillende instanties van de generieke module altijd van verschillende typen.
In C++ moet instantiatie tijdens vertaling geëvalueerd kunnen worden. Deze restrictie is nodig om type-equivalentie te kunnen bepalen.
[C6.zelftoets]

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