Presentation laddar. Vänta.

Presentation laddar. Vänta.

1. Klädlådor ● I byrån finns en strumplåda och en kalsonglåda. Objektmodellera och ge exempel på användning. Strategi: 1.Ställ upp krav i textform 2.Omvandla.

Liknande presentationer


En presentation över ämnet: "1. Klädlådor ● I byrån finns en strumplåda och en kalsonglåda. Objektmodellera och ge exempel på användning. Strategi: 1.Ställ upp krav i textform 2.Omvandla."— Presentationens avskrift:

1 1. Klädlådor ● I byrån finns en strumplåda och en kalsonglåda. Objektmodellera och ge exempel på användning. Strategi: 1.Ställ upp krav i textform 2.Omvandla kraven till use cases 3.Hitta klasser, inkl domänklasser 4.Gör UML-diagram a)Sekvensdiagram b)Klassdiagram

2 1.Kunna öppna och stänga byrålådorna. 2.Kunna lägga in i och ta ut saker ur lådorna 3.Kunna ta ut två matchande strumpor Kraven i textform

3 Use case 1: Öppna byrålåda Precondition: Ingen a) Programmet skriver en lista med saker som användaren kan göra och ber denne välja ett alternativ genom att skriva numret för detta. b) Användaren väljer alternativet “Öppna byrålåda” c) Programmet frågar vilken låda som skall öppnas. d) Användaren skriver lådans nummer. e) Programmet ändrar lådans tillstånd till “öppen” och uppdaterar listan över möjliga alternativ. f) Programmet visar återigen en lista med alternativa handlingar och ber användaren välja en. Postcondition: Öppen byrålåda

4 Use case 2: Lägga in något i en byrålåda Precondition: Det finns en öppen byrålåda. a) Programmet visar en numrerad lista med alternativa handlingar för användaren. b) Användaren väljer “Lägga in något i byrålåda”. c) Programmet frågar i vilken låda något ska läggas. d) Användaren skriver lådans nummer. e) Programmet visar saker som kan läggas i lådan. f) Användaren väljer ett av alternativen. g) Programmet överför det valda från spelarens lista med saker till lådans och visar återigen en lista med handlingar och ber användaren välja en. Postcondition: Det finns något i en byrålåda.

5 Use case 3: Finn två matchande strumpor. Precondition: En öppen låda finns. a) Programmet visar en lista med alternativa handlingar och ber användaren välja en. b) Användaren väljer “Ta ut något ur byrålåda”. c) Programmet frågar vad som skall tas ut. d) Användaren väljer en strumpa. e) Programmet frågar efter en handling. f) Användaren väljer “Finn matchande strumpa”. g) Programmet letar igenom den öppna lådan efter en matchande strumpa. Ifall den inte hittar någon letar den igenom övriga lådor efter en matchande strumpa, vilken överförs till användaren. Postcondition:

6 ● Skriv upp alla substantiv i spelet: Strumpa, Kalsong, Sak, Spelare, Byrå, Låda a) Byrålåda är helt enkelt en vektor med saker b) Sak kan vara en egen klass, men strumpa och kalsong behöver inte vara egna klasser. c) Byrå har internt en vektor med lådor, en vektor med tillstånd öppet/stängt för lådorna. Klasser

7 användare:UI:Spel :Byrå :Låda taUtUrByrå () görAlt() {ta ut något} visa Låda () get() Be användare välja vad som ska tas ut görAlt() {välj sak} plocka () remove() Be användare välja alternativ görAlt() {välj handling} matchande Strumpa () visa Låda () plocka () UML I: Sekvensdiagram

8 Byrå +öppnaLåda (int n) : void +stängLåda (int n) : void +lägg(int låda, Sak sak) : void +plocka(int låda, int sakIndex):Sak +boolean[] lådaÖppen; 1 2 ArrayList lådor Sak +String namn; +String typ; +String färg; 1 * Huvudprogram Användar- gränssnitt Här kan “refactoring” löna sig UML II: Klassdiagram

9 /** Öppnar en låda * * Postcondition: låda n är öppen ifall n är ett tillåtet tal, annars * kastas ett undantag. */ public void öppnaLåda(int n) throws Lådundantag { if( n = 0 ) lådaÖppen[n] = true; else throw new Lådundantag(“Försök att öppna otillåten låda”); } Kodexempel: metoden öppnaLåda()

10 Tänka på:  XP eller full design? korrekthet och tillräcklighet  Korrekthet: Modularisera, kolla invariants  flexibilitet och återanvändbarhet.

11 ● Skapa en komponent med en rubrik och ett fält och som vid returtryckning kontrollerar att person- numret är rätt och fyller i bortglömt bindestreck. Strategi: 1 Ställ upp krav i textform 2 Omvandla kraven till use cases 3 Hitta klasser, inkl domänklasser 4 Gör UML-diagram a) Sekvensdiagram b) Klassdiagram 2: Personnummerfält

12 1. Grafisk komponent: Ovan en rubriklabel, under ett textfält. 2. Komponenten skall lyssna på händelser som returtryckning genererar. 3. Komponenten skall kontrollera att personnummer är rätt ifyllt. 4. I textfältet skall användaren bes fylla i personnummer samt upplysas om felaktigt personnummer. Kraven i textform

13 Use case 1: Fylla i personnummer Precondition: Ingen a) Användaren skriver in ett personnummer och trycker på retur. b) Personnummerrutan kontrollerar personnumret och fyller i eventuellt saknat bindestreck. Ifall personnumret är korrekt visas detta i textfältet. Annars visas en text med upplysning om felaktigt personnummer.

14 1. Use case innehåller klasserna Textfält, Personnummerruta 2. Dessutom innehåller kraven klasserna Rubriklabel, Lyssnare, Kontroll a) I en komplicerad situation kan det vara bra att ha en egen klass som svarar för kontroll/parsningav personnummer, här blir det en metod. b) Likaså behöver vi ingen speciell lyssnarklass, vi låter komponenten vara lyssnare också. Klasser

15 Användare textfält:JTextField :Person-nummerruta :Person-nummerruta (Lyssnare) {returtryckning} actionPerformed() parsaPNummer() setText() UML I: Sekvensdiagram

16 Panel Label Designmönstret “Observer” ObserverObservee Personnummerruta JTextField ActionEvent textfält UML II: Klassdiagram

17 ● Kylarna i butiken behöver ett planeringsprogram för att ta in lagom mycket varor. Objektmodellera! Skissa en simulering med programmet! Strategi: 1 Ställ upp krav i textform 2 Omvandla kraven till use cases 3 Hitta klasser, inkl domänklasser 4 Gör UML-diagram a) Sekvensdiagram b) Klassdiagram 3: Mejeriinköp

18 1. Det ska finnas varor med bäst-före-datum. 2. Det ska finnas en/flera kylar med en max-volym. 3. Programmet skall bestämma när man ska rensa. 4. Programmet skall ha tillgång till inköpsdata och produktdata. 5. Programmet skall kunna avgöra hur mycket man köper in av varan vid varje inköpstillfälle. 6. Programmet skall bestämma en lagom fyllnadsgrad i kylarna. 7. Programmet skall innehålla en databas av varor med karaktäristika. Kraven i textform

19 Use case 1: Lägga in vara Precondition: Ingen a) Användaren fyller i antal och typ av vara. b) Programmet fyller på kylen, samt visar uppdaterad databas alternativt protesterar mot otillåtna indata.

20 Use case 2: Rensa ut gammal vara Precondition: Ingen ● Användaren väljer vara och klickar på “rensa gammal”. ● Programmet rensar ut kyl på gamla varor och visar uppdaterade data.

21 Use case 3: planera inköp Precondition: Ingen a) Användaren väljer typ av vara samt klickar på planera inköp. b) Planeraren visar det antal varor som ska köpas.

22 1. Use case innehåller klasserna Kyl, Planerare, Databas, Vara 2. Dessutom innehåller kraven klasserna Databaspost, Lyssnare 3. Hjärnstorm visar att en kö behövs för varorna i kylarna. Dessutom behövs ett grafiskt gränssnitt. Klasser

23 Queue * Planerare (Lyssnare) > ArrayList varutyper; Vara Typ typ; String märke; double volym; Date bästFöre; GUI > Kyl +double fyllnadsgrad; +double önskadFyllnadsgrad; 1 1 * DatabasPost UML II: Klassdiagram

24 Välj ut något av de tidigare use cases och gör ett sekvensdiagram. Tänk på att: välja tydliga namn på metoder beskriva metoderna med pre- och postconditions och invariants Skapa ett sekvensdiagram

25

26


Ladda ner ppt "1. Klädlådor ● I byrån finns en strumplåda och en kalsonglåda. Objektmodellera och ge exempel på användning. Strategi: 1.Ställ upp krav i textform 2.Omvandla."

Liknande presentationer


Google-annonser