Andere paradigma's en concepten

28 belangrijke vragen over Andere paradigma's en concepten

Noem drie voorbeelden van talen waarin meerdere programmeerparadigma's gecombineerd worden

  • Scala: objectgeoriënteerd en functioneel programmeren
  • C++: imperatief en objectgeoriënteerd programmeren
  • Ada: imperatief, parallel en objectgeoriënteerd programmeren

Noem de drie typen advices die bij AOP onderscheiden worden

  • Before
  • After
  • Around
Deze differentiatie is nodig om aan te geven op welk moment de code van de advice bij een joint point uitgevoerd moet worden.
[C17.1]

Wat gebeurt er bij AOP met de aspecten tijdens compilatie van de code?

De compiler creëert class-files die de advice code bevatten en integreert deze class-files in de programmacode bij de joint points die gespecificeerd zijn in de point cuts.
[C17.1]
  • Hogere cijfers + sneller leren
  • Niets twee keer studeren
  • 100% zeker alles onthouden
Ontdek Study Smart

Waarom is unit-testing lastiger bij AOP?

Unit-testen is gericht op het testen van de functionaliteit van de code. Vóór de integratie met de aspecten kan de code goed getest worden, terwijl na de integratie met de aspecten de code zich totaal anders kan gedragen. Dit is van belang omdat aspecten later in de tijd toegevoegd kunnen worden.
[C17.1]

Geef drie nadelen van AOP

  • Het is moeilijker om fouten te detecteren
  • Unit-testing is lastiger omdat de code zich voor- en na integratie met aspecten anders kan gedragen
  • Adoptie van AOP wordt vertraagd door de lange leercurve
[C17.1]

Geef drie voordelen van AOP

  • Het is mogelijk om met minder grote ingrepen nieuwe eigenschappen aan een bestaand systeem toe te voegen;
  • Het is mogelijk om een systeem modulair te ontwerpen en op te bouwen;
  • Als toolbox: het is mogelijk om een serie testen uit te voeren op een bestaand systeem, zonder de oorspronkelijke code aan te hoeven passen
[C17.1]

Waarom kan Scala als multiparadigmataal worden beschouwd?

Scala is een taal die zowel functioneel als objectgeoriënteerd programmeren ondersteunt.
[C17.2.1]

Wat zijn de objectgeoriënteerde kenmerken van Scala?

Scala is een objectgeoriënteerde taal in de zin dat elke waarde een object is.
[C17.2.1]

Noem drie syntactische verschillen wanneer we Scala vergelijken met Java

  • In Scala hoeft het type van de elementen niet opgegeven te worden
  • Scala kent geen expliciete returnopdracht; de laatste expressie geldt als terugkeerwaarde
  • In Scala kan de terugkeerwaarde Unit (void) worden weggelaten
[C17.2.1]

Aan welke kenmerken is functionele programmacode in Scala te herkennen?

  • Het gebruik van onveranderbare variabelen (toegangsspecificatie val)
  • Samengestelde variabelen zijn eveneens onveranderbaar
  • Iteratie wordt geprogrammeerd met behulp van resursie en lijstcomprehensies
  • Functies hebben een waarde (geen Unit) als terugkeerwaarde en de terugkeerwaarde is onveranderbaar.
[C17.2.2]

In Scala kunnen variabelen worden gedeclareerd met het sleutelwoord val of var. Wat is het verschil?

Met de toegangsspecificatie var wordt een veranderbare variabele gecreëerd, terwijl de toegangsspecificatie val een onveranderbare variabele oplevert.
[C17.2.1]

Wat is de betekenis van het sleutelwoord def in Scala?

Het sleutelwoord def markeert een methodedefinitie waarvan de implementatie uit één expressie of één blok bestaat.
[C17.2.1]

Welke functie hebben singleton-objecten in Scala?

Singleton-objecten vervangen klasseatributen en klassemethoden, aangezien een klasse in Scala geen static-elementen bevat.
[C17.2.1]

Wat gebeurt er bij de vertaling van een case-klasse door de compiler?

De compiler voegt het volgende toe aan de case-klasse:
  • Een constructorfunctie om instanties te creëren
  • Attributen met get-methoden. De attributen worden afgeleid uit de parameters en zijn onveranderbaar.
  • Een implementatie van de methoden toString, hashCode en equals
[C17.2.1]

Naast klassen kent Scala traits. Wat zijn traits?

Traits zijn vergelijkbaar met interfaces en abstracte klassen, en spelen een rol bij mixin compositie.
Anders dan bij een interface kan een trait attributen en implementatie van methoden hebben.
Anders dan bij een abstracte klasse kan een trait géén constructor met parameters hebben.
[C17.2.1]

Mixin compositie is een vorm van meervoudige overerving, maar is niet hetzelfde. Wat is het verschil?

Het type van de superklasse wordt telkens bepaald wanneer een trait gemengd wordt met een klasse of een andere trait. Bij een trait is het type van de superklasse dus niet bekend op het moment dat de trait gedefinieerd wordt.
[C17.2.1]

Hoe lost Scala conflicten op die door meervoudige overerving kunnen optreden?

De trait die het laatst genoemd wordt overschrijft eventuele methoden van de traits en klassen ervoor.
[C17.2.1]

Wat wordt in Scala verstaan onder een dynamische mixin compositie?

Hiervan is sprake als traits pas tijdens het instantiëren van een klasse gemengd worden.
[C17.2.1]

Welke tien functionele concepten zijn in Scala aanwezig?

  • Onveranderbare variabelen
  • Geen neveneffecten
  • Lijstcomprehensie
  • Functies als eersteklas waarden
  • Currying
  • Partiële parametrisatie
  • Hogere-orde functies
  • Patroonherkenning
  • Closures
  • Lazy evaluatie
[C17.2.2]

Scala kent twee modellen voor parallel programmeren: het concurrency-model en het actor-model. Wat is het verschil?

Het concurrency-model gaat uit van een gemeenschappelijk geheugen.
Het actor-model gaat uit van een gedistribueerd geheugen, waarbij gecommuniceerd wordt met asynchrone berichten door middel van message passing.
[C17.2.3]

Wat is een actor zoals bedoeld in het actor-model?

Actors zijn parallelle processen die communiceren door berichten uit te wisselen. Een actor beslist welke actie wordt ondernomen na het ontvangen van een bericht. Een actor heeft een mailbox (buffer) waarin de berichten voor de actor worden geplaatst.
[C17.2.3]

Wat is het verschil tussen thread-based actor en een event-based actor?

Bij thread-based actors wordt elke actor in een aparte thread uitgevoerd.
Bij event-based actors is het gedrag van de actor gedefinieerd in event handlers.
Thread-based actors zijn eenvoudiger maar minder efficiënt dan event-based actors.
[C17.2.3]

Waaraan kan men functionele programmacode in Scala herkennen?

  • Variabelen zijn onveranderbaar (toegangsspecificatie val)
  • Datastructuren zijn onveranderbaar (subklassen van scala.collection.immutable)
  • Iteratie met behulp van recursie en lijstcomprehensie (geen teller-variabelen)
  • Functies hebben een onveranderbare terugkeerwaarde (geen Unit)
[C17.zelftoets]

Wat zijn de vier sleutelbegrippen van AOP?

  • Aspect: abstractie van programmacode die een cross-cutting concern definieert.
  • Advice: code die een concern implementeert.
  • Join point: punt in een programma in uitvoering waar de advice geassocieerd met een concern uitgevoerd zou moeten worden.
  • Pointcut: opdracht binnen een aspect die aangeeft welke join points aan het aspect gekoppeld moeten worden.
[C17.virtuele klas]

Wat zijn de zes sleutelbegrippen van Scala?

  • Sleutelwoorden val (onveranderbare waarde) en var (veranderbare variabele)
  • Singleton-object (ipv. static element van Java)
  • Companion-object: singleton-object met dezelfde naam als een klasse
  • Case-klasse: klasse die de parameters van haar constructor exporteert in de kop van de klasse
  • Trait: interface, maar met attributen en implementatie van methoden (geen constructor)
  • Mixin compositie: combinatie van een klasse en een trait mbv. sleutelwoorden class en with
[C17.virtuele klas]

Noem twee voorbeelden van cross-cutting concerns

  • Logging van wijzigingen in de personeelsadministratie
  • Controle op autorisatie
[C17.1]

Hoe kunnen we in Scala functies gebruiken als eersteklas waarden?

We kunnen functies gebruiken als gewone objecten.
Met het sleutelwoord val in combinatie met de naam van de functie kunnen we een onveranderbare variabele declareren die een functieobject is.
[C17.2.2]

Welke vier methoden heeft de trait Actor en waar worden deze methoden voor gebruikt?

  • start: om een actor te starten
  • act: wordt binnen start aangeroepen
  • receive: lezen en afhandelen bericht door een thread-based actor
  • react: lezen en afhandelen bericht door een event-based actor
[C17.2.3]

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