OOMPA 2D1359 Föreläsning 5



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

Introduktion. Byggstenar TDBA

Objektorientering. Grunderna i OO

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.

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

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

Objektorienterad Programmering (TDDC77)

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

OCTOPUS utvecklingsmetod samt relaterade frågeställningar och diagram

OOMPA 2D1359 Föreläsning 8

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

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

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

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

Objektorienterad Systemutveckling 1 (7,5 hp)

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

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

OOMPA 2D1359 Föreläsning 2

Utvecklingsmetoder och processer. UML och OCTUPUS en kort introduktion

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.

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

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

Laboration 1: Figurer i hierarki

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

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

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

Föreläsning 13 Innehåll

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77)

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

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

Objektorienterad konstruktion

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

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

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

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

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

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

Objektorienterad analys och design

Objektorienterad programutveckling i ett nötskal

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Arv. Objektorienterad och komponentbaserad programmering

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

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

Lösningsförslag till tentamen

Objektorientering Användning

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

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

E-R-modellen, E-R-diagram E-R-diagram. representerar entitetsmängder

Imperativ programmering. Föreläsning 4

Classes och Interfaces, Objects och References, Initialization

Föreläsning 15: Repetition DVGA02

Konstruktion av klasser med klasser

Objektorientering Klasser

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

Laboration 2: Designmönster

Lösningar till tentamen i EDAF25

Inkapsling (encapsulation)

Klasshierarkier - repetition

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

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

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

Laboration 2: Designmönster

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

Föreläsning 9: Arv och UML

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

Konceptuell modellering

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

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

Repetition av OOP- och Javabegrepp

Tentamen i Objektorienterad modellering och diskreta strukturer

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

Objektorienterad Systemutveckling (7,5 hp)

Introduktion till UMLs klassdiagram

Systemvetarutbildningen och dataekonomutbildningen

Repetition av OOP- och Javabegrepp

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

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

Introduktion till arv

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Exempel på användning av arv: Geometriska figurer

Relationer mellan objekt

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

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

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

(Data)Modellering. nikos dimitrakas rum 2423

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

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

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

Objektorienterad Programmering DAT043. Föreläsning 10 13/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

OOMPA 2D1359 Föreläsning 3

Enkla variabler kontra referensvariabel

TDP005 Projekt: objektorienterade system

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

Transkript:

OOMPA 2D359 Föreläsning 5 Objektorienterad Modellering Programmering och Analys Innehåll Klassdiagram med Klassbeskrivningar l klasser, arv, attribut, operationer l relationer, associationer, restriktioner stereotyper abstrakta klasser, gränssnitt - - Klassdiagram l centralt i i stort sett alla objektorienterade metoder l beskriver dom olika typerna av objekt i systemet samt deras inbördes statiska relationer l ett klassdiagram visar två olika typer av statiska relationer subtyper l en bil är ett fordon associationer l en bil har en ägare l ett klassdiagram visar också klassernas attribut operationer restriktioner på hur olika objekt kan förbindas - 2 -

Klass l En klass är en uppsättning objekt med gemensam struktur, gemensamt beteende, gemensamma relationer och gemensam semantik l Klasser hittas hittas genom att användningsfall, sekvensdiagram, sammarbetsdiagram och CRC-kort analyseras och används l En klass ritas i UML som en rektangel med tre olika delar l Klasser skall helst namnges med hjälp av den vokabulär som används i den aktuella domänen - 3 - Klassdiagram: notation Klass Klassnamn attribut : Typ = initialtvärde operation(argumentlista) : returtyp Klassnamn klassbox, lång form klassbox, kort form Generalisering Supertyp superklass (basklass) subklass (härledd klass) Subtyp Subtyp2-4 - 2

Klass: attribut l Strukturen av en klass representeras av attribut l Attributen kan hittas genom att utforska klassdefinitioner, från kravspecifikationen och med hjälp av domänkunskap Varje kurs har ett nummer, en plats för där den genomförs och en tid då den går CourseOffering number location time - 5 - Exempel: Klassen med två instanser Rita en klass med hjälp av a) ett klassdiagram med attributen name: String och age: Integer b) två instanser av klassen Klass name : String age : Integer Instanser : name = Kalle age = 25-6 - : name = Lisa age = 23 3

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 eget namn (frivilligt) geo: FärgatObjekt color = röd position = (0, 0) geo2: FärgatObjekt color = röd position = (30, 50) - 7 - Exempel: klassen Point med två instanser - 8-4

Arv l Arv är en relation mellan en superklass och dess subklasser l Det finns två huvudtyper av arv generalisering specialisering l Gemensamma attribut, operationer och/eller relationer brukar skrivas så högt upp i hierarkin som möjligt - 9 - Exempel: Generalisering Konstruera ett klassdiagram med två subklasser Student och Teacher till superklassen. Student courses : Vector group : String Teacher courses : Vector salary : Money - 0-5

Association Klass A roll A roll B Klass B Multiplicitet Klass exakt en Klass noll eller flera 0.. Klass noll eller en m..n Klass numeriskt specificerad - - Relationer mellan klasser l Relationer mellan klasser kan hittas genom att samarbetsdiagram undersöks (se nästa föreläsning f6) Om två objekt behöver utbyta information måste en väg för informationsutbyte finnas l Ett annat sätt är att CRC-kort används för att identifiera samarbete - 2-6

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 - 3 - En association kan ha ett namn namn 0.. boss Works-for employee employer worker Company Manages För att förtydliga kan vi sätta ut riktning 0.. boss Works-for4 employee employer worker Company Manages4-4 - 7

Kvalifikationer En vanlig association där ett attribut unikt definierar det associerade objektet i mängden 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. Employee number Company - 5 - Exempel: kvalifikationer Till varje möjligt kontonummer finns noll eller en innehavare. Varje person kan inneha flera kontonummer Bank account # 0.. Inom en katalog finns en fil med ett visst namn Directory filename File - 6-8

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 name : String :Country name= Sverige :Country name= Norge capital City name : String :City name = Stockholm :City name = Oslo - 7 - 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 - 8-9

Aggregat l Ett specialfall av association där relationen kan ses som en sammansättning ("består av") Document Figure Paragraph Line - 9 - Exempel: aggregat Component Leaf Leaf2 Shape Composite.. Rectangle Ellipse Group - 20-0

Exempel: aggregat och operationer l Det är vanligt att operationerna propageras från helheten till delarna. print print Document print Figure Paragraph print Line - 2 - Riktade associationer l För att förtydliga relationer kan riktade associationer användas genom att en pil används l 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 l 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 {private B _assocb;} A B class B {private A _assoca;} A B class B {private Vector _assoca;} - 22 -

Exempel: riktad association Subject observers Observer attach(observer) detach(observer) notify() for all o in observers { o.update() } update() ConcreteSubject subject ConcreteObserver subjectstate observerstate getstate() update() - 23 - Restriktioner l 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 Customer datereceived isprepaid number: String price : Money dispatch() close() {if Order.customer.creditRating is "poor" then Order.isPrepaid must be true} name address creditrating() : String - 24-2

restriktioner l Restriktioner kan också anges för associationer Ordnade Employee salary 0.. boss {salary <= boss.salary} Contains4 3.. Polygon Point {ordered} eller Account {or} Corporation - 25 - Exempel: restriktioner - 26-3

Aggregat som komposition - 27 - 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() - 28 - om visibility inte sätts ut betyder det bara att den inte visas (inte att den är privat eller publik) 4

Exempel: modifierare # name : String # dateofbirth : Date - pincode : Integer + name() : String + age() : Integer + equals() : boolean # name(string) + create(name : String, dateofbirth : Date) : - hashcode() : Integer - 29 - Högre ordningens associationer - 30-5

Exempel: högre ordningens association Supplier Part Shipment Customer Quantity - 3 - Härledda attribut och associationer - 32-6

Perspektiv l Konceptuellt I detta perspektiv ritar man digram över koncept i domänen. Dessa koncept avbildas ofta på klasser som implementerar dem, men ofta är så inte fallet. En konceptuell modell ritas med liten eller ingen hänsyn till den mjukvara som skall användas vid implementationen l Specifikations I detta perspektiv tittar vi i första hand på gränssnitten för mjukvaran, inte implementationen. Vi tittar snarare på typer än klasser l Implementations I detta perspektiv har vi verkligen klasser och implementationen görs tydlig - 33 - Exempel : olika detaljnivå utan detaljer implementationsnivå analysnivå - 34-7

Stereotyper En stereotyp indikerar på en hög nivå rollen som ett visst objekt spelar - 35 - Exempel: stereotyper - 36-8

Komposition, alternativa former - 37 - Exempel : Diagram med bla kvalificerat- och länkattribut Bank accountnumber : Integer 0.. customer ismarried : Boolean isunemployed : Boolean birthdate : Date age : Integer firstname : String lastname : String sex : enum{ male, female} income (Date) : Integer husband 0.. manager 0.. Company managedcompanies name : String numberofemployees : Integer employee 0.. employer 0.. stockprice( ) wife 0.. Marriage place : String date : Date Job title : String startdate : Date salary : Integer - 38-9

Multipel klassificering Särskiljande drag (discriminator) Doctor Surgeon Female Male sex {mandatory} Patient role patient Nurse Physiotherapist Family Doctor Ett objekt kan kombinera dessa typer tex (Male, Patient, Nurse) eller (Male, Patient), (Female, Doctor, Surgeon) - 39 - Abstrakt klass l En abstrakt klass utrycks genom att klassnamnet skrivs kursivt man kan också använda restriktionen {abstract} Shape {abstract}.. Rectangle Ellipse Group - 40-20

Exempel: abstrakt klass Windows95 Text Editor Window {abstract} tofront() toback() X tofront() toback() tofront() toback() Mac - 4 - tofront() toback() Gränssnitt l Ett gränssnitt beskriver det protokoll en viss klass skall uppfylla InputStream {abstract} «interface» DataInput OrderReader DataInputStream - 42-2

... kort form l Ett gränssnitt kan skrivas på mer kompakt form (med s.k. klubb-notation, eng. lollipop notation) DataInput gränssnitt OrderReader DataInputStream InputStream - 43 - Var hittar jag mer info l I Fowler finns det referenser till kommande böcker l http://www.rational.com här kan man hitta l dokumentation och specifikation. Speciellt notation guide (i pdf-format) är nyttig l CASE-verktyg (demoversion för Windows) - 44-22