Ladda ner presentationen
Presentation laddar. Vänta.
1
OOMPA 2D1359 & 2D1360 Innehåll UML Olika typer av diagram Att läsa
Föreläsning 2 Innehåll UML Till vad? Byggstenar Olika typer av diagram Att läsa Läs Bruegge kapitel och 2.4
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 UML är ett språk för att dokumentera
3
UML: konceptuell modell
UMLs byggstenar Saker Strukturella Beteende Gruppering Noteringar Relationer Beroenden Associationer Generaliseringar Diagram Klassdiagram, objektdiagram, användningsfallsdiagram, interaktionsdiagram (sekvens- och samarbetsdiagram), tillståndsdiagram, aktivitetsdiagram, komponentdiagram, leveransdiagram
4
Strukturella saker Klass Gränssnitt Samarbete Aktiv klass Komponent
Window Chain of responsibility origin size ISpelling open() close() move() display() Aktiv klass Komponent EventManager orderform.java suspend() flush() Användningsfall Nod Place order Server
5
Beteendemässiga, grupperande och noterande saker
Meddelande Paket display Business rules Tillstånd Notis Waiting return copy of self
6
Relationer i UML Beroende Association Generalisering Realisering 0..1
* employer employee Generalisering Realisering
7
Användningsfallsdiagram
Sätt gränser Uppdatera konto Redovisnings- system Analysera risker Chefsförhandlare «uses» Prisför- handla «uses» Värdera aktör Handlare Slut avtal «extends» Försäljare användningsfall Gränserna överskridna
8
Klassdiagram
9
...Klassdiagram
10
Sekvensdiagram
11
... Sekvensdiagram
12
Tillståndsdiagram: exempel
13
Aktivitetsdiagram, notation
[Villkor-a] [villkor-c] Aktivitet [Villkor-b] [villkor-d] Aktivitet Aktivitet [synkroniserings- villkor] ^objekt.Meddelande för alla * Aktivitet
14
Exempel: "Person::ordna dryck"
Hitta dryck [inget kaffe] [ingen cola] [kaffe hittat] [cola hittat] Kaffe i filtret Häll i vatten Hämta koppar Filtret i bryggaren Hämta cola Slå på bryggaren ^kaffepanna.slåPå slå av lampan Brygg Drick Häll upp kaffe
15
Exempel: klocka Användningsfallsdiagram Paket SimpleWatch ReadTime
SetTime WatchUser WatchRepairPerson ChangeBattery
16
… Klassdiagram SimpleWatch 1 1 1 1 2 1 2 1 PushButton state
push() release() LCDDisplay Battery load() Time now() blinkIdx blinkSeconds() blinkMinutes() blinkHours() stopBlinking() referesh()
17
... Sekvensdiagram blinkHours() blinkMinutes() incrementMinutes()
refresh() commitNewTime() stopBlinking() pressButton1() pressButton2() pressButtons1And2() :WatchUser :Time :LCDDisplay :SimpleWatch
18
... Tillståndsdiagram button1&2Pressed button1Pressed button2Pressed
Increment Minutes Hours Blink Seconds Stop Blinking button1&2Pressed
19
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
20
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
21
Klassdiagram: notation
klassbox, lång form Klass Klassnamn attribut : Typ = initialtVärde operation(argumentlista) : returTyp klassbox, kort form Klassnamn superklass (basklass) Supertyp Generalisering subklass (härledd klass) Subtyp1 Subtyp2
22
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 Varje kurs har ett nummer, en plats där den genomförs och en tid då den går CourseOffering number location time
23
Exempel: Klassen Person med två instanser
Rita en klass Person med hjälp av a) ett klassdiagram med attributen name: String och age: Integer b) två instanser av klassen Klass Person name : String age : Integer Instanser : Person name = Kalle age = 25 : Person name = Lisa age = 23
24
Exempel: Färgat geometriskt objekt, med defaultvärden
Rita ett klassdiagram med med ett geometriskt objekt a) där defaultvärdet för färgen är röd och för positionen är (10, 10) b) "rita" också två instanser FärgatObjekt color : Color = röd position : Point = (10, 10) defaultvärden eget namn (frivilligt) geo1: FärgatObjekt color = röd position = (10, 10) geo2: FärgatObjekt color = röd position = (30, 50)
25
Exempel: klassen Point med två instanser
26
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
27
Exempel: Generalisering
Konstruera ett klassdiagram med två subklasser Student och Teacher med superklassen Person. Person Student Teacher courses : Vector group : String courses : Vector salary : Money
28
Association Multiplicitet Klass A Klass B Klass exakt en Klass
roll B Klass A Klass B roll A Multiplicitet 1 Klass exakt en * Klass noll eller flera 0..1 Klass noll eller en m..n Klass numeriskt specificerad
29
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
30
Exempel: association 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. * 1 Person Company Sätt ut lämpliga rollnamn på associationerna i diagrammet. * 1 Person Company employee employer Inför i diagrammet att varje person kan ha noll eller en chef och att varje chef kan ha noll eller flera underställda. 0..1 * 1 Person Company boss employee employer * worker
31
En association kan ha ett namn
0..1 * Works-for 1 namn Person Company boss employee employer * worker Manages För att förtydliga kan vi sätta ut riktning 0..1 * Works-for 1 Person Company boss employee employer * worker Manages
32
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
33
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
34
... Aktör Användningsfall människa eller annat system
kommunicerar med ett system, vilket kan beskrivas med ett användningsfall Aktör Användningsfall är en mall för en sekvens av interaktioner mellan en aktör och ett system Användningsfall
35
Användningsfallsdiagram
Sätt gränser Uppdatera konto Redovisnings- system Analysera risker Chefsförhandlare «includes» Prisför- handla «includes» Värdera Handlare Slut avtal aktör Försäljare «extends» användningsfall Gränserna överskridna
36
Identifiera användningsfall
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
37
Exempel: Banksystem Kontouttag Överföring Kund Banksystem Insättning
38
...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 ....
39
Användningsfall kan ordnas i hierarkier
Korttransaktion «includes» «includes» «includes» Kontouttag Överföring Insättning «extends» Hjälp
40
Hello world-exempel import java.awt.Graphics;
class Hello extends java.applet.Applet { public void paint(Graphics g) { g.drawString(”Hallå!”, 10, 10); }
41
… Hello klassdiagram ... Hello g.drawString(”Hallå!”, 10, 10); paint()
42
… Hello ... Applet Hello paint() Graphics
43
… Hello ... ImageObserver Object Component Container Panel Applet
44
… Hello paketering ... java Hello applet awt lang
45
… Hello sekvensdiagram ...
:Thread :Toolkit :ComponentPeer target:Hello run run callbackLoop handleExpose paint
46
… Hello komponenter Hello.class Hello.java Hello.html Hello.jpg -----
47
Kvalifikationer En vanlig association där ett attribut unikt definierar det associerade objektet i mängden * 1 Employee Company number En kvalifikation är ett attribut för association. En kvalifikation särskiljer ett visst associerat objekt ur mängden av associerade objekt. 1 Employee Company number
48
Exempel: kvalifikationer
Till varje möjligt kontonummer finns noll eller en innehavare. Varje person kan inneha flera kontonummer Bank account # * 0..1 Person Inom en katalog finns en fil med ett visst namn Directory filename 1 File
49
Exempel: fler associationer
a) Rita ett klassdiagram där ett land associeras med en huvudstad b) Gör ett instansdiagram med följande associationer (Sverige, Stockholm) och (Norge, Oslo) capital Country City 1 name : String name : String 1 :Country :City name= Sverige name = Stockholm 1 :Country :City name= Norge name = Oslo
50
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 associerad klass
51
Aggregat Ett specialfall av association där relationen kan ses som en sammansättning ("består av") 1 1 * * Document Paragraph Line 1 * Figure
52
Exempel: aggregat Component Leaf1 Leaf2 Composite Shape Rectangle
* Leaf1 Leaf2 Composite 1..* Shape Rectangle Ellipse Group
53
Exempel: aggregat och operationer
Det är vanligt att operationerna propageras från helheten till delarna. print print Document * Paragraph * Line 1 1 print 1 print * Figure
54
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 class A {public B _assocB;} A B class B {private A _assocA;} * 1 A B class B {private Vector _assocA;}
55
Exempel: riktad association
observers * Subject Observer attach(Observer) detach(Observer) notify() update() for all o in observers { o.update() } 1 subject ConcreteSubject ConcreteObserver subjectState observerState getState() update()
56
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, {} * 1 Order Customer dateReceived isPrepaid number: String price : Money name address creditRating() : String dispatch() close() {if Order.customer.creditRating is "poor" then Order.isPrepaid must be true}
57
… restriktioner Restriktioner kan också anges för associationer
Employee 0..1 boss salary * {salary <= boss.salary} Contains 3..* Polygon Point {ordered} Person Account {or} Corporation
58
Exempel: restriktioner
59
Aggregat som komposition
60
Modifierare Klassnamn
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 Klassnamn om visibility inte sätts ut betyder det bara att den inte visas (inte att den är privat eller publik) +publikt_attribut #protected_attribut -privat_attribut klassvariabel +publik_operation() #protected_operation() -privat_operation() klassmetod()
61
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
62
Högre ordningens associationer
63
Exempel: högre ordningens association
* Supplier Shipment * * Part Customer Quantity
64
Härledda attribut och associationer
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.