2TX OO ontwerpen

Uit Diana's examenwiki

Algemeen

Vanaf 2019-2020

Dit vak wordt gegeven door Patrick Fox, die zijn vak erg goed beheerst. Er zijn twee sessies in de week: eenmaal een praktische zitting om aan de projecten te werken en eentje waarbij wat concepten uit het handboek verder besproken worden omdat die nodig zijn voor het succesvol uitwerken van het project.

Tegen het einde van het semester wordt er verwacht dat je in groep een programmeeropdracht uitvoert. Het project begint na de herfstvakantie en je krijgt enkel user stories en er wordt bij elke user story aangegeven waar/hoe je patronen moet toepassen. Hiervoor moet je ook een vrij uitgebreid verslag maken (met mooie UML). Dit project moet tegen de Kerstvakantie af zijn en staat op 25% van de punten. Tijdens het examen is er ook een theoriegedeelte dat ook meetelt voor 25%. Het praktijkgedeelte van het examen staat dus nog op 50%, volledig schriftelijk en gaat over het toepassen van de patronen (zie vragen laatste paar jaren).


Tot 2018-2019

Dit vak wordt o.a. gegeven door Patrick Fox, die zijn vak erg goed beheerst. Er zijn twee sessies in de week: eenmaal een praktische zitting om aan de projecten te werken en eentje waarbij wat concepten uit het handboek verder besproken worden omdat die nodig zijn voor het succesvol uitwerken van de projecten.

Doorheen het semester krijg je twee programmeeropdrachten die je in groep moet uit te voeren. Eén voor de herfstvakantie waarbij er steeds gezegd wordt waar/hoe je het patroon van die week moest toepassen. Dit project wordt op het einde nagekeken door Fox, maar staat niet op punten. Het tweede project begint na de herfstvakantie en je krijgt enkel use stories en je moet zelf zien waar/hoe je patronen wilt toepassen. Hiervoor moet je ook een vrij uitgebreid verslag maken (met mooie UML). Dit project moet tegen de Kerstvakantie af zijn en staat op 25% van de punten. Halverwege het semester is er ook een theorietest die ook meetelt voor 25%. Het examen in Januari staat dus nog op 50%, volledig schriftelijk, 3u de tijd en gaat over het toepassen van de patronen (zie vragen laatste paar jaren).

Januari 2020

Examen bestond uit 4 vragen en je had 2h30 tijd.

Vraag 1: (/2)

  • Gegeven: een stuk code
  • Welk principe wordt hier het meest geschonden en waarom?
  • Maak een UML die het beter zou doen (principle toepassen)

Vraag 2: (/3)

  • Gegeven: Tic-Tac-Toe verhaal
  • Maak UML met Observer & MVC
  • Geef een lijst met alle functies die worden uitgevoerd wanneer er op "increment" wordt gedrukt (in het eerste view)
  • Schrijf code van de eerste controller (die van het eerste view)

Vraag 3: (/5)

  • Gegeven: verhaal van een ATM en een statechart
  • Maak UML met als pattern State
  • Schrijf code van alle klassen, interfaces, ...

Vraag 4: (/5)

  • Gegeven: verhaal van een Fitnessabonnement
  • Maak UML met als pattern Decorator + uitbereiding korting met Strategy
  • Schrijf code voor de launcher (voor die specifieke situatie)

Januari 2018

Vraag 1

Gegeven code van een klasse om een bestand in te lezen per letter (character), code van een klassen om tekst (string) letter per letter uit te lezen, code van de launcher, een UML-diagram van het decorator-patroon. Men wilt bovenop het inlezen een bestand/tekst, deze kunnen manipuleren, zo bijvoorbeeld de tekst omzetten naar camelcase, spaties tussen iedere letter plaatsen, alle spaties verwijderen...

a) Ontwerp met behulp van het decorator-patroon een UML om dit te implementeren.

b) Schrijf de code can de nieuwe klassen uit

c) Schrijf de code van de launcher uit als je in de tekst eerst alle spaties wilt verwijderen, dan in camelcase wilt zetten en tenslotte tussen iedere letter een spatie wilt plaatsen (dit is een zin -> ditiseenzin -> Ditiseenzin ->D i t i s e e n z i n)


Vraag 2

Gegeven een UML-diagram voor het spel Tic-Tac-Toe, dat het MVC model volgt.

a) Welke patronen herken je in dit model? Benoem ze en zeg welke klassen er deel van uit maken

b) Duid voor iedere klasse aan of het Model, View of Controller is

c) Stel een user klikt een vak aan; Welke methodes worden er achter elkaar uitgevoerd, en welke klassen roepen deze methodes aan?


Vraag 3

Gegeven een stuk code, ruwweg de volgende:

   public class Compression {
 
       public void compress(List<File> files, File targetFile, String algorithm) {
           if (algortithm.equals("zip") {
               // Do ZIP compression
           } else if (algorithm.equals("rar") {
               // Do RAR compression
           } else {
               throw new IllegalArgumentException("Algorithm not found");
           }
       }
   }

a) Welk principe wordt hier het meest geschonden en waarom?

b) Hoe zou je dit oplossen? Teken een UML-diagram.

Januari 2017

1) Gegeven een uitleg en een uitgebreid UML van een  winkelapplicatie
  a) Geef twee patronen die in het compound patroon MVC gebruikt worden
  b) Duid deze aan op het UML
  c) Geef voor elke klasse van het UML aan of het Model, View or Controller deel is
  d) Stel een gebruiker besteld een product geef een lijst van de opeenvolgende klasse 
     en methodes die worden gebruikt om dit uit te voeren
       (en geef nummers aan in het UML)
2) Gegeven een uitleg, state chart diagram, een test en output van een poort in een metrostation. 
   Geef de code voor de toegangspoort en de states om de gegeven output van de test te krijgen.
   (Dit is ongeveer de opgave, maar herinner mij nt meer 100%: )
   Statechart: 
   OOO 2017 - State toegangspoort.jpg
   Test:
     ToegangsPoort poort = new Toegangspoort();
     poort.scan(new ToegangsBewijs(7));
     poort.doorlopen();
     //Geldig toegangsbewijs scannen en doorlopen
     poort.scan(new ToegangsBewijs(0));
     poort.doorlopen();
     //Geen beurten meer
     poort.doorlopen();
     //doorlopen zonder te scannen
     ToegansBewijs bewijs = new ToegangsBewijs(4);
     poort.scan(bewijs);
     poort.scan(bewijs);
     poort.doorlopen;
     //2 keer achter elkaar scannen
     poort.afsluiten();
     poort.scan();
  Output:
     "Geldig bewijs - Loop door"
     "Reiziger loopt door"
     "Geen beurten meer"
     "ALARM!"
     "ALARM!"
     "Geldig bewijs - Loop door"
     "Terugbetaling gebeurt"
     "Reiziger loopt door" (Denk dat dit een fout is, heb ook zo op het examen gezegd anders kun je
                            gewoon 2 keer scannen en gratis doorlopen)
     "Einde van de dag - aantal Reizigers: 4" (Is hoevaak er gescand is, maar eigenlijke aantal reizigers is 2,
                                               ook een fout denk ik...?)
     "Metrostation is dicht"
3) Gegeven een sort methode: 
     public Person [] sort(Person[] persons, String sortalgoritme, Comparator<Persons> comparator) {
            Person[] sortedpersons = persons;
            if (sortalgoritme.equals("Quick") {
                   //sort using quicksort algoritme }
            if (sortalgoritme.equals("Random") {
                   //sort using randomsort algoritme }
            return sortedPersons; 
     }
  a) Welk principe wordt hier het meest geschonden?
  b) Hoe zou je het beter doen en teken UML class diagram.

Januari 2016

Drie grote vragen.

Vraag 1 5 punten 1. Gegeven een vereenvoudigd UML van het spel 2048, uitleg over hoe de applicatie uitgebreid moet worden. 2. Gevraagd: Teken UML en leg uit over hoe volgende patronen hier specifiek toegepast kunnen worden en wat hun doel is. Observer, factory, state

Vraag 2 3 punten 1. Gegeven een uitleg over inlezen van tekstbestand, filteren, sorteren en uitprinten. Ook basisimplementatie van voorgaande gegeven. 2. Gevraagd: Schrijf de code van het Template en Strategy patroon dat hiervoor toegepast moet worden, dus strategy in template.

Vraag 3 3 punten 1. Gegeven vereenvoudigd UML over wiskundeoefeningen. 2. Gevraagd: Duid op het UML aan welke delen tot model, view en controller behoren. Toevoegen van een functie, pas de klassen die aangepast moeten worden aan.

Januari 2015

Drie grote vragen.

Vraag 1

1. MVC wordt een compound pattern genoemd (samengesteld patroon). Welke patronen bezit MVC? (niet gewoon het acroniem voluit schrijven)

2. Gegeven een onoverzichtelijk klassendiagram, duid voor elke klasse aan of deze bij model, view of controller hoort.

3. Een gebruiker drukt op een knop. Duid in dit klassendiagram aan elke stap die vervolgens wordt uitgevoerd en door welke klasse.

4. Schrijf deze stappen stap voor stap op.

Vraag 2

Een gebruiker vraagt een programma waarbij hij een even aantal getallen wilt ingeven en pas stopt bij een willekeurig getal. Deze lijst kan dan eventueel gemanipuleerd worden (sorteren, schudden, ...). Deze eventuele gemanipuleerde lijst kan dan wiskundige bewerkingen ondergaan bij het uitprinten (per paar van 2 optellen of aftrekken of vermenigvuldigen, ...). Een inleescode voor de lijst getallen is gegeven.

De vraag luidt: schrijf door middel van een template een implementatie van dit programma. Programma 1 moet dan gewoon inlezen en elk paar van 2 optellen. Programma 2 moet ze ook nog eens sorteren en langs achter beginnen om elk paar af te trekken. (voorbeeld output programma 2: rij getallen = 2 4 5 6 8 1 0 3 5 4, sorteren = 0 1 2 3 4 4 5 5 6 8, output = 2 0 0 1 1)

Vraag 3

Gegeven is een uitleg over een schaakprogramma met een beknopt klassendiagram. Men wilt het schaakprogramma uitbreiden, hiervoor wordt een tekst voorzien. Geef voor elk patroon in de tekst een UML en de motivatie.

Januari 2013

Er waren drie grote vragen en enkele kleinere vragen bij. De eerste vraag moest je een klassediagram verbeteren, de principes erop toepassen en patronen. De tweede vraag was rondom code en welke fouten erin stonden. Best kon je hiervoor een klassediagram maken om dan te zien wat er fout loopt. De derde vraag kreeg je een situatie en moest je gewoon het model gedeelte uitwerken in een klassediagram.

Januari 2012

  1. Gegeven: Situatieschets van een bedrijf waarvoor je een encryptiesoftware moet bedenken, die op drie verschillende manieren kan encrypteren/decrypteren.
    1. Ontwerp een klassendiagram (eigen implementatie)
    2. Som op welke principes/patterns je gebruikt hebt, en verduidelijk ze (Waar in de code? Hoe toegepast?)
  2. Gegeven: De klasse FitnessAbonnement van een plaatselijke fitness. Ze voorzien 3 extra's: groepslessen, DVDverhuur en frisdrank tijdens de fitness. Er is dan ook een methode voorzien om de prijs (met eventuele extra's) van het abonnement te berekenen.
    1. Geef aan welk design principle hier het meest geschonden wordt
    2. Welk design pattern kan dit probleem oplossen?
    3. Ontwerp een UML op basis van dat patroon
    4. Schrijf een paar regels code om jouw implementatie van de methode berekenPrijs() te verduidelijken
  3. Gegeven: een klassendiagram met een verduidelijkende tekst over de werking ervan.
    1. Som de aanpassingen ivm principes/pattern op die jij zou maken
    2. Voeg een gegeven externe klasse toe in het UML. Deze klasse komt van de opdrachtgever, en heeft dezelfde functionaliteit als jouw klassen, maar een andere naamgeving voor de methodes
    3. Moet de code worden aangepast om de externe klasse te implementeren? Verklaar.

Januari 2011

  1. Bespreek observer java built in en vergelijk met eigen inplementatie. Geef voor en nadelen./10
  2. Een opgave waar je je eigen UML moet maken, patterns meegeven en uitleggen waarom./20
  3. Collections. De 4 main dingen Queu, list, set, map /10
  4. Decorator typisch uml en per klasse uitleg geven/10
  5. Pseudo code verwerken met solid/10
  6. Java code ivm singleton synchronized/10

Januari 2009

Alle reeksen (08/01/09 8u30, P. Fox)

De vragen zijn redelijk uitgebreid op het examen, met wat code bij of UMLschema's daarom slechts de onderwerpen waarover de vragen gingen:

  1. Decorator pattern
  2. Template pattern
  3. Singleton pattern
  4. Naamloze implementatie van interface
  5. Oefeningen op patterns
  6. Collecties + oefeningen