Type systems

21 belangrijke vragen over Type systems

Wat is het verschil tussen parametrische polymorfie en inclusiepolymorfie?

Parametrische polymorfie houdt in dat functies een polymorf type kunnen hebben waarop de functie op een uniforme manier werkt.
Inclusiepolymorfie duidt op de vorm van polymorfie die ontstaat bij overerving in objectgeoriënteerde talen.
[C7.intro]

Wat wordt verstaan onder ad hoc-polymorfie?

Met de term ad hoc-polymorfie worden vormen van polymorfie bedoeld waarbij functies niet op een universele manier werken op een groep typen met een bepaalde structuur. De werking moet per type worden vastgelegd. Dit in tegenstelling tot bij universele polymorfie.
Voorbeelden van ad hoc-polymorfie zijn coërcie en overloading.
[C7.intro]

Welke vier vormen van polymorfie worden door Cardelli en Wegner onderscheiden?

  • Coërcie
  • Overloading
  • Parametrische polymorfie
  • Inclusiepolymorfie (overerving)
[C7.intro]
  • Hogere cijfers + sneller leren
  • Niets twee keer studeren
  • 100% zeker alles onthouden
Ontdek Study Smart

Noem drie vormen van subtypen in Ada

  • Subrangetype: de waarden van het subtype vormen een deelverzameling van de waarden van het supertype
  • Subtype van het arraytype: de array heeft een vaste indexverzameling
  • Subtype van een disjuncte vereniging: de waarde van het subtype zijn uit dezelfde verzameling afkomstig
[T8.1.1]

Wat wordt bedoeld als men zegt dat type T1 compatible is met type T2?

Hiermee wordt bedoeld dat T1 en T2 waarden gemeenschappelijk hebben. Dit is het geval als T1 een subtype is van T2, als T2 een subtype is van T1, of als T1 en T2 subtypen van hetzelfde type zijn.
[T8.1.1]

Wat is het verschil tussen subtypes en subklassen?

De objecten van een subklasse kunnen additionele attributen en methoden hebben en vormen dus geen deelverzameling van de objecten van de superklasse. Er is dus geen sprake van een subsetrelatie zoals bij subtypes.
[T8.1.2]

Wat is het essentiële verschil tussen typen van een disjuncte vereniging en klassen?

Klassen zijn in tegenstelling tot een disjuncte vereniging open-ended: met de definitie van nieuwe subklassen wordt de verzameling van objecten van het class wide-type automatisch uitgebreid.
Deze eigenschap wordt ook wel extensibility genoemd.
[T8.1.2]

Noem een programmeertaal die context-dependent overloading ondersteunt

  • Haskell
  • Ada
[T8.3]

Wat is een nadeel van context-dependent overloading?

Bij context-dependent overloading is het mogelijk om expressies te schrijven waarbij niet duidelijk is welke functie moet worden toegepast.
[T8.3]

Wat is het essentiële verschil tussen overloading en parametrische polymorfie?

Bij overloading is sprake van meerdere functies die dezelfde naam hebben, terwijl bij parametrische polymorfie sprake is van één functie die uniform werkt op verschillende typen argumenten.
[T8.3]

Wat wordt in relatie tot typeconversie verstaan onder een partial mapping?

Daarmee wordt bedoeld dat niet alle waarden uit de ene verzameling een tegenhanger hebben in de andere verzameling. Voor sommige waarden is dan geen typeconversie mogelijk.
[T8.4]

Wat is het essentiële verschil tussen een cast en coërcie?

Bij een cast is sprake van een expliciete conversie, terwijl bij coërcie een impliciete conversie plaatsvindt.
[T8.4]

Noem twee nadelen van coërcie ten opzichte van casts

  • Coërcie gaat niet goed samen met parametrische polymorfie en overloading
  • Coërcie is contextafhankelijk
[T8.4]

Noem een voordeel en een nadeel van overloading

Voordeel
  • Sluit aan bij het natuurlijk gebruik van taal, waarin eenzelfde begrip ook vaak meerdere toepassingen heeft
Nadeel
  • Het kost extra tijd om af te leiden welke functie toegepast moet worden (het proces van 'overloading-resolutie')
[C7.3]

Noem een voordeel en twee nadelen van contextafhankelijke overloading ten opzichte van contextonafhankelijke overloading

Voordeel
  • Contextafhankelijke overloading biedt meer flexibiliteit

Nadelen

  • Het kost meer tijd om af te leiden welke functie toegepast moeten worden
  • In sommige gevallen is het niet mogelijk om af te leiden welke functie moet worden toegepast
[C7.3]

Wat wordt bedoeld met contravariantie in de parameter van een functie?

Hiermee wordt bedoeld dat de ene functie een subtype is van de andere functie als het parametertype van de andere functie een subtype is van het parametertype van de ene functie:
Als S < T dan T -> U < S -> U
[C7.4]

Onder welke voorwaarden mag een methode in een subklasse worden geherdefinieerd opdat typeveiligheid statisch is gegarandeerd?

  • Het nieuwe resultaattype is een subtype van het oorspronkelijke resultaattype
  • Het nieuwe parametertype is een supertype van het oorspronkelijke parametertype
[C7.4]

Wat wordt bedoeld met een overloaded literal?

Een overloaded literal is een letterlijke waarde die op verschillende manieren getypeerd kan worden.
[C7.4]

In welk opzicht is het typesysteem van Java nadelig als we typecasts gebruiken?

Bij het gebruik van typecasts wordt de verantwoording bij de programmeur gelegd. Er vindt noch statische typecontrole noch dynamische typecontrole plaats.
[C7.4]

Wat is in Java het essentiële verschil tussen herdefinitie en overloading van methoden?

Er is alleen sprake van herdefinitie als noch het resultaattype noch het parametertype is gewijzigd. In alle andere gevallen is sprake van overloading.
Merk op dat bij herdefinitie als parametertype dus het type van de superklasse wordt verwacht.
[C7.4]

Geef een karakterisering van de waardenverzameling van een polymorf type

De waardenverzameling van een polymorf type is te karakteriseren als de doorsnede van alle waardenverzamelingen die uit het polymorfe type afleidbaar zijn. Met andere woorden: de waarden die alle afgeleide typen gemeenschappelijk hebben.
[C7.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