1 kl dl dor n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
1. Klädlådor PowerPoint Presentation
Download Presentation
1. Klädlådor

Loading in 2 Seconds...

play fullscreen
1 / 26

1. Klädlådor - PowerPoint PPT Presentation


  • 129 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '1. Klädlådor' - toyah


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
1 kl dl dor
1. Klädlådor
  • I byrån finns en strumplåda och en kalsonglåda. Objektmodellera och ge exempel på användning.

Strategi:

  • Ställ upp krav i textform
  • Omvandla kraven till use cases
  • Hitta klasser, inkl domänklasser
  • Gör UML-diagram
    • Sekvensdiagram
    • Klassdiagram
slide2

Kraven i textform

Kunna öppna och stänga byrålådorna.

Kunna lägga in i och ta ut saker ur lådorna

Kunna ta ut två matchande strumpor

slide3

Use case 1: Öppna byrålåda

Precondition: Ingen

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.

Användaren väljer alternativet “Öppna byrålåda”

Programmet frågar vilken låda som skall öppnas.

Användaren skriver lådans nummer.

Programmet ändrar lådans tillstånd till “öppen” och uppdaterar listan över möjliga alternativ.

Programmet visar återigen en lista med alternativa handlingar och ber användaren välja en.

Postcondition: Öppen byrålåda

slide4

Use case 2: Lägga in något i en byrålåda

Precondition: Det finns en öppen byrålåda.

Programmet visar en numrerad lista med alternativa handlingar för användaren.

Användaren väljer “Lägga in något i byrålåda”.

Programmet frågar i vilken låda något ska läggas.

Användaren skriver lådans nummer.

Programmet visar saker som kan läggas i lådan.

Användaren väljer ett av alternativen.

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.

slide5

Use case 3: Finn två matchande strumpor.

Precondition: En öppen låda finns.

Programmet visar en lista med alternativa handlingar och ber användaren välja en.

Användaren väljer “Ta ut något ur byrålåda”.

Programmet frågar vad som skall tas ut.

Användaren väljer en strumpa.

Programmet frågar efter en handling.

Användaren väljer “Finn matchande strumpa”.

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:

slide6

Klasser

  • Skriv upp alla substantiv i spelet:

Strumpa, Kalsong, Sak, Spelare, Byrå, Låda

  • Byrålåda är helt enkelt en vektor med saker
  • Sak kan vara en egen klass, men strumpa och kalsong behöver inte vara egna klasser.
  • Byrå har internt en vektor med lådor, en vektor med tillstånd öppet/stängt för lådorna.
slide7

UML I: Sekvensdiagram

användare :UI :Spel :Byrå :Låda

görAlt()

{ta ut något}

visa

Låda()

taUtUrByrå()

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()

slide8

UML II: Klassdiagram

1

2

1

*

ArrayList

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;

Sak

+String namn;

+String typ;

+String färg;

lådor

Huvudprogram

Användar-

gränssnitt

Här kan “refactoring” löna sig

slide9

Kodexempel: metoden öppnaLåda()

/** Ö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 < antalLådor && n >= 0 )

lådaÖppen[n] = true;

else

throw new Lådundantag(“Försök att öppna otillåten låda”);

}

slide10

Tänka på:

  • XP eller full design? korrekthet och tillräcklighet
    • Korrekthet: Modularisera, kolla invariants
  • flexibilitet och återanvändbarhet.
slide11

2: Personnummerfält

  • 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

slide12

Kraven i textform

Grafisk komponent: Ovan en rubriklabel, under ett textfält.

Komponenten skall lyssna på händelser som returtryckning genererar.

Komponenten skall kontrollera att personnummer är rätt ifyllt.

I textfältet skall användaren bes fylla i personnummer samt upplysas om felaktigt personnummer.

slide13

Use case 1: Fylla i personnummer

Precondition: Ingen

Användaren skriver in ett personnummer och trycker på retur.

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.

slide14

Klasser

1. Use case innehåller klasserna

Textfält, Personnummerruta

2. Dessutom innehåller kraven klasserna

Rubriklabel, Lyssnare, Kontroll

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.

Likaså behöver vi ingen speciell lyssnarklass, vi låter komponenten vara lyssnare också.

slide15

UML I: Sekvensdiagram

Användare textfält:JTextField :Person-nummerruta :Person-nummerruta

(Lyssnare)

{returtryckning}

actionPerformed()

parsaPNummer()

setText()

slide16

UML II: Klassdiagram

Panel

Label

Personnummerruta

textfält

JTextField

ActionEvent

Designmönstret

“Observer”

Observer Observee

slide17

3: Mejeriinköp

  • 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

slide18

Kraven i textform

Det ska finnas varor med bäst-före-datum.

Det ska finnas en/flera kylar med en max-volym.

Programmet skall bestämma när man ska rensa.

Programmet skall ha tillgång till inköpsdata och produktdata.

Programmet skall kunna avgöra hur mycket man köper in av varan vid varje inköpstillfälle.

Programmet skall bestämma en lagom fyllnadsgrad i kylarna.

Programmet skall innehålla en databas av varor med karaktäristika.

slide19

Use case 1: Lägga in vara

Precondition: Ingen

Användaren fyller i antal och typ av vara.

Programmet fyller på kylen, samt visar uppdaterad databas alternativt protesterar mot otillåtna indata.

slide20

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.
slide21

Use case 3: planera inköp

Precondition: Ingen

Användaren väljer typ av vara samt klickar på planera inköp.

Planeraren visar det antal varor som ska köpas.

slide22

Klasser

Use case innehåller klasserna Kyl, Planerare, Databas, Vara

Dessutom innehåller kraven klasserna Databaspost, Lyssnare

Hjärnstorm visar att en kö behövs för varorna i kylarna. Dessutom behövs ett grafiskt gränssnitt.

slide23

UML II: Klassdiagram

Kyl

+double fyllnadsgrad;

+double önskadFyllnadsgrad;

Queue

1

*

Vara

Typ typ;

String märke;

double volym;

Date bästFöre;

*

Databas

Post

1

Planerare (Lyssnare)

<<singleton>>

ArrayList varutyper;

GUI

<<singleton>>

skapa ett sekvensdiagram

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