Transcript
Page 1: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

nextprevious

Innehåll

UML

–Till vad?

–Byggstenar

Olika typer av diagram

Att läsa

Läs Bruegge kapitel 2-2.3.5 och 2.4

OOMPA 2D1359 & 2D1360Föreläsning 2

Page 2: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 2

UML

UML• UML är ett språk

• UML är ett språk för att visualisera

• UML är ett språk för att specificera

• UML är ett språk för att konstruera

• UML är ett språk för att dokumentera

Page 3: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 3

UML

UML: konceptuell modell• UMLs byggstenar

– Saker• Strukturella

• Beteende

• Gruppering

• Noteringar

– Relationer• Beroenden

• Associationer

• Generaliseringar

• Relationer

– Diagram• Klassdiagram, objektdiagram, användningsfallsdiagram, interaktionsdiagram

(sekvens- och samarbetsdiagram), tillståndsdiagram, aktivitetsdiagram, komponentdiagram, leveransdiagram

Page 4: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 4

UML

Strukturella saker

Klass Gränssnitt Samarbete

Användningsfall

Aktiv klass Komponent

Nod

Window

open()close()move()display()

originsize

ISpellingChain of

responsibility

Place order

EventManager

suspend()flush()

Server

orderform.java

Page 5: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 5

UML

Beteendemässiga, grupperande och noterande saker

Meddelande

Tillstånd

display

Waiting

Paket

Notis

Business rules

return copyof self

Page 6: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 6

UML

Relationer i UML

Beroende

Generalisering

Association

Realisering

*

employee

0..1

employer

Page 7: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 7

UML

Användningsfallsdiagram

Sätt gränser

Analyserarisker

Prisför-handla

Slutavtal

Värdera

Uppdaterakonto

Gränsernaöverskridna

«uses»

«uses»

Handlare

användningsfall

aktör

Chefsförhandlare

Försäljare

Redovisnings-system

«extends»

Page 8: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 8

UML

Klassdiagram

Person

name : Stringaddress : String

*Company

name : Stringaddress : Stringemployee employer

rollnamn

multiplicitet

klassnamn

attribut

association

Page 9: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 9

UML

...Klassdiagram

Shape

bounds() :Rectangledraw() : voidextent() : Point

position : Point

Shape1

draw() : void

extent : Point

Shape2

draw() : void

extent : Point

ComposedShape

bounds() :Rectangledraw() : void

b = new Rectangle();for all p in parts do b = b.merge(p.bounds());return b;

parts

*

return new Rectangle(position, extent());

operationer

aggregat

arv

metod/pseudokod

Page 10: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 10

UML

Sekvensdiagram

Page 11: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 11

UML

... Sekvensdiagram

Page 12: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 12

UML

Tillståndsdiagram: exempel

Page 13: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 13

UML

Aktivitet [Villkor-a]

Aktivitet Aktivitet

Aktivitet

Aktivitetsdiagram, notation

[Villkor-b] [villkor-d]

[villkor-c]

^objekt.Meddelande

[synkroniserings-villkor]

*för alla

Page 14: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 14

UML

Hitta dryck [inget kaffe]

Kaffe i filtret Häll i vatten Hämta koppar

Filtret i bryggarenHämta cola

Slå på bryggaren

Brygg

Häll upp kaffe

Exempel: "Person::ordna dryck"

Drick

[kaffe hittat] [cola hittat]

[ingen cola]

slå av lampan

^kaffepanna.slåPå

Page 15: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 15

UML

Exempel: klocka

WatchUser WatchRepairPerson

ReadTime

SetTime

ChangeBattery

PaketSimpleWatch

Användningsfallsdiagram

Page 16: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 16

UML

Batteryload()

1

2

Timenow()

PushButtonstatepush()release()

1

1

1

1

1

2

blinkIdxblinkSeconds()blinkMinutes()blinkHours()stopBlinking()referesh()

LCDDisplay

SimpleWatch

Klassdiagram

Page 17: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 17

UML

...

blinkHours()

blinkMinutes()

incrementMinutes()

refresh()

commitNewTime()

stopBlinking()

pressButton1()

pressButton2()

pressButtons1And2()

pressButton1()

:WatchUser:Time:LCDDisplay:SimpleWatch

Sekvensdiagram

Page 18: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 18

UML

...

button1&2Pressed

button1&2Pressed

button1Pressed

button2Pressed

button2Pressed

button2Pressed

button1Pressed

button1&2Pressed IncrementMinutes

IncrementHours

BlinkHours

BlinkSeconds

BlinkMinutes

IncrementSeconds

StopBlinking

Tillståndsdiagram

Page 19: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 19

UML

Klass• En klass är en uppsättning objekt med gemensam

struktur, gemensamt beteende, gemensamma relationer och gemensam semantik

• Klasser hittas hittas genom att användningsfall, sekvensdiagram, samarbetsdiagram och CRC-kort analyseras och används

• En klass ritas i UML som en rektangel med tre olika delar

• Klasser skall helst namnges med hjälp av den vokabulär som används i den aktuella domänen

Page 20: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 20

UML

Klassdiagram• centralt i i stort sett alla objektorienterade metoder• beskriver dom olika typerna av objekt i systemet samt deras

inbördes statiska relationer

• ett klassdiagram visar två olika typer av statiska relationer– subtyper

• en bil är ett fordon

– associationer• en bil har en ägare

• ett klassdiagram visar också klassernas– attribut– operationer– restriktioner på hur olika objekt kan förbindas

Page 21: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 21

UML

Klassdiagram: notation

Klassnamn

attribut : Typ = initialtVärde

operation(argumentlista) : returTyp

Klassnamn

Klass

GeneraliseringSupertyp

Subtyp1 Subtyp2

superklass (basklass)

subklass (härledd klass)

klassbox, lång form

klassbox, kort form

Page 22: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 22

UML

Klass: attribut• Strukturen av en klass representeras av attribut• Attributen kan hittas genom att utforska

klassdefinitioner, från kravspecifikationen och med hjälp av domänkunskap

CourseOffering

numberlocationtime

Varje kurs har ett nummer, en plats där den genomförs och en tid då den går

Varje kurs har ett nummer, en plats där den genomförs och en tid då den går

Page 23: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 23

UML

Exempel: Klassen Person med två instanser

Person

name : Stringage : Integer

: Personname = Lisa

age = 23

: Personname = Kalle

age = 25

KlassKlass

InstanserInstanser

Rita en klass Person med hjälp ava) ett klassdiagram med attributen name: String och age: Integerb) två instanser av klassen

Rita en klass Person med hjälp ava) ett klassdiagram med attributen name: String och age: Integerb) två instanser av klassen

Page 24: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 24

UML

Exempel: Färgat geometriskt objekt, med defaultvärden

FärgatObjekt

color : Color = rödposition : Point = (10, 10)

geo1: FärgatObjektcolor = röd

position = (10, 10)

geo2: FärgatObjektcolor = röd

position = (30, 50)

defaultvärden

Rita ett klassdiagram med med ett geometriskt objekta) där defaultvärdet för färgen är röd och för positionen är (10, 10)b) "rita" också två instanser

Rita ett klassdiagram med med ett geometriskt objekta) där defaultvärdet för färgen är röd och för positionen är (10, 10)b) "rita" också två instanser

eget namn(frivilligt)

Page 25: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 25

UML

Exempel: klassen Point med två instanser

Page 26: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 26

UML

Arv• Arv är en relation mellan en superklass och dess

subklasser• Det finns två huvudtyper av arv

– generalisering

– specialisering

• Gemensamma attribut, operationer och/eller relationer brukar skrivas så högt upp i hierarkin som möjligt

Page 27: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 27

UML

Exempel: Generalisering

Person

Student

courses : Vectorgroup : String

Teacher

courses : Vectorsalary : Money

Konstruera ett klassdiagram med två subklasser Student och Teacher med superklassen Person.Konstruera ett klassdiagram med två subklasser Student och Teacher med superklassen Person.

Page 28: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 28

UML

Association

Klass

Klass

Klass

Klass

Multiplicitet

Klass BKlass Aroll A

roll B

1

*

0..1

m..n

exakt en

noll eller flera

noll eller en

numeriskt specificerad

Page 29: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 29

UML

Relationer mellan klasser• Relationer mellan klasser kan hittas genom att

samarbetsdiagram undersöks– Om två objekt behöver utbyta information måste en väg för

informationsutbyte finnas

• Ett annat sätt är att CRC-kort används för att identifiera samarbete

Page 30: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 30

UML

Exempel: association

Person

Antag att en Person har precis ett jobb men att ett företag kan ha noll eller flera anställda personer. Gör ett klassdiagram över detta.Antag att en Person har precis ett jobb men att ett företag kan ha noll eller flera anställda personer. Gör ett klassdiagram över detta.

Company1*

Person

Sätt ut lämpliga rollnamn på associationerna i diagrammet.Sätt ut lämpliga rollnamn på associationerna i diagrammet.

Company1*

employee employer

Person

Inför i diagrammet att varje person kan ha noll eller en chef och att varje chef kan ha noll eller flera underställda.Inför i diagrammet att varje person kan ha noll eller en chef och att varje chef kan ha noll eller flera underställda.

Company1*

employee employerboss

0..1

* worker

Page 31: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 31

UML

En association kan ha ett namn

Person Company1*

employee employerboss

0..1

* worker

Manages

Works-for

För att förtydliga kan vi sätta ut riktningFör att förtydliga kan vi sätta ut riktning

Person Company1*

employee employerboss

0..1

* worker

Manages

Works-for

namn

Page 32: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 32

UML

Användningsfall (eng. Use Case)

• Jacobson 1992• Har snabbt utvecklats till en populär teknik• Fokusering på användaren• Enkel teknik som låter användaren delta på ett tidigt

stadium• Ger analytikern möjlighet att på ett tidigt stadium

uppmärksamma specifika behov hos användaren• Passar bra vid inkrementell lösningsprocess• Utifrån och in

Page 33: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 33

UML

Vad är det?

• Jacobson beskriver Use Case så här:A behaviourally related sequence of interactions performed by an actor in dialogue with the system to provide some measurable value to the actor.

• Beskriver ett sätt att använda systemet• Tekniken kan användas för alla typer av system• Funktionaliteten hos systemet ska ge något av värde för

användaren• Ska inte vara för detaljerat

Page 34: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 34

UML

...

• Användningsfall– är en mall för en sekvens av interaktioner mellan en aktör och ett system

Användningsfall

Aktör

• Aktör– människa eller annat system

– kommunicerar med ett system, vilket kan beskrivas med ett användningsfall

Page 35: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 35

UML

Användningsfallsdiagram

Sätt gränser

Analyserarisker

Prisför-handla

Slutavtal

Värdera

Uppdaterakonto

Gränsernaöverskridna

«includes»

«includes»

Handlare

användningsfall

aktör

Chefsförhandlare

Försäljare

Redovisnings-system

«extends»

Page 36: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 36

UML

Arbetsgång

• Identifiera aktörer

• Identifiera användningsfall– beskriv informellt– beskriv i tabellform– beskriv i diagramform– vidareutveckla detaljer– undersök relationer mellan olika användningsfall

Page 37: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 37

UML

Exempel: Banksystem

Kontouttag

Överföring

InsättningKund Banksystem

Page 38: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 38

UML

...användningsfallet kontouttag• När kund sätter in kort i bankomaten, läs koden från kortet och

kontrollera dess giltighet

• Om kortet ok så begär 4-siffrig kod av kunden. Om fyra siffror matats in så fortsätt annars mata ut kortet

• Kontrollera koden. Om koden giltig så fråga efter typ av transaktion annars mata ut kortet.

• När kunden valt kontantuttag, fråga efter belopp

• ....

Page 39: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 39

UML

Användningsfall kan ordnas i hierarkier

Kontouttag Överföring Insättning

Korttransaktion

«includes»

Hjälp

«extends»

«includes»«includes»

Page 40: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 40

UML

Hello world-exempel

import java.awt.Graphics;class Hello extends java.applet.Applet {

public void paint(Graphics g) {g.drawString(”Hallå!”, 10, 10);

}}

Page 41: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 41

UML

… Hello klassdiagram ...

Hello

paint()g.drawString(”Hallå!”, 10, 10);

Page 42: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 42

UML

… Hello ...

Hello

paint() Graphics

Applet

Page 43: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 43

UML

… Hello ...

Hello

Applet

Panel

Container

Component

Object

ImageObserver

Page 44: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 44

UML

java

… Hello paketering ...

Hello applet

awt

lang

Page 45: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 45

UML

… Hello sekvensdiagram ...

:Thread :Toolkit :ComponentPeer target:Hello

run

run

callbackLoop

handleExpose paint

Page 46: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 46

UML

… Hello komponenter

Hello.class-------------------------

Hello.java

-------------------------

Hello.html

-------------------------

Hello.jpg

Page 47: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 47

UML

Kvalifikationer

Employee Company1*

number

Employee Company1

number

En vanlig association där ett attribut unikt definierar det associerade objektet i mängdenEn vanlig association där ett attribut unikt definierar det associerade objektet i mängden

En kvalifikation är ett attribut för association. En kvalifikation särskiljer ett visst associerat objekt ur mängden av associerade objekt.En kvalifikation är ett attribut för association. En kvalifikation särskiljer ett visst associerat objekt ur mängden av associerade objekt.

Page 48: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 48

UML

Exempel: kvalifikationer

Person

Bank

0..1

account #*

File

Directory

1

filename

Till varje möjligt kontonummer finns noll eller en innehavare. Varje person kan inneha flera kontonummer

Till varje möjligt kontonummer finns noll eller en innehavare. Varje person kan inneha flera kontonummer

Inom en katalog finns en fil med ett visst namn

Inom en katalog finns en fil med ett visst namn

Page 49: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 49

UML

Exempel: fler associationer

a) Rita ett klassdiagram där ett land associeras med en huvudstadb) Gör ett instansdiagram med följande associationer (Sverige, Stockholm) och (Norge, Oslo)

a) Rita ett klassdiagram där ett land associeras med en huvudstadb) Gör ett instansdiagram med följande associationer (Sverige, Stockholm) och (Norge, Oslo)

Countrycapital

1

:City:Country

name : String

City

name : String

name= Sverige name = Stockholm

:City :Country

name= Norge name = Oslo

1

1

Page 50: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 50

UML

Länkattribut

Det är ofta naturligare att placera informationen om en viss relation i associationen än hos någon av dom associerade objekten.Vi kan lägga till attribut, operationer och andra finesser till associationen mha ett så kallat länkattribut eller associerad klass

Det är ofta naturligare att placera informationen om en viss relation i associationen än hos någon av dom associerade objekten.Vi kan lägga till attribut, operationer och andra finesser till associationen mha ett så kallat länkattribut eller associerad klass

associerad klass

Page 51: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 51

UML

Aggregat• Ett specialfall av association där relationen kan ses som

en sammansättning ("består av")

Document Paragraph*

Line*

Figure*

1

1

1

Page 52: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 52

UML

Exempel: aggregat

Component

Composite

*

Leaf1 Leaf2

Shape

Group

1..*

Rectangle Ellipse

Page 53: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 53

UML

Exempel: aggregat och operationer• Det är vanligt att operationerna propageras från helheten

till delarna.

Document

print

Paragraph Line

Figure

print print

print

* *

*

1

1 1

Page 54: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 54

UML

Riktade associationer• För att förtydliga relationer kan riktade associationer användas

genom att en pil används

• Om man inte sätter ut pil så säger inte UML om associationen är enkel eller dubbelriktad– Detta får man själv (inom projektet) bestämma

• Riktad association med pil– En riktad association utrycker att klassen vid pilens start har ansvar för

relationen med klassen vid pilspetsen

– Man kan navigera från A till B men inte från B till A

A B

A B* 1

class B {private A _assocA;}class A {public B _assocB;}

class B {private Vector _assocA;}

Page 55: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 55

UML

Exempel: riktad association

*Subject

attach(Observer)detach(Observer)notify()

Observer

update()for all o in observers{ o.update()}

observers

ConcreteObserver

observerState

update()

ConcreteSubject

subjectState

getState()

subject1

Page 56: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 56

UML

Restriktioner• För att förtydliga eller reglera en klass beteende kan

restriktioner användas– en restriktion är ett villkor som skrivs inom ett par måsvingar, {}

Order

dateReceivedisPrepaidnumber: Stringprice : Money

dispatch()close()

Customer

nameaddress

creditRating() : String

* 1

{if Order.customer.creditRating is "poor"then Order.isPrepaid must be true}

Page 57: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 57

UML

… restriktioner

Polygon Point3..*

{ordered}

Contains

AccountPerson

{or}

Corporation

• Restriktioner kan också anges för associationer

boss

{salary <= boss.salary}

Employee

salary

0..1

*

Page 58: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 58

UML

Exempel: restriktioner

Page 59: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 59

UML

Aggregat som komposition

Page 60: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 60

UML

Modifierare

Klassnamn

+publikt_attribut#protected_attribut-privat_attributklassvariabel

+publik_operation()#protected_operation()-privat_operation()klassmetod()

visibility name : type-expression = initial-value { property-string }där visibility någon av:

+ public visibility (dvs alla kan använda det)# protected visibility (dvs endast synlig i klassen eller dess subklasser)- private visibility (endast synlig i klassen)understruken betyder klassmetoder och attribut

om visibility inte sätts ut betyder det bara att den inte visas (inte att denär privat eller publik)

Page 61: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 61

UML

Exempel: modifierare

Person

# name : String# dateOfBirth : Date- pinCode : Integer

+ name() : String+ age() : Integer+ equals(Person) : boolean# name(String)+ create(name : String, dateOfBirth : Date) : Person- hashCode() : Integer

Page 62: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 62

UML

Högre ordningens associationer

Page 63: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 63

UML

Exempel: högre ordningens association

Supplier

Customer

Shipment

Part

Quantity

*

*

*

Page 64: Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa

previous next 64

UML

Härledda attribut och associationer