Presentation laddar. Vänta.

Presentation laddar. Vänta.

OOMPA 2D1359 & 2D1360 Innehåll UML Olika typer av diagram Att läsa

Liknande presentationer


En presentation över ämnet: "OOMPA 2D1359 & 2D1360 Innehåll UML Olika typer av diagram Att läsa"— Presentationens avskrift:

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


Ladda ner ppt "OOMPA 2D1359 & 2D1360 Innehåll UML Olika typer av diagram Att läsa"

Liknande presentationer


Google-annonser