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

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

Separation of Concern. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017

Classes och Interfaces, Objects och References, Initialization

Dependencies High cohesion, low coupling. Objekt-orienterad programmering och design Alex Gerdes, 2018

Dependencies High cohesion, low coupling. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

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

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

Separation of Concern. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

Modulär design Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Arv. Objektorienterad och komponentbaserad programmering

Inkapsling (encapsulation)

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

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

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

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Föreläsning 13 Innehåll

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

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

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

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

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

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

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

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

OOP Objekt-orienterad programmering

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Design Patterns. Objekt-orienterad programmering och design Alex Gerdes, 2016

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design Alex Gerdes, 2016

OOP Objekt-orienterad programmering

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

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

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

Objektorienterad Programmering (TDDC77)

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

Imperativ programmering. Föreläsning 4

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

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

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

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

Föreläsning 15: Repetition DVGA02

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

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

Objektorienterad Programmering (TDDC77)

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Objektorienterad Programmering (TDDC77)

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

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Föreläsning 9: Arv och UML

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

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

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

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

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

Konstruktion av klasser med klasser

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

Tentamen i Objektorienterad modellering och design

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

Klasshierarkier - repetition

OOP Objekt-orienterad programmering

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

TENTAMEN OOP

Laboration 1 - Grunderna för OOP i Java

Mutability och State. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254

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

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

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Design Patterns Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

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

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

Generics och polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

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

DAT043 - Föreläsning 7

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

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

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

Objektorienterad analys och design

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

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

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

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Modulär design. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

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

Instuderingsuppgifter läsvecka 2

TENTAMEN OOP

Design Patterns. Objekt-orienterad programmering och design Alex Gerdes, 2018

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

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

Tentamen i Objektorienterad modellering och design Helsingborg

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

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

JAVA Mer om klasser och objektorientering

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

Polymorfi. Objektorienterad och komponentbaserad programmering

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Transkript:

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

UML Unified Modelling Language Grafiskt modelleringsspråk för att beskriva olika aspekter av objektorienterade system. Vi kommer att begränsa oss till UMLs klassdiagram finns mycket mer.

Klassdiagram: Classes En class består av: Dess namn Dess variabler Dess metoder (och konstruktorer) + = public - = private # = protected ~ = none (i.e. package) Customer + name : String # phonenr : PhoneNumber + sendorder() : void + receiveorder() : void italics = abstract underline = static <<interface>> Static? Abstract?

Class vs Object (static vs non-static) Analogi: En Class är en produktionsmaskin. Maskinen är programmerad med ritningar för en sorts objekt, som den kan skapa efter önskemål (dvs anrop av konstruktor). Maskinen kan ha ytterligare funktionalitet: Attribut märkta static tillhör maskinen, inte objekten den skapar. Anrop av metoder märkta static är meddelanden till maskinen, inte objekt. Allt som inte är märkt static är en del av ritningen för objekten som skapas. Objekten vet alltid vilken maskin de kommer från. Maskinen håller inte automatiskt reda på de objekt den skapat.

Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte: Att samla gemensam kod för subclasses (undvika kod-duplicering). Kan (men måste inte) ha metoder märkta abstract dessa har ingen body, och subclasses måste göra override (om de inte själva är abstract). Kan ha konstruktorer; dessa kan enbart anropas via this() i den egna klassen eller super() i subclasses. Representerar en abstrakt generalisering av flera olika subclasses: Exempel: Mammal som abstract superclass till Cow, Sheep, Aardvark,

Klassdiagram: Relationer Fyra grundläggande typer av relationer mellan classes och interface: Association (Has-A) En class har attribut (fields) som håller objekt av en annan class (interface). Beroende (usage dependency) En class (interface) använder eller skapar objekt av en annan class (interface). Generalisering (Is-A) En class (interface) är en direkt subclass (subinterface) till en annan class (interface). Realisering (implements) En class implementerar ett interface.

Klassdiagram: Relationer specialfall Specialfall av association: Aggregation (parts-of-a-whole) En class består av en eller flera delar, som representeras av en annan class. Komposition (subpart-of) En starkare form av aggregation, där delen bara får förekomma i en helhet, och existerar endast så länge dess helhet existerar Inkapsling (encapsulation) En class existerar inuti en annan class (vi kommer till inner classes senare).

Klassdiagram: Exempel Sandwich {abstract} # name : String + getname() : String Panini Baguette FilledSandwich {abstract} SandwichWithHam SandwichWithTomato SandwichWithSalami SandwichWithCheese

Övning Utgå från DrawPolygons.java (från tidigare övning) Syfte: Refactor till en design som följer OCP. Öva UML. Utför följande refactoring steps: 1. Skapa en ny class Polygon som håller ihop name och centerpoint. Skapa en constructor Polygon(String,Point). Använd i DrawPolygons. 2. Ge Polygon en paint-metod. Flytta relevant funktionalitet från DrawPolygons.paint. 3. Förenkla if-satsen i Polygon.paint genom att lyfta ut relevant funktionalitet i tre separata metoder: paintsquare, painttriangle och paintrectangle. 4. Skapa tre subklasser till Polygon: Square, Triangle och Rectangle. Ta bort alla aspekter av name. Ge varje subklass rätt paint-metod. Förenkla paint-metoden i DrawPolygons. 5. Gör Polygon abstract. Gör constructor Polygon(Point) privat. Skapa en public constructor Polygon(int,int) som anropar Polygon(Point), och förenkla i DrawPolygons. För varje delsteg, rita upp det klassdiagram (UML) som beskriver systemet. För extra utmaning: Fundera över andra sätt (än att lägga till fler sorters polygoner) som programmet kan komma att utökas eller förändras. Hur kan ni planera för dessa?