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
[C17.1]
Wat gebeurt er bij AOP met de aspecten tijdens compilatie van de code?
[C17.1]
- Hogere cijfers + sneller leren
- Niets twee keer studeren
- 100% zeker alles onthouden
Waarom is unit-testing lastiger bij AOP?
[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
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
Waarom kan Scala als multiparadigmataal worden beschouwd?
[C17.2.1]
Wat zijn de objectgeoriënteerde kenmerken van Scala?
[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
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.
In Scala kunnen variabelen worden gedeclareerd met het sleutelwoord val of var. Wat is het verschil?
[C17.2.1]
Wat is de betekenis van het sleutelwoord def in Scala?
[C17.2.1]
Welke functie hebben singleton-objecten in Scala?
[C17.2.1]
Wat gebeurt er bij de vertaling van een case-klasse door de compiler?
- 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
Naast klassen kent Scala traits. Wat zijn traits?
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?
[C17.2.1]
Hoe lost Scala conflicten op die door meervoudige overerving kunnen optreden?
[C17.2.1]
Wat wordt in Scala verstaan onder een dynamische mixin compositie?
[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
Scala kent twee modellen voor parallel programmeren: het concurrency-model en het actor-model. Wat is het verschil?
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?
[C17.2.3]
Wat is het verschil tussen thread-based actor en een event-based actor?
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)
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.
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
Noem twee voorbeelden van cross-cutting concerns
- Logging van wijzigingen in de personeelsadministratie
- Controle op autorisatie
Hoe kunnen we in Scala functies gebruiken als eersteklas waarden?
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
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