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

Slides:



Advertisements
Liknande presentationer
Svenska WebDewey Introduktion
Advertisements

Innehåll, huvudpresentation 4. Rangordning av ordningsstörningar (fråga 1) 5. Problem med nedskräpning (fråga 1a) 6. Problem med skadegörelse (fråga 1b)
Relationsdatabasdesign
Page 1 © Inter IKEA Systems B.V Hej!. Page 2 © Inter IKEA Systems B.V :
1 Medarbetarenkät 2011 • 573 svar. 2 Kön 3 Jag är knuten till en klass, undervisningsgrupp eller barngrupp.
BENÄMNA lätta ord SPRÅKTRÄNING VID AFASIKg VIII
Klasser och objekt.
Tillämpning av bolagsstyrningskoden vid årsstämmor 2005 och 2006.
Hela Sverige ska leva Totalrapport. Regeringens bidrag har medverkat till kunskapsförmedling?
Objektorienterad Realtidsprogrammering
Projektföljeforskning
Fortsättningskurs i Programmering lektion 6
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
Metoder i java Det finns två typer av metoder i java
Föreläsning 4 Python: mera om funktioner och parametrar
Arv.
Objektorienterad tänkande
Programmeringsteknik för K och Media
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
Svenska WebDewey Introduktion
UNIONEN - tillgänglighet under semestern 2014
Skånedatabasen & Region Skånes tillgänglighetsmodell
Karolinska Institutet, studentundersökning Studentundersökning på Karolinska Institutet HT 2013.
Modellering med UML
Punktprevalensmätning av trycksår 2011, v.40 Resultat från landstingen
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
Svenska WebDewey Introduktion Harriet Aagaard Svenska Deweyredaktion
Föreläsning 2, Kapitel 2 Att förstå klassdefinitioner Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Enkätresultat för Grundskolan Elever 2014 Skola:Hällby skola.
Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT Lite OOA/OOD.
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
(2) Avvikelse från std. kostnad (5) Andel inv 65+ med insats (4) Andel 80+ i befolkningen (1) Kronor/ invånare (65+) (3) Kronor/ brukare (6) Ytterfall.
Vektorer (klassen Vector) Sortering
Hittarps IK Kartläggningspresentation år 3.
Polymorfism.
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
Arv.
TÄNK PÅ ETT HELTAL MELLAN 1-50
Helhet Händelse Agerande Kunskap om vardagsverksamheten Förståelse av vardagsverksamheten.
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
Enkätresultat för Fritidshem Elever 2014 Skola:Fritidselever, Gillberga skola.
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
2 Agenda 1. Börja arbeta med Excel Hantera arbetsböcker 3. Formler 4. Formatera 5. Diagram 6. Skriva ut 7. Referenser mellan kalkylblad 8. Arbeta.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
Utvecklingsmetoder och processer. UML och OCTUPUS en kort introduktion
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Smittspårarutbildning
System arbetssystem informationssystem
Föreläsning 4 Klasser Och Objekt.
Räkna till en miljard 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, En miljard är ett.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Förskoleenkät Föräldrar 2012 Förskoleenkät – Föräldrar Enhet:Hattmakarns förskola.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Lite OOA/OOD.
Föreläsning 3, Kapitel 3 Objektinteraktion - Skapa objekt som samarbetar Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David.
Bild 1 Prognos för länets arbetsmarknad Stefan Tjb.
Grundskola Elever 2013 Grundskoleenkät - Elever Enhet: Gillberga skola.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
Lite ObjektOrienterad Analys och Design sid. 1 6/1/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Lite OOA/OOD.
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
Presentationens avskrift:

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 2-2.3.5 och 2.4

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

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

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

Beteendemässiga, grupperande och noterande saker Meddelande Paket display Business rules Tillstånd Notis Waiting return copy of self

Relationer i UML Beroende Association Generalisering Realisering 0..1 * employer employee Generalisering Realisering

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

Klassdiagram

...Klassdiagram

Sekvensdiagram

... Sekvensdiagram

Tillståndsdiagram: exempel

Aktivitetsdiagram, notation [Villkor-a] [villkor-c] Aktivitet [Villkor-b] [villkor-d] Aktivitet Aktivitet [synkroniserings- villkor] ^objekt.Meddelande för alla * Aktivitet

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

Exempel: klocka Användningsfallsdiagram Paket SimpleWatch ReadTime SetTime WatchUser WatchRepairPerson ChangeBattery

… 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()

... Sekvensdiagram blinkHours() blinkMinutes() incrementMinutes() refresh() commitNewTime() stopBlinking() pressButton1() pressButton2() pressButtons1And2() :WatchUser :Time :LCDDisplay :SimpleWatch

... Tillståndsdiagram button1&2Pressed button1Pressed button2Pressed Increment Minutes Hours Blink Seconds Stop Blinking button1&2Pressed

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

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

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

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

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

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)

Exempel: klassen Point med två instanser

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

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

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

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

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

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

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

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

... 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

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

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

Exempel: Banksystem Kontouttag Överföring Kund Banksystem Insättning

...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 ....

Användningsfall kan ordnas i hierarkier Korttransaktion «includes» «includes» «includes» Kontouttag Överföring Insättning «extends» Hjälp

Hello world-exempel import java.awt.Graphics; class Hello extends java.applet.Applet { public void paint(Graphics g) { g.drawString(”Hallå!”, 10, 10); }

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

… Hello ... Applet Hello paint() Graphics

… Hello ... ImageObserver Object Component Container Panel Applet

… Hello paketering ... java Hello applet awt lang

… Hello sekvensdiagram ... :Thread :Toolkit :ComponentPeer target:Hello run run callbackLoop handleExpose paint

… Hello komponenter Hello.class Hello.java Hello.html Hello.jpg -----

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

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

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

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

Aggregat Ett specialfall av association där relationen kan ses som en sammansättning ("består av") 1 1 * * Document Paragraph Line 1 * Figure

Exempel: aggregat Component Leaf1 Leaf2 Composite Shape Rectangle * Leaf1 Leaf2 Composite 1..* Shape Rectangle Ellipse Group

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

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;}

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()

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}

… 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

Exempel: restriktioner

Aggregat som komposition

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()

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

Högre ordningens associationer

Exempel: högre ordningens association * Supplier Shipment * * Part Customer Quantity

Härledda attribut och associationer