Upload
marvel
View
67
Download
2
Embed Size (px)
DESCRIPTION
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 & 2D1360 Föreläsning 2. 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 - PowerPoint PPT Presentation
Citation preview
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
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
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
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
previous next 5
UML
Beteendemässiga, grupperande och noterande saker
Meddelande
Tillstånd
display
Waiting
Paket
Notis
Business rules
return copyof self
previous next 6
UML
Relationer i UML
Beroende
Generalisering
Association
Realisering
*
employee
0..1
employer
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»
previous next 8
UML
Klassdiagram
Person
name : Stringaddress : String
*Company
name : Stringaddress : Stringemployee employer
rollnamn
multiplicitet
klassnamn
attribut
association
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
previous next 10
UML
Sekvensdiagram
previous next 11
UML
... Sekvensdiagram
previous next 12
UML
Tillståndsdiagram: exempel
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
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å
previous next 15
UML
Exempel: klocka
WatchUser WatchRepairPerson
ReadTime
SetTime
ChangeBattery
PaketSimpleWatch
Användningsfallsdiagram
previous next 16
UML
…
Batteryload()
1
2
Timenow()
PushButtonstatepush()release()
1
1
1
1
1
2
blinkIdxblinkSeconds()blinkMinutes()blinkHours()stopBlinking()referesh()
LCDDisplay
SimpleWatch
Klassdiagram
previous next 17
UML
...
blinkHours()
blinkMinutes()
incrementMinutes()
refresh()
commitNewTime()
stopBlinking()
pressButton1()
pressButton2()
pressButtons1And2()
pressButton1()
:WatchUser:Time:LCDDisplay:SimpleWatch
Sekvensdiagram
previous next 18
UML
...
button1&2Pressed
button1&2Pressed
button1Pressed
button2Pressed
button2Pressed
button2Pressed
button1Pressed
button1&2Pressed IncrementMinutes
IncrementHours
BlinkHours
BlinkSeconds
BlinkMinutes
IncrementSeconds
StopBlinking
Tillståndsdiagram
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
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
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
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
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
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)
previous next 25
UML
Exempel: klassen Point med två instanser
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
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.
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
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
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
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
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
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
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
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»
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
previous next 37
UML
Exempel: Banksystem
Kontouttag
Överföring
InsättningKund Banksystem
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
• ....
previous next 39
UML
Användningsfall kan ordnas i hierarkier
Kontouttag Överföring Insättning
Korttransaktion
«includes»
Hjälp
«extends»
«includes»«includes»
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);
}}
previous next 41
UML
… Hello klassdiagram ...
Hello
paint()g.drawString(”Hallå!”, 10, 10);
previous next 42
UML
… Hello ...
Hello
paint() Graphics
Applet
previous next 43
UML
… Hello ...
Hello
Applet
Panel
Container
Component
Object
ImageObserver
previous next 44
UML
java
… Hello paketering ...
Hello applet
awt
lang
previous next 45
UML
… Hello sekvensdiagram ...
:Thread :Toolkit :ComponentPeer target:Hello
run
run
callbackLoop
handleExpose paint
previous next 46
UML
… Hello komponenter
Hello.class-------------------------
Hello.java
-------------------------
Hello.html
-------------------------
Hello.jpg
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.
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
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
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
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
previous next 52
UML
Exempel: aggregat
Component
Composite
*
Leaf1 Leaf2
Shape
Group
1..*
Rectangle Ellipse
previous next 53
UML
Exempel: aggregat och operationer• Det är vanligt att operationerna propageras från helheten
till delarna.
Document
Paragraph Line
Figure
print print
* *
*
1
1 1
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;}
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
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}
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
*
previous next 58
UML
Exempel: restriktioner
previous next 59
UML
Aggregat som komposition
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)
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
previous next 62
UML
Högre ordningens associationer
previous next 63
UML
Exempel: högre ordningens association
Supplier
Customer
Shipment
Part
Quantity
*
*
*
previous next 64
UML
Härledda attribut och associationer