UML: konceptuell modell. 2203$' ' ) UHOlVQLQJ. Innehåll UML. Strukturella saker UML. Olika typer av diagram Att läsa.

Relevanta dokument
OOMPA 2D1359 Föreläsning 5

Utvecklingsmetoder och processer. UML och OCTUPUS en kort introduktion

Översikt. Introduktion. Objektorienterad programutveckling UML UML. Analys Design. Klassdiagram Aktivitetsdiagram

Översikt. Introduktion. Objektorienterad programutveckling UML UML. Analys Design. Klassdiagram Aktivitetsdiagram

Objektorientering. Grunderna i OO

TDP005 Projekt: objektorienterade system

Objektorientering Användning

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

LÖSNINGSFÖRSLAG. Tentamen. Objektorienterad modellering och design. EDA665, 4 poäng

Introduktion. Byggstenar TDBA

Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl

OOMPA 2D1359 Föreläsning 2

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

TDP005. Föreläsning 3 - UML. Filip Strömbäck

Inkapsling (encapsulation)

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Laboration 1: Figurer i hierarki

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Objektorienterad Programmering (TDDC77)

OOMPA 2D1359 Föreläsning 8

Konstruktion av klasser med klasser

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

Objektorienterad analys och design

Föreläsning 13 Innehåll

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad Systemutveckling 1 (7,5 hp)

Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018

Arv. Objektorienterad och komponentbaserad programmering

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

Exempel på användning av arv: Geometriska figurer

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Lösningsförslag till tentamen

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

TDDE10 TDDE11, 725G91/2. Objektorienterad programmering i Java, Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.

Föreläsning 5. När skall man använda implementationsarv? När skall man använda implementationsarv?

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

Tentamen i Objektorienterad modellering och design

Klasshierarkier - repetition

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Lösningar till tentamen i EDAF25

Objektorienterad konstruktion

Objektorienterad programutveckling i ett nötskal

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl

Föreläsning 8 2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ UML O2P 2000

Lösningar till tentamen i EDAF25

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Tentamen i Objektorienterad modellering och diskreta strukturer

Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Arkitektur Michael Åhs

Classes och Interfaces, Objects och References, Initialization

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Programmering för språkteknologer II, HT2014. Rum

Objektorienterad Programmering (TDDC77)

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Objektorienterad Programmering (TDDC77)

Föreläsning 9: Arv och UML

Tentamen i Objektorienterad modellering och design Helsingborg

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Introduktion till arv

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

DAT043 - Föreläsning 7

UML use cases. Mikael Söderström Institutionen för informatik Umeå universitet

Objektorienterad metodik. Programutvecklingsmetodik. Objektmodellen. Varje objekt har en unik identitet

Programutvecklingsmetodik

..arv Arv kan delas in i två huvudtyper Arv för specifikation dvs arv av protokoll Arv av kod dvs arv av beteende och struktur. 2203$ ) UHOlVQLQJ.

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

Föreläsning 15: Repetition DVGA02

Laboration 2: Designmönster

OOMPA 2D1359 Föreläsning 3

Transkript:

Innehåll 2203$' ' ) UHOlVQLQJ Till vad? Byggstenar Olika typer av diagram Att läsa Läs Bruegge kapitel 2-2.3.5 och 2.4 : konceptuell modell s 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 previous next 3 är ett språk är ett språk för att visualisera är ett språk för att specificera är ett språk för att konstruera är ett språk för att dokumentera Strukturella saker.odvv UlQVVQLWW 6DPDUEHWH Window origin size open() close() move() display() $QYlQGQLQJVIDOO Place order ISpelling $NWLYNODVV EventManager suspend() flush().rpsrqhqw orderform.java RG Chain of responsibility Server previous next 2 previous next 4 Björn Eiderbäck 2000 Björn Eiderbäck 2000 2

Beteendemässiga, grupperande och noterande saker 0HGGHODQGH display 7LOOVWnQG Waiting 3DNHW RWLV Business rules return copy of self Användningsfallsdiagram Chefsförhandlare aktör Handlare Sätt gränser Analysera risker Slut avtal «extends» användningsfall Gränserna överskridna «uses» «uses» Försäljare Uppdatera konto Värdera Prisförhandla Redovisningssystem previous next 5 previous next 7 Relationer i Klassdiagram %HURHQGH $VVR LDWLRQ HQHUDOLVHULQJ 0.. employer employee 5HDOLVHULQJ klassnamn attribut name : String address : String multiplicitet employee association employer Company name : String address : String rollnamn previous next 6 previous next 8 Björn Eiderbäck 2000 3 Björn Eiderbäck 2000 4

...Klassdiagram... Sekvensdiagram Shape operationer arv position : Point bounds() :Rectangle draw() : void extent() : Point return new Rectangle(position, extent()); Shape extent : Point draw() : void Shape2 extent : Point draw() : void ComposedShape bounds() :Rectangle draw() : void parts aggregat metod/pseudokod b = new Rectangle(); for all p in parts do b = b.merge(p.bounds()); return b; previous next 9 previous next Sekvensdiagram Tillståndsdiagram: exempel previous next 0 previous next 2 Björn Eiderbäck 2000 5 Björn Eiderbäck 2000 6

Aktivitetsdiagram, notation Exempel: klocka Användningsfallsdiagram Paket Aktivitet [Villkor-a] [Villkor-b] [villkor-c] [villkor-d] SimpleWatch ReadTime Aktivitet Aktivitet [synkroniseringsvillkor] ^objekt.meddelande Aktivitet för alla WatchUser SetTime ChangeBattery WatchRepair previous next 3 previous next 5 Exempel: "::ordna dryck" Klassdiagram Hitta dryck [inget kaffe] [ingen cola] [kaffe hittat] [cola hittat] SimpleWatch Kaffe i filtret Häll i vatten Hämta koppar Filtret i bryggaren Hämta cola 2 PushButton state push() release() LCDDisplay blinkidx blinkseconds() blinkminutes() blinkhours() stopblinking() referesh() 2 Battery load() Time now() Slå på bryggaren ^kaffepanna.slåpå Brygg slå av lampan Häll upp kaffe Drick previous next 4 previous next 6 Björn Eiderbäck 2000 7 Björn Eiderbäck 2000 8

... Sekvensdiagram :WatchUser :SimpleWatch :LCDDisplay :Time pressbutton() pressbutton() blinkhours() blinkminutes() pressbutton2() incrementminutes() refresh() pressbuttonsand2() commitnewtime() stopblinking() 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 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 7 previous next 9... button&2pressed Blink Hours Tillståndsdiagram button2pressed Increment Hours Klassdiagram centralt i i stort sett alla objektorienterade metoder beskriver dom olika typerna av objekt i systemet samt deras inbördes statiska relationer button&2pressed Stop Blinking Blink Minutes Blink Seconds button&2pressed buttonpressed button2pressed buttonpressed button2pressed Increment Minutes Increment Seconds 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 8 previous next 20 Björn Eiderbäck 2000 9 Björn Eiderbäck 2000 0

Klassdiagram: notation Exempel: Klassen med två instanser Klass Klassnamn attribut : Typ = initialtvärde operation(argumentlista) : returtyp Klassnamn Supertyp Generalisering superklass (basklass) klassbox, lång form klassbox, kort form Rita en klass med hjälp av a) ett klassdiagram med attributen name: String och age: Integer b) två instanser av klassen Klass Instanser name : String age : Integer subklass (härledd klass) Subtyp Subtyp2 : name = Kalle age = 25 : name = Lisa age = 23 previous next 2 previous next 23 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 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 (0, 0) b) "rita" också två instanser FärgatObjekt color : Color = röd position : Point = (0, 0) defaultvärden Varje kurs har ett nummer, en plats där den genomförs och en tid då den går CourseOffering number location time geo: FärgatObjekt color = röd position = (0, 0) geo2: FärgatObjekt color = röd position = (30, 50) eget namn (frivilligt) previous next 22 previous next 24 Björn Eiderbäck 2000 Björn Eiderbäck 2000 2

Exempel: klassen Point med två instanser Exempel: Generalisering Konstruera ett klassdiagram med två subklasser Student och Teacher med superklassen. Student courses : Vector group : String Teacher courses : Vector salary : Money previous next 25 previous next 27 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 Association Klass A roll A Multiplicitet Klass Klass roll B Klass B exakt en noll eller flera 0.. Klass noll eller en m..n Klass numeriskt specificerad previous next 26 previous next 28 Björn Eiderbäck 2000 3 Björn Eiderbäck 2000 4

Relationer mellan klasser En association kan ha ett namn 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 namn 0.. Works-for boss employee employer worker Manages Company För att förtydliga kan vi sätta ut riktning 0.. boss Works-for employee employer worker Company Manages previous next 29 previous next 3 Exempel: association Antag att en har precis ett jobb men att ett företag kan ha noll eller flera anställda personer. Gör ett klassdiagram över detta. Company Sätt ut lämpliga rollnamn på associationerna i diagrammet. 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.. boss employee worker employer Company Användningsfall (eng. Use Case) Jacobson 992 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 30 previous next 32 Björn Eiderbäck 2000 5 Björn Eiderbäck 2000 6

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 Användningsfallsdiagram Chefsförhandlare aktör Handlare Sätt gränser Analysera risker Slut avtal Uppdatera konto «includes» «includes» Värdera Prisförhandla Redovisningssystem användningsfall «extends» Gränserna överskridna Försäljare previous next 33 previous next 35... Aktör 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 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 Användningsfall previous next 34 previous next 36 Björn Eiderbäck 2000 7 Björn Eiderbäck 2000 8

Exempel: Banksystem Användningsfall kan ordnas i hierarkier Korttransaktion Kontouttag «includes» «includes» «includes» Kund Överföring Insättning Banksystem Kontouttag Överföring Insättning «extends» Hjälp previous next 37 previous next 39...användningsfallet kontouttag När kund sätter in kort i bankomaten, läs koden från kortet och kontrollera dess giltighet Hello world-exempel 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 import java.awt.graphics; class Hello extends java.applet.applet { public void paint(graphics g) { g.drawstring( Hallå!, 0, 0); } }... previous next 38 previous next 40 Björn Eiderbäck 2000 9 Björn Eiderbäck 2000 20

Hello klassdiagram... Hello... Hello Object paint() g.drawstring( Hallå!, 0, 0); ImageObserver Container Component Panel Applet Hello previous next 4 previous next 43 Hello... Hello paketering... Applet java Hello Hello applet paint() Graphics awt lang previous next 42 previous next 44 Björn Eiderbäck 2000 2 Björn Eiderbäck 2000 22

Hello sekvensdiagram... Kvalifikationer run :Thread :Toolkit :ComponentPeer target:hello run callbackloop handleexpose paint En vanlig association där ett attribut unikt definierar det associerade objektet i mängden Employee number Company En kvalifikation är ett attribut för association. En kvalifikation särskiljer ett visst associerat objekt ur mängden av associerade objekt. Employee number Company previous next 45 previous next 47 Hello komponenter Exempel: kvalifikationer Hello.html --- -- Hello.class Hello.jpg --- -- Hello.java --- -- 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 Bank account # 0.. Directory filename File previous next 46 previous next 48 Björn Eiderbäck 2000 23 Björn Eiderbäck 2000 24

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) Country capital City name : String name : String :Country name= Sverige :Country name= Norge :City name = Stockholm :City name = Oslo Aggregat Ett specialfall av association där relationen kan ses som en sammansättning ("består av") Document Figure Paragraph Line previous next 49 previous next 5 Länkattribut Exempel: aggregat 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 Leaf Component Leaf2 Shape Composite.. associerad klass Rectangle Ellipse Group previous next 50 previous next 52 Björn Eiderbäck 2000 25 Björn Eiderbäck 2000 26

Exempel: aggregat och operationer Det är vanligt att operationerna propageras från helheten till delarna. Exempel: riktad association Subject observers Observer Document print Figure print print Paragraph print Line attach(observer) detach(observer) notify() ConcreteSubject subjectstate getstate() for all o in observers { o.update() } subject update() ConcreteObserver observerstate update() previous next 53 previous next 55 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 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 A B B class A {public B _assocb;} class B {private A _assoca;} class B {private Vector _assoca;} 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 datereceived isprepaid number: String price : Money dispatch() close() {if Order.customer.creditRating is "poor" then Order.isPrepaid must be true} Customer name address creditrating() : String previous next 54 previous next 56 Björn Eiderbäck 2000 27 Björn Eiderbäck 2000 28

restriktioner Restriktioner kan också anges för associationer Aggregat som komposition Employee salary 0.. boss {salary <= boss.salary} Polygon Account Contains 3.. {ordered} {or} Point Corporation previous next 57 previous next 59 Exempel: restriktioner Modifierare 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 +publikt_attribut #protected_attribut -privat_attribut klassvariabel +publik_operation() #protected_operation() -privat_operation() klassmetod() om visibility inte sätts ut betyder det bara att den inte visas (inte att den är privat eller publik) previous next 58 previous next 60 Björn Eiderbäck 2000 29 Björn Eiderbäck 2000 30

Exempel: modifierare Exempel: högre ordningens association # name : String # dateofbirth : Date - pincode : Integer + name() : String + age() : Integer + equals() : boolean # name(string) + create(name : String, dateofbirth : Date) : - hashcode() : Integer Supplier Part Quantity Shipment Customer previous next 6 previous next 63 Högre ordningens associationer Härledda attribut och associationer previous next 62 previous next 64 Björn Eiderbäck 2000 3 Björn Eiderbäck 2000 32