Objekt-orienterad Programmering och Design (2018)

Laborationer

Under kursen kommer ni att genomföra två laborationer och en inlämningsuppgift. Laborationerna är av programmeringskaraktär, och redovisas muntligen under laborationspassen. Inlämningsuppgiften är en analys av kod, och ska lämnas in skriftligen.

Både laborationerna och inlämningsuppgiften görs i grupper om tre personer. Har ni särskilda skäl för att avvika från detta antal, prata med Niklas eller Johannes. Se till att de grupper ni bildar är välbalanserade avseende kunskapsnivå, och att ni funkar tillsammans vad gäller arbetssätt.

Laboration 1 - Arv och dynamisk bindning

Laboration 2 - MVC och design patterns

Inlämningsuppgift: Analys av existerande kodbas

Syftet med denna uppgift är att applicera era analys-färdigheter på kod som inte är artificiellt konstruerad för ändamålet (dvs till skillnad från koden i lab 2). I synnerhet är det följande lärandemål som är relevant för laborationen:

Inlämningsuppgiften görs i grupp precis som de föregående delarna.

Steg 1: Identifiera kodbas

Hitta en sammanhängande kodbas att utgå ifrån, hur spelar (nästan) ingen roll. Det kan vara något publikt bibliotek ni hittar på t ex GitHub, något ur Javas standardbibliotek, en kodbas ni skrivit själva tidigare (som är rimligt relevant och håller vettig kvalitet), etc. Det enda kravet är att det inte är kod som tagits från undervisningsmaterial (e.g. i kurs från GU eller Chalmers, annat universitet, Coursera, el dyl). Rimlig storlek är 10-20 classes/interfaces, men det är inget hårt krav. Huvudsaken är att den valda kodbasen låter er utföra resten av uppgifterna. Prata med oss (Niklas och Johannes) om ni är osäkra på om den kodbas ni tänker er är lämplig.

Steg 2: Beskriv kodbasen med ett UML-diagram

Rita ett UML-diagram som beskriver de klasser/interfaces, samt relationer mellan dessa, som finns i er valda kodbas. Gör en avvägning kring relationer till externa klasser/interfaces (dvs klasser/interfaces som inte är en del av kodbasen); ta me de relationer som känns viktiga för att klargöra kodbasens design, utelämna de som inte gör det. Gör liknande avvägningar för konstruktorer och för privata fält och metoder (men default bör vara att ha med dem).

Steg 3: Analysera kodbasens design

Analysera kodbasen utifrån de principer vi diskuterat i kursen. Peka ut sådant som bryter mot någon av principerna - sådant finns garanterat, medvetet eller omedvetet gjort - och förklara hur det bryter mot principen i fråga. Identifiera och förklara (minst) tre olika användningar av design patterns vi tagit upp i kursen. Rekommendera förbättringar av kodens design, och motivera era rekommendationer med hänvisning till våra principer.

Betygskriterier för inlämningsuppgiften

Övergripande gäller att vi enbart avser de design-mönster som tagits upp i kursen, och som nämns i manuset för muntan, när vi refererar till design-mönster nedan.


Uppdaterad: 9 March 2018 av Niklas Broberg