Oppgave
Ta utgangspunkt i en beskrivelse av et system, sett fra brukerens perspektiv. Du kan bruke innledningen til et av eksemplene i læreboka, eller du kan lage noen brukerhistorier for et eksempel du velger selv
Bruk substantiv-verb-metoden til finne ut hvilke klasser og metoder du må ha for at systemet skal fungere. Ta med systembeskrivelsen og dokumentasjon av designet til foreleser eller hjelpelærer for godkjenning.
Kravspesifikasjon
Kassasystem for en butikk
Kassasystemet må ha mulighet for skanning av et ukjent antall varer, og må også håndtere retur av disse. Mulige betalingsmåter må være kort, kontant og faktura. Etter en endt transaksjon skal en kvittering skrives ut.
Kassen må ha mulighet for å avbryte en handel, og må også ha mulighet til å sjekke priser uten å avbryte hele handelen. Systemet må også kunne håndtere gavekort, opptil flere typer. Systemet skal også gi en tilbakemelding med prisen når varene blir skannet.
Brukerhistorier:
Pål har kommet inn i butikken og ønsker å reklamere på en vare, samtidig som han skal ha en ny. Kim tar imot kunden og bruker kassasystemet for å gjøre dette.
Gøril ønsker å kjøpe en vare og legger denne på disken. Jon tar henne imot i kassen og bruker kassasystemet for å fullføre handelen.
Per skal kjøpe en vare til sin bedrift, og ønsker derfor å betale med en faktura. Tone mottar varen i kassen og bruker kassasystemet for å fullføre denne handelen.
Dokumentasjon:
Ved å bruke verb/substantiv metoden kommer vi frem til følgende klasser og metoder:
Substantiv (Klasser)
Kassasystem
Vare
Kort
Kontant
Faktura
Transaksjon
Kvittering
Tilbakemelding
Etter litt filtrering og endring av navn kom jeg frem til følgende:
Kasse
Korrterminal
Betaling
Skanner
Display
Metoder:
Her har jeg valgt å bruke CRC-kort som et eksempel på noen av klassene.
(Trykk på bildet for å få det større)
Etter implementasjon ble det funnet ut at objektet betaling trengte flere funksjoner. Vi kan da ordne dette med et kjent design pattern, nemlig en Decorator.
Decorator-objektet legges «rundt» det gamle objektet, og det er nå Decorator objektet vi må snakke til når vi ønsker å få tak i betaling-objektet. Ønsker vi å få tak i betaling-objektet nå er vi nødt til å gjøre det igjennom Decorator-objektet.