Interaktions- och klassdiagram, kap 12-16 F4 vt -07



Relevanta dokument
Interaktions- och klassdiagram, kap F4 ht -10

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

DELPROV 1 I DATAVETENSKAP

Tentamen OOP

OOP Objekt-orienterad programmering

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Att använda pekare i. C-kod

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Grundläggande programmering med C# 7,5 högskolepoäng

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Objektorienterad programmering i Java

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Objektorientering Användning

SMD 134 Objektorienterad programmering

Tentamen i Objektorienterad programmering

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

OOP Objekt-orienterad programmering

Inkapsling (encapsulation)

Chapter 3: Using Classes and Objects

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Redovisning av inlämningsuppgifter

Laboration 10 - NetBeans

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

Föreläsning 10. ADT:er och datastrukturer

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Designspecifikation den 13 december 2007

Tentamen, EDA501 Programmering M L TM W K V

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Objektorienterad programmering

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Sätt att skriva ut binärträd

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

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Introduktion till arv

Konstruktion av klasser med klasser

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

Föreläsning 1 & 2 INTRODUKTION

Laboration 1 - Grunderna för OOP i Java

Föreläsning 3-4 Innehåll

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Editering, Kompilering och Exekvering av Javaprogram

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Övningar Dag 2 En första klass

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

OOP Omtenta

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Föreläsning 8: Exempel och problemlösning

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

STÄNG AV FÖNSTER. Regler FLAGGSPECTRUM I FLAGGSPECTRUM II FLAGGSPECTRUM III FLAGGSPECTRUM STJÄRNSPEL

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Föreläsning 9: Arv och UML

Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

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

Objektorientering Klasser

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

Tentaupplägg denna gång

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Realtidssystem. - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp

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

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

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

Elevmaterial. Kapitel 1 1. Varför håller sig Soli alltid i bakgrunden? 2. Varför önskade Soli bort Lucy? 3. Vad menas med att vara adopterad?

OOP Objekt-orienterad programmering

Objektorienterad Programmering (TDDC77)

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Tentamen, EDAA20/EDA501 Programmering

Laboration A Objektsamlingar

Tentamen i Objektorienterad modellering och design

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

OOP Omtenta

Tentamen. Lösningsförslag

Tentamen i Programmeringsteknik I

Objektorienterad programmering D2

TDDC77 Objektorienterad Programmering

Photoshop Elemements 2.0

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

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Konceptuell modellering

InPrint. Grunderna för hur du kommer igång och arbetar med Communicate: InPrint. Habilitering & Hjälpmedel

Föreläsning 7. Träd och binära sökträd

Transkript:

Interaktions- och klassdiagram, kap 12-16 F4 vt -07 Viktigt i kapitel 13 är bild 13.5 och avsnitten 13.7 och 13.8: De meddelanden som sänds från gränssnittssiktet till domänskiktet är de meddelanden som illustreras i SSD, som t.ex. enteritem. Lite om interaktionsdiagram Det finns olika sätt att rita sekvensdiagram. Här kommer två varianter där man går igenom alla element i en samling. Först ett något modifierarat sekvensdiagram från OO Systems A&D using UML av Bennett, McRobb & Farmer sid 360 2:a uppl. :Kampanj :Annonssamling :Annons listaannonser() annons=findfirst() annonstitel=gettitel() loop annons=getnext() annonstitel=gettitel() Larman har följande enklare variant: t := gettotal() :Sale linesitem[i]: SalesLineItem loop st := getsubtotal()

Mängden objekt som är involverade i en interaktion kan förändras; objekt kan skapas eller förstöras. I UML2 (till skillnad från UML1.x) finns det bara i sekvensdiagram möjlighet att explicit visa skapande och borttagande av objekt. Detta kan kanske ses som hint att kommunikationsdiagram bara skall användas för enkla interaktioner. :Univ.lektor prefekten n=getnamn() new Studierektor(n) :Studierektor destroy() Här blir en lektor befordrad till studierektor! Nu skall vi jämföra två personers ålder. new Person() p1:person new Person() jfrålder(p2) getålder() p2:person Person p1 = new Person(); Person p2 = new Person(); p1.jfrålder(p2); getålder() De interaktionsdiagram vi tittar på nu använder bara synkrona meddelanden. Vi utgår ifrån att bara ett meddelande skickas åt gången och att avsändaren väntar på svaret innan den fortsätter sina egna aktioner.

Vi diskuterar svaren på följande frågor på nästa föreläsning (F5) Övning: Rita om fig 18.7 och 18.20 som sekvensdiagram. Sekvensdiagram och kommunikationsdiagram kan beskriva liknande interaktioner, men när är det en fördel med det ena eller det andra? Vilka påståenden stämmer? I ett sekvensdiagram fås en snabb överblick över i vilken ordning meddelandena skickas. I ett kommunikationsdiagram är det lättare att få en snabb överblick över vilka objekt som samarbetar. I ett kommunikationsdiagram är det svårare att få en överblick över i vilken ordning meddelandena skickas. Sekvensdiagram är överlägset bäst att använda för uppritning på tavla, eftersom det går att expandera i alla riktningar. Semantiken och notationen i UML är mer utvecklat för att skapa kommunikationsdiagram. Vid skissning på papper eller tavla föredras sekvensdiagram eftersom det blir mycket lättare både att lägga till och ta bort objekt. Det spelar ingen som helst roll vilken sort man använder, de är precis likvärdiga. Det finns bara ett korrekt val och det är sekvensdiagram. Det är inte ovanligt att både sekvensdiagram och kommunikationsdiagram används, beroende på vad som ska visas. Numrera i vilken ordning (1, 2,..., 9) följande meddelanden skickas om de finns med i ett kommunikationsdiagram. 1: msgb 1.1: msgi 1.2: msgk 4.1: msg G 2: msgh 2.1: msgf msgz 3: msga 4: msgu Vilket eller vilka påståenden/n stämmer? Interaktionsdiagram och klassdiagram utvecklas ofta parallellt. I domänmodellen handlar det om verkliga begrepp medan designklassdiagrammet hanterar programvarubegrepp. Klassdiagram illustrerar klasser, gränssnitt och deras associationer. Svar på frågorna från F3 Vilket eller vilka påståenden stämmer? Ett systemsekvensdiagram beskriver VAD ett system gör, utan att förklara HUR det gör det. I ett systemsekvensdiagram är det viktigt att fokusera på HUR ett system gör något. Ett systemsekvensdiagram visar ett scenario för ett användningsfall. Det är lämpligt att namnet på en systemhändelse börjar med ett verb, för att understryka att det är ett kommando eller en begäran om något. Ett systemsekvensdiagram visar alltid allt om sker i ett användningsfall, oavsett hur mycket det är. Vilka av följande är lämpliga namn på systemhändelser? väljresmål OK hyrbil OK sevärdheter beundrautsikt? flygvärdinna

Fig 15.28 som sekvensdiagram :A :B :C :D msg1 msg2 msg3 msg4 msg5 msg6 De streckade partierna visar när kod i en metod i klassen exekverar. Det innebär att när ett anrop till msg2 i klassen B sker från metoden msg1 i klassen A så går en pil till ovankanten av "lådan" på B. Numrering i kommunikationsdiagram. Titta på figur 15.28 i boken. Det första meddelandet är (normalt) onumrerat. Från A kommer två meddelanden, de numreras 1 och 2. Meddelande 1 går till B, och därifrån skickas 1.1 till C. Efter att meddelade 2:msg4 skickats till C, skickas därifrån 2.1 och 2.2.

public class Fig15_28 { public A a = new A(); public B b = new B(); public C c = new C(); public D d = new D(); public Fig15_28() { a.msg1(); public static void main (String args[]) { System.out.println( In i main ); Fig15_28 m = new Fig15_28(); class A { public void msg1() { System.out.println( In i msg1 ); System.out.println( msg2 anropas i msg1 ); b.msg2(); System.out.println( msg4 anropas i msg1 ); c.msg4(); System.out.println( Ut ur msg1 ); class B { public void msg2() { System.out.println( In i msg2 ); System.out.println( msg3 anropas i msg2 ); c.msg3(); System.out.println( Ut ur msg2 ); public void msg5() { System.out.println( In i msg5 ); System.out.println( Ut ur msg5 ); class C { public void msg3() { System.out.println( In i msg3 ); System.out.println( Ut ur msg3 ); public void msg4() { System.out.println( In i msg4 ); System.out.println( msg5 anropas i msg4 ); b.msg5(); System.out.println( msg6 anropas i msg4 ); d.msg6(); System.out.println( Ut ur msg4 ); class D { public void msg6() { System.out.println( In i msg6 ); System.out.println( Ut ur msg6 );

/*ida> java Fig15_28 In i main In i msg1 msg2 anropas i msg1 In i msg2 msg3 anropas i msg2 In i msg3 Ut ur msg3 Ut ur msg2 msg4 anropas i msg1 In i msg4 msg5 anropas i msg4 In i msg5 Ut ur msg5 msg6 anropas i msg4 In i msg6 Ut ur msg6 Ut ur msg4 Ut ur msg1 */