Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

Relevanta dokument
Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

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

Föreläsning 5-6 Innehåll

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

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

Introduktion till arv

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

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

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

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

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

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

Objektorienterad Programkonstruktion

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

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

DAT043 - Föreläsning 7

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

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

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

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

Övningar Dag 2 En första klass

Classes och Interfaces, Objects och References, Initialization

Laboration 1: Figurer i hierarki

Lösningar till tentamen i EDAF25

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Java, klasser, objekt (Skansholm: Kapitel 2)

Objektorienterad Programmering (TDDC77)

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion. Föreläsning dec 2015

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

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Malmö högskola 2008/2009 CTS

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

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

Properties. Användbara metoder som kan anropas i propertychanged:

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

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

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

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

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

Tentamen i Objektorienterad modellering och design

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

OOP Objekt-orienterad programmering

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

Laboration 1 - Grunderna för OOP i Java

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

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

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

Föreläsning 2. Länkad lista och iterator

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

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

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

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

1 Egna klasser. 1.1 En punkt-klass

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Lab5 för prgmedcl04 Grafik

Övriga byggstenar. Övriga byggstenar. Några tips under programutveckling. Beroenden Pekare till funktioner Typkonvertering

OOP Objekt-orienterad programmering

Exempel på användning av arv: Geometriska figurer

JAVA Mer om klasser och objektorientering

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

1.1 Runnable och Thread

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Objektorienterad Programmering DAT043

Föreläsning 3-4 Innehåll

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

Tentamen i Objektorienterad modellering och design Helsingborg

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

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

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

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

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

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

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Transkript:

Objektorienterad Programkonstruktion Föreläsning 7 24 nov 2015

Observer (GoF) Man definierar ett "ett-till-många"-förhållande mellan objekt så att när ett objekt byter tillstånd så uppdateras alla beroende objekt automatiskt Man slipper att explicit uppdatera alla inblandade objekt Tillåter lösare koppling mellan objekt, så att dessa lättare kan återanvändas exempel: flera View-objekt observerar ett Model-objekt

Observer Behaviorial Pattern Objekt A (subjekt) kan registrera ett godtyckligt antal Observer-objekt B, C, D,..., osv När subjektet A byter tillstånd så meddelas (eng notify) samtliga observerobjekt B, C, D,..., utan att dessa behöver känna till varandra, eller subjektet Javas lyssnarklasser är ett exempel på Observer

Observer & Observable Java har även en basklass Observable för subjekt, och gränsnittet Observer som innehåller grundläggande funktionalitet för att göra egna observatörer

Saker att tänka på Vilket objekt startar uppdateringen? Alla metoder i subjektet anropar notify()-metoden, som sedan meddelar alla observatörer. Fördelen är att man minimerar risken för fel nackdelen är att man riskerar att anropa notify() väldigt många gånger om man anropar flera tillståndsändringar på rad. Den som ändrar ett tillstånd i subjektet anropar sedan subjektets notify()-metod, som sedan meddelar alla observatörer. Fördelen är att man kan avsluta en lång rad med tillståndsändringar med en enda uppdatering Nackdelen är att man riskerar att missa anropet av notify()

Saker att tänka på Vilken information ska finnas med när subjektet meddelar sina observatörer? Push - subjektet meddelar allt som har ändrats när den meddelar sina observatörer. Fördelen är att observatören vet om den behöver göra något åt saken eller inte nackdelen är att vissa observatörer förses med mycket mer information än de behöver Pull - subjektet meddelar bara att något har ändrats och låter observatörerna lista ut vad. Fördelen är att observatören själv kan kolla upp bara just de delar den är intresserad av nackdelen är att man riskerar att många saker som inte ändrats undersöks av observatören

Publisher / Subscriber Alternativ till Observer Man definierar ett antal kanaler (eng. topics), till vilka olika objekt kan publicera information De objekt som prenumererar på en kanal får då all information som publiceras De som publicerar behöver ingen explicit information om vilka objekt (om några) som lyssnar

Factory (GoF) Creational Pattern I stället för att skapa objekt med en publik konstruktor så har man en eller flera publika factory-metoder som returnerar objekt av den önskade typen Fabriksmetoden kan inkludera kod som bedömmer vilken klass av objekt som ska returneras Fabriksmetoden kan bestämma om ett nytt objekt alls ska instansieras, eller om man ska returnera en referens till ett som redan finns (jmf Singleton) Man kan ha flera fabriksmetoder med samma argumentsignatur

Factory Man kan låta fabriksmetoden returnera olika klasser beroende på indata Exempel: LjudInspelning och FilmSnutt ärver från typen Media. metoden mediafactory returnerar antingen en LjudInspelning eller en FilmSnutt beroende på vad filen filnamn.mp3 innehåller Media mymedia = mediafactory("filnamn.mp3");

Factory, punktexempel Antag att vi har skapat en klass för punkter, Point Internt lagras punkten med en x-koordinat och en y-koordinat Vi vill kunna skapa punkten utifrån både kartesiska och polära koordinater Detta går inte: double x = 20; double y = 20; double r = 14; double theta = math.pi/4; Point punkta = new Point(x, y); Point punktb = new Point(r,theta); Javakompilatorn vet ju inte vilken konsrtuktor vi menar i de olika fallen - de har ju samma signatur!

Factory, punktexempel public class Point { private double x, y; static Point createpolar(double r, double fi) { Point p = new Point(); p.x = r*math.cos(fi); p.y = r*math.sin(fi); return p; } } static Point createcart(double x, double y) { Point p = new Point(); p.x = x; p.y = y; return p; }

Builder (GoF) Creational Pattern Man separerar ett objekts representation och dess konstruktion En Builder är ett objekt som kan sätta ihop andra objekt, steg för steg I labb 4 förekommer ett exempel, StringBuilder. Det objekt som anropar de olika stegen i Builder-objektet brukar kallas för Director (regissör)

Builder Man kan konstruera ett objekt i lugn och ro, utan att vara begränsad av objektets interna representation, och när man är nöjd skapas ett objekt av den önskade typen Många klasser som har en tillhörande Builder-klass har en konstruktor som tar ett Builder-objekt som argument. t.ex: public String(StringBuilder sb); Man kan ha en struktur i det färdiga objektet som är mer effektiv, och en struktur i Buildern som är mer flexibel. För att konstruera ett lite mer komplext objekt kan Director-objektet anropa ett stort antal olika metoder i Buildern, men man riskerar inte att någon annan tråd kommer åt ett halvfärdigt objekt innan man är klar En Builder kan ta ett färdigt objekt som argument i konstruktorn och använda det för att bygga ett nytt