Göm menyn

TDP005 Projekt: Objektorienterat system

Designspec


Information kring designspecen

Designspecen ska beskriva hur ni tänker implementera ert spel. Det viktigaste innehållet i designspecen är ett klassdiagram, som visar den objektorienterade designen av spelet. Målet är att designen ska spegla den faktiska uppbyggnaden av spelet, men eftersom ni ännu inte har börjat implementera spelet så är det svårt att få med alla detaljer korrekt ännu. Därför är huvudfokus nu att klasshierarkierna ni beskriver kan representera spelet ni har beskrivit i kravspecifikationen, och att de viktigaste datamedlemmarna och medlemsfunktionerna finns med i ert klassdiagram. Exempelvis: var lagras objektets position på skärmen?, hur förflyttas objektet? och hur sköts kollisioner mellan objekt?. Ni kan göra era UML-diagram antingen i något verktyg, eller rita det för hand. Alla inlämningar ska dock ske i PDF-format om inget annat överenskommet med lärarna. Det ska inte behövas speciella verktyg för att öppna era dokument.

Er designspecifikation kommer att bedömas utifrån vilken kvalitet dokumentet håller, och hur väl det uppfyller punkterna nedan. Vi kommer även att rimlighetsbedöma er design så att ni har möjlighet att uppfylla bedömningskriterierna för den inlämnade koden, främst med avseende på rubriken Objektorienterad design.

  • Deadline: Se "Schema"
  • Innehåll:
    • Klassdiagram enligt UML som beskriver hela ert system. Diagrammet skall vara kommunikativt och beskriva hela systemets inre uppbyggnad och funktion. Klassdiagrammet ska innehålla alla relationer som finns mellan era klasser. För associationer ska det framgå vilken riktning samt multiplicitet relationerna har.
    • Detaljbeskrivning av två centrala klasser i ert spel. Den ena klassen som beskrivs ska vara den som motsvarar spelaren, den andra får ni välja själva. Detaljbeskrivningen ska innehålla följande:
      • Namn på klassen
      • Syftet med klassen
      • Vilka andra klasser som klassen har relationer till, och på vilket sätt de hänger ihop
      • En beskrivning av konstruktor(erna)
      • En beskrivning av de publika metoder som finns i klassen (get- och setmetoder kan exkluderas)
      • En beskrivning av variabler i klassen, och deras syfte
      För utkastet: Eftersom ni inte har skrivit särskilt mycket kod i projektet ännu, skriv detaljbeskrivningen utifrån frågeställningen: Hur är det tänkt att det här objektet interagerar med andra objekt i spelet? Hur kan spelaren veta när det exempelvis går in i en vägg?
    • En kort diskussion (1/2-1 sida) där ni motiverar er design och tar upp fördelar och nackdelar med den. Diskutera gärna också om det är något ni tycker är dåligt med den, och beskriv alternativa, bättre lösningar.
    • Beskriv de externa filformat ni använt i ert spel, till exempel för highscore-listor eller banbeskrivningar. Detta är kanske inte relevant för alla, då man kan lösa uppgiften utan användning av externa format. Detta innebär alltså att jag som programmerare ska kunna läsa beskrivningen och kunna förstå och göra ändringar i de filformaten som ni speciellt skapat. Man behöver alltså inte lista alla filformat (.txt, .cc, .h) etc. som finns i projektet. Utan om man har en fil som specificerar hur en bana ser ut, på ett visst format i spelet, vill vi veta hur den är uppbygd så att vi kan modifiera de existerande banorna och lägga till nya.

Inlämning

Designspecifikationen lämnas in via e-post till er handledare. Använd dokumentmallen för LaTeX (se Kursmaterial) och bifoga designspecifikationen som en PDF-fil.

För utkastet på designspecifikationen ligger fokus på den objektorienterade designen. Det viktigaste i dokumentet vid utkastet är att klassdiagrammet visar en genomtänkt design av de centrala delarna i spelet, samt att klassdiagrammet är förklarat tillräckligt noga så att vi förstår hur ni har tänkt och kan ge er feedback tidigt!

Exempel på designspecifikationer

De här exemplen kan ge en fingervisning om hur en snygg designspecifikation kan se ut, men bör inte ses som en fix mall som måste följas. Låt er inspireras!


Sidansvarig: Pontus Haglund & Simon Ahrenstedt
Senast uppdaterad: 2023-10-31