Laboration 5

I denna laborationen ska ni fortsätta på den lösning ni gjort i laboration 3 och 4. Målet är att undersöka hur ni har använt, och kan använda, design patterns för att lösa designproblem.

Design-uppgifter

Uppgift A

Användargränssnittet ni utgick från i laboration 4 var en implementation av model-view- -controller, men där gränsdragningen mellan model, view, controller och applikation inte var något vidare genomtänkt.

Vilka avvikelser från MVC-idealet kan ni identifiera i det ursprungliga användar- gränssnittet? Vad borde ha gjorts smartare, dummare eller tunnare?

Vilka av dessa brister åtgärdade ni med er nya design från laboration 4? Hur då?

Vilka brister åtgärdade ni inte? Rita ett UML-diagram som beskriver en förbättrad design med avseende på MVC.

(Det ursprungliga gränssnittet finns kvar i git-repot där ni hittade det)

Uppgift B

Välj åtminstone fyra av de övriga design patterns ni sett i kursen: Factory, Facade, Template, Adapter, Module, Composite, Iterator, Observer, Strategy, State. För vart och ett av de design patterns ni valt, svara på följande frågor:

Ni bör i första hand välja design patterns som låter er svara “ja” på någon av de två frågorna ovan. Om ni inte hittar fyra som går att använda, förklara för de ni väljer som inte går att använda varför de inte skulle förbättra er design.

Programmerings-uppgifter

Uppgift C

Implementera de möjliga designförbättringar ni identifierat i uppgift A och B.

Uppgift D

Implementera funktionalitet för att lägga till och ta bort bilar via GUI:t. För att göra det behövs ändringar i både view och controller — gör genomtänkta beslut om vilka förändringar som ska hamna var.

Skapa en “Add car” och en “Remove car”-knapp med följande funktionalitet:

Frivilliga BONUS-uppgifter

Bonus-uppgift E

Anti-patterns är design patterns onda tvillingbröder: vanligt återkommande mönster som inte löser problem utan skapar dem. Läs på lite om vilka anti-patterns det brukar talas om:

https://en.wikipedia.org/wiki/Anti-pattern#Software_engineering

Kan ni identifiera någon användning av anti-patterns i er design eller kod? Fanns det någon användning av anti-patterns i det ursprungliga användargränssnittet, som ni åtgärdat med er nya design?

Bonus-uppgift F

Gör så att man kan välja vilken bil man vill ta bort genom att markera bilarna, så att de blir “highlightade”.

Bonus-uppgift G

Gör ett spel av er simulator, komplett med poäng och 2-spelarfunktionalitet.

Menu