Object-oriented programming

20 belangrijke vragen over Object-oriented programming

Noem vier sterke punten van de taal C++

  • De taal is compatible met de taal C
  • C++ is een veelgebruikte taal voor zowel systeem- als applicatieprogramma's
  • Er is een betere typecontrole dan in C
  • De taal ondersteunt inclusiepolymorfie (overerving) en overloading
[C13.opgave 13.1]

Noem vier zwakke punten van de taal C++

  • Berekeningen met pointers zijn mogelijk. Dit maakt typecontrole lastig en kan tevens tot onverwachte resultaten leiden.
  • Abstractie van gegevens wordt ondermijnd door andere voorzieningen van de taal.
  • De taal ondersteunt meervoudige overerving, een controversieel concept.
  • C++ is een hybride taal, zowel imperatief als objectgeoriënteerd
[C13.opgave 13.1]

Noem vijf sterke punten van de taal Java

  • Java heeft geen onveilige of onvoorspelbare voorzieningen.
  • Berekeningen met pointers zijn onmogelijk
  • Onbereikbare objecten worden automatisch verwijderd.
  • De taal ondersteunt inclusiepolymorfie, overloading en parallel en gedistribueerd programmeren.
  • Java heeft een rijke bibliotheek
[C13.opgave 13.2]
  • Hogere cijfers + sneller leren
  • Niets twee keer studeren
  • 100% zeker alles onthouden
Ontdek Study Smart

Noem drie zwakke punten van de taal Java

  • Verwerking van programmacode is traag.
  • Tot 2004 was er geen ondersteuning voor generieke abstracties.
  • Dynamic linking is in strijd met statische typecontrole.
[C13.opgave 13.2]

Noem zes verschillen tussen een generieke package (Ada) en een OO-klasse

In telegramstijl:
  • Statische creatie vs. dynamische creatie van instanties
  • Statische scoping vs. dynamische dispatch van procedurenamen
  • Niet/wel overerving
  • Niet/wel te gebruiken als argument of resultaat van een operatie
  • Omgeving volledig gefixeerd vs. omgeving bepaald door ontvangende object
  • Wel/niet mogelijk om variabelen rechtstreeks toegankelijk te maken
[C13.zelftoets opgave 3a]

Noem twee overeenkomsten tussen een generieke package (Ada) en een OO-klasse

  • Zowel in een generieke package als in een klasse worden geëxporteerde functies en procedures (methoden) en verborgen variabelen (attributen) gedefinieerd.
  • Zowel van een generieke package als van een klasse kunnen instanties worden gecreëerd met hun eigen verzameling functies en procedures (methoden) en variabelen (attributen).
[C13.zelftoets opgave 3b]

Noem twee verschillen tussen de architectuur van een imperatief programma en de architectuur van een objectgeoriënteerd programma

  • Binnen een objectgeoriënteerd programma kan sprake zijn van subklassen;
  • Een puur objectgeoriënteerd programma bestaat volledig uit klassen.
[T12.2]

Wat is in C++ het verschil tussen een instance variable en een class variable?

Voor een instance variable geldt dat elk object van de klasse een eigen kopie van de variabele heeft, terwijl van een class variable maar één kopie bestaat die door alle objecten van de klasse gedeeld wordt.
[T12.3.5]

Wat is in C++ het verschil tussen een instance method en een class method?

Een instance method is gekoppeld aan een object en werkt alleen op dat object. Een class method is niet gekoppeld aan een object en heeft dus ook geen toegang tot de instance variables van objecten.
[T12.3.5]

Waarom is dynamic linking in Java niet veilig?

Dynamic linking in Java is niet veilig omdat Java statische typecontrole toepast. Er is geen garantie dat de runtime-omgeving gelijk is aan de omgeving waarbinnen de typecontrole is uitgevoerd.
[T12.4.7]

Noem twee inconsistenties in het ontwerp van Java

  • Java gebruikt copy semantics voor primitieve waarden en (in effect) reference semantics voor objecten
  • Omdat primitieve waarden geen objecten zijn, kunnen primitieve waarden niet gebruikt worden in methoden die op objecten werken. Om dit toch mogelijk te maken zijn wrapper-klassen en wrapping coercion geïntroduceerd.
[T12.4.1]

Hoe kan een cartesisch product worden gemodelleerd in Java?

Het cartesisch product S x T kan in Java gemodelleerd worden met een klasse met twee attributen, één van type S en één van type T.
[C13.4]

Hoe kan een disjuncte vereniging worden gemodelleerd in Java?

De disjuncte vereniging S + T kan in Java gemodelleerd worden door klasse S en klasse T beide als subklasse van een gemeenschappelijke (abstracte) klasse te declareren.
[C13.4]

Waarom biedt een OO-taal van nature een meer volledige parametrisering van de omgeving waarop een methode effect heeft dan een imperatieve taal?

In een imperatieve taal kan de omgeving slechts met betrekking tot individuele variabelen geparametriseerd worden, via het mechanisme van uitvoerparameters.
De omgeving van een methode in Java wordt volledig bepaald door het ontvangende object, zodat via de objectreferentie alle bindingen van namen aan entiteiten gedefinieerd worden.
[C13.5]

Wat is het kenmerkende verschil tussen functies en methoden?

Voor functies geldt statische scoping (de functieaanroep wordt tijdens de vertaling gekoppeld aan de functiedefinitie) en voor methoden geldt dynamische dispatch (de functieaanroep wordt tijdens verwerking gekoppeld aan de functiedefinitie).

[C13.7]

Wat is een virtuele functie zoals we die aantreffen in de C++?

Een virtuele functie is een methode de dynamisch wordt aangeroepen. Een dergelijke functie wordt gedefinieerd door middel van het sleutelwoord virtual.

Een virtuele functie kan in een subklasse worden geherdefinieerd. Het aantal en het type van de parameters moet dan hetzelfde zijn.

[C13.7]

Hoe wordt inclusiepolymorfie toegepast in C++?

C++ ondersteunt inclusiepolymorfie met dien verstande dat een object uitsluitend behandeld kan worden als object van zijn superklasse indien het object benaderd wordt via een pointer.

[T12.3.5]

Hoe wordt inclusiepolymorfie toegepast in C++?

In C++ kan een object van een subklasse uitsluitend worden beschouwd als object van zijn superklasse als naar het object wordt verwezen met een pointer.
[C13.zelftoets]

Door het toestaan van variabeledeclaraties in OO-packages wordt de parametrisering van de omgeving waarop een methode effect heeft minder volledig. Leg uit waarom.

Alle klassen in een package behoren tot de scope van de declaraties in die package. In een methode van zo'n klasse zijn eventuele variabelen die in de package zijn gedeclareerd dus rechtstreeks toegankelijk. De omgeving waarop de methode effect heeft is dan niet meer beperkt tot het ontvangen object.
[C13.zelftoets]

Mogen we in C++ in een subklasse een methode definiëren met dezelfde naam als een virtuele functie in een superklasse, maar met andere parametertypen?

Ja, dat mag. De definitie geldt dan echter niet als herdefinitie van de methode in de superklasse, zodat er geen dynamische dispatch plaatsvindt. Het gedeclareerde type bepaalt welke methode wordt aangeroepen.
De methode wordt in de subklasse als overloaded functie beschouwd.
[C13.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