Interaktions- och klassdiagram, kap F4 ht -10

Relevanta dokument
Interaktions- och klassdiagram, kap F4 vt -07

Inkapsling (encapsulation)

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

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

Föreläsning 3-4 Innehåll

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

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

Objektorienterad Programmering (TDDC77)

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

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

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

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

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

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

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

TDDC77 Objektorienterad Programmering

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

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

DELPROV 1 I DATAVETENSKAP

Instuderingsuppgifter läsvecka 2

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

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

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

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

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

2D1342 Programkonstruktion för F1, ht 2006

2D1339 Programkonstruktion för F1, ht 2003

OOP Objekt-orienterad programmering

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

Tentamen i Objektorienterad modellering och design

Den som bara har en hammare tror att alla problem är spikar

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

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

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

Laboration 1 - Grunderna för OOP i Java

Konstruktion av klasser med klasser

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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 2. Täcker material från lektion 1, 2, 3 och 4:

Objektorienterad Programmering (TDDC77)

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

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

JAVA Mer om klasser och objektorientering

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

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

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

Objektorienterad Programmering (TDDC77)

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

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

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Dugga i Grundläggande programmering STS, åk

Laboration A Objektsamlingar

Föreläsning 3: Booleans, if, switch

Arv och polymorfism i Java

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Laboration 3, uppgift En klass för en räknare

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

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

Tentamen i Grundläggande programmering STS, åk 1 lördag

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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Tentamen. Lösningsförslag

Föreläsning 6: Metoder och fält (arrays)

Tentamen i Programmeringsteknik I

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Föreläsning 5-6 Innehåll

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

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

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

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

2D1339 Programkonstruktion för F1, ht 2004

Laboration 13, Arrayer och objekt

Kopiering av objekt i Java

Tentamen i Objektorienterad modellering och design Helsingborg

Föreläsning 2, vecka 8: Repetition

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Tentamen. DD2385 Programutvecklingsteknik vt Tisdagen den 26 maj 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Objektorienterad programmering i Java

Tentamen Programmering fortsättningskurs DIT950

Malmö högskola 2007/2008 Teknik och samhälle

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

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

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Typkonvertering. Java versus C

Tentamen i Objektorienterad modellering och diskreta strukturer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Transkript:

Interaktions- och klassdiagram, kap 12-16 F4 ht -10 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.

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 */