Mutability och State. Objekt-orienterad programmering och design Alex Gerdes, 2018
|
|
- Ulla Dahlberg
- för 6 år sedan
- Visningar:
Transkript
1 Mutability och State Objekt-orienterad programmering och design Alex Gerdes, 2018
2 Immutability E" icke muterbart (immutable) objekt är e" objekt vars 5llstånd inte kan förändras e;er a" det skapats.
3 Mutability Per default i Java arbetar vi med objekt som är muterbara (mutable), dvs kan förändras på e< eller annat sä<. Enklaste formen av förändring är a< värdet på a<ribut förändras (via se<ers). Det finns dock många sä< som objekt kan förändras låt se!
4 Live code Scheduler
5 Aliasing Om vi har två (eller fler) referenser 3ll samma objekt kallas dessa för alias. Formellt korrekt vore a< säga a< vi har två eller fler kopior av samma referens. Genom alias kan vi komma åt samma objekt, och dess metoder, från mer än e< ställe i koden. Om objektet är muterbart kan förändringar gjorda via e< alias överraska övriga som har referenser 3ll samma objekt. Ex: Point xy = new Point(1,2); Polygon p = new Square(xy); dosomethingwithpoint(xy); xy.x = 3; Vi skapar en Point och får en referens Square kommer lagra referensen internt e< alias och skulle kunna uppdatera sin Point Metoden får e< alias, och skulle kunna uppdatera via de<a. Vi har formarande kvar ursprungsreferensen och kan överraska övriga som få< den.
6 Live code Scheduler (add event)
7 Metoden equals I klassen Object har metoden equals följande utseende: public boolean equals(object obj) { return this == obj; } De5a betyder a5 om vi har två objekt betraktas de som lika endast om de är alias Alla klasser behöver därför definiera vad som menas med a5 e5 objekt är lika med e5 annat objekt
8 Metoden equals equals-metoden används på många ställen i bl.a. Collec6on-klasserna. Här är e: typiskt exempel på användning av equals: private Object[] elementdata =...;... public int indexof(object elem) { for (int i = 0; i < elementdata.length; i++) if (elem.equals(elementdata[i]) return i; } return -1; } Alla klasser behöver definiera vad som menas med a: e: objekt av klassen är lika med e: annat objekt.
9 Metoden equals Låt oss '(a på en klass Triangle: import java.awt.point; public class Triangle { private Point p1, p2, p3; } public Triangle(Point p1, Point p2, Point p3) { this.p1 = p1; this.p2 = p2; this.p3 = p3; }
10 Metoden equals Vid en första anblick kan det tyckas vara enkelt a3 avgöra likheten mellan två objekt av klassen Triangle om samtliga tre hörnpunkter är lika i de båda trianglarna borde trianglarna vara lika. De3a leder a3 equalsmetoden skulle få följande utseende: //-- Felaktig --// public boolean equals(object otherobject) { if (!(otherobject instanceof Triangle)) return false; Triangle other = (Triangle) otherobject; } return p1.equals(other.p1) && p2.equals(other.p2) && p3.equals(other.p3); Wrong!
11 Metoden equals Låt oss nu göra e. litet testprogram Triangle t1 = new Triangle(new Point(0,0), new Point(1,1), new Point(1,0)); Triangle t2 = new Triangle(new Point(2,2), new Point(4,3), new Point(1,0)); Triangle t3 = new Triangle(new Point(0,0), new Point(1,1), new Point(1,0)); System.out.println(t1.equals(t2)); System.out.println(t1.equals(t3)); Utskri5en blir vad vi förväntar oss: false true d.v.s. a. t1 och t2 är olika, samt a. t1 och t3 är lika
12 Metoden equals Låt oss nu krångla.ll det hela genom a3 införa en subklass ColoredTriangle.ll klassen Triangle import java.awt.point; import java.awt.color; public class ColoredTriangle extends Triangle { private Color color; } public ColoredTriangle(Color color, Point p1, Point p2, Point p3) { super(p1, p2, p3); this.color = color; }
13 Metoden equals Låt oss nu göra e. ny. testprogram: Triangle t1 = new Triangle(new Point(0,0), new Point(1,1), new Point(1,0)); Triangle t2 = new Triangle(new Point(2,2), new Point(4,3), new Point(1,0)); ColoredTriangle t3 = new ColoredTriangle(Color.GREEN, new Point(0,0), new Point(1,1), new Point(1,0)); System.out.println(t1.equals(t2)); System.out.println(t1.equals(t3)); Utskri6en blir false true d.v.s. a. t1 och t3 är lika. Men är verkligen e. objekt av klassen Triangle lika med e. objekt av klassen ColoredTriangle? Vi måste i metoden equals ta hänsyn Cll vilka typer som objekten i jämförelsen har.
14 Metoden equals I klassen Object finns metoden getclass() som returnerar vilken run2me-klass e4 objekt har. Denna metod kommer nu väl 2ll pass //-- Fortfarande felaktig --// public boolean equals(object otherobject) { Wrong! if (otherobject.getclass()!= this.getclass()) return false; Triangle other = (Triangle) otherobject; return p1.equals(other.p1) && p2.equals(other.p2) && p3.equals(other.p3); } Testkör vi nu med samma exempel som 2digare får vi med denna variant av equalsmetoden utskriben false false De4a resultat är vad vi vill ha. Dock är equals-metoden fordarande inte korrekt!
15 Metoden equals I The Java Language Specifica1on anges a( equals-metoden skall ha följande egenskaper: Skall vara reflexiv: För varje icke-nullreferens x skall det gälla a( x.equals(x) returnerar true Skall vara symmetrisk: För alla referenser x och y skall det gälla a( x.equals(y) returnerar true om och endast om y.equals(x) returnerar true Skall vara transi1v: För alla referenser x, y och z skall gälla a( om x.equals(y) returnerar true och y.equals(z) returnerar true så skall också x.equals(z) returnera true Skall vara konsistent: Om objekten Bll vilka x och y refererar inte har förändrats skall upprepade anrop av x.equals(y) returnera samma värde För alla icke-null referenser x skall gälla a( x.equals(null) skall returnera false
16 Metoden equals I equals-metoden för klassen Triangle måste vi ta hand om fallet då objektet som jämförelsen u9örs mot är null public boolean equals(object otherobject) { if (this == otherobject) return true; if (otherobject == null) return false; if (otherobject.getclass()!= this.getclass()) return false; Triangle other = (Triangle) otherobject; return p1.equals(other.p1) && p2.equals(other.p2) && p3.equals(other.p3); }
17 Hashcode En hash code är e' (litet) enskilt värde som beräknas från en (stor) struktur, för a' ge e' effek<vt sä' a' iden<fiera strukturen. Används i många effek<va datastrukturer som nycklar. I Java ärver alla objekt metoden public int hashcode() från Object. I Object implementeras denna (i vissa VM) <ll a' returnera e' värde baserat på referensens värde(!). Muterbara objekt bör göra override på hashcode(), (och equals()) så a' olika hash codes returneras för olika <llstånd. Om x.equals(y), så är x.hashcode() == y.hashcode()
18 Live code (explain hashmap) Date (equals, hashcode)
19 Quiz Vad innebär immutabilitet? Svar: E4 icke muterbart (immutable) objekt är e4 objekt vars ;llstånd inte kan förändras e?er a4 det skapats.
20 Många former av förändring Objekt kan vara muterbara för a0: A0ribut förändras (via se0ers) För a0ribut som håller referenser som pekar på andra muterbara objekt, så innebär en förändring av dessa också implicit en förändring av objektet som håller referensen. E.g. om objekt A har e0 a0ribut som är en array, och objekt B har Fllgång Fll en referens Fll samma array, så kan B uppdatera innehållet i arrayen och därigenom förändra Fllståndet för A.
21 Defensive copying För a& garantera a& inga alias finns /ll eventuella muterbara objekt vi har i a&ribut behöver vi skapa så kallade defensive copies: Om vi exponerar dessa objekt via ge&ers. Om vi i instansmetoder skickar dessa objekt som argument /ll externa metoder. Om vi tar in nya värden för a&ributen, via constructor eller via se&ers. OBS! Notera a& de&a inte bara gäller när vi strävar eeer immutability! Även om det objekt som har a&ributen inte är tänkt a& vara immutable, så vill vi forharande skydda oss mot oväntade förändringar via alias.
22 Live code SchedulerEvent
23 Mutate-by-copy Istället för a, ändra objektets 3llstånd, skapa en kopia med det nya 3llståndet och returnera denna istället. De,a ursprungliga objektet ändras inte, och andra som håller referenser 3ll det kan inte bli överraskade av alias updates. Kan å andra sidan leda 3ll a, många nya objekt skapas. Kan bli ineffek3vt.
24 Live code Date
25 Quiz När bör man göra classes immutable? Svar: Så o8a och i så hög grad som möjligt! Classes should be immutable unless there s a very good reason to make them mutable. If a class cannot be made immutable, limit its mutability as much as possible. (Joshua Bloch)
26 A" mutera eller icke mutera Tumregel: Immutable per default men låt objekt vars sy:e är a< förändras o:a vara mutable. Även om valet faller på mutable: Se All (via e.g. defensive copying) a< inga alias-problem uppstår. Bero internt på immutable objects så mycket som möjligt.
27 Quiz Hur bör vi tänka kring arv av immutable classes? Svar: Per default är svaret nej. Vi har inga garan?er för en subclass också är immutable, vilket kan sägas bryta mot Liskov Subs?tu?on Principle.
28 Immutable classes En class är helt immutable om: Alla a4ribut är final Även privata a4ribut krävs för trådsäkerhet, mer senare. Klassen i sig är final Dvs kan inte ärvas, så ingen risk för muterbara subclasses Alla a4ribut som har referenser Cll muterbara objekt: är private. returneras aldrig från metoder, vare sig direkt eller indirekt. håller den garanterat enda referensen Cll objektet i fråga (defensive copying). ändrar inte Cllstånd på objekten de refererar Cll eier inicalisering (doh). Referensen this does not escape constructor Krävs för trådsäkerhet mer senare, och i senare kurs.
29 Värdeseman*k Immutable objects har i grunden värde-seman+k dvs de uppför sig som ren data, e.g. int eller String (som är immutable i Java). Vi behöver inte använda defensive copying för aaribut som håller primicva värden och inte heller för aaribut som refererar Cll immutable objects. Ingen annan kan göra något dumt med dem oavsea!
30 Vinster med immutability Inga oväntade alias-uppdateringar det är säkert a5 bero på 8llståndet hos immutable objects. Inget behov av defensive copying av objekt som är immutable. Det är mycket lä5are a5 resonera och bevisa egenskaper för kod som arbetar med immutable objects. Immutable objects (done right) är all8d automa8skt trådsäkra, och lämpar sig bra för parallella beräkningar. Ingen risk a5 objekt kan hamna i inkonsekventa 3llstånd (inconsistent states). Högre maintainability alias-buggar är bland de allra jobbigaste a5 spåra och lösa.
31 Nackdelar med immutability Kan sägas bryta mot OCP om vi senare inser a5 vi behöver kunna mutera e5 objekt krävs förändringar av koden. Å andra sidan handlar OCP mycket om just a5 förutsäga förändringar (av kod). Vi bör alldd tänka eeer om e5 objekt lämpar sig för a5 vara immutable. Kan, naivt använt, leda Dll (extrem) ineffekdvitet. A5 modellera något som ska förändras mycket och oea (t ex animeras) med hjälp av immutable objects och mutate-by-copy leder Dll a5 väldigt många nya objekt skapas, vilket äter både minne och processordd. Å andra sidan kan det, rä5 använt, förhindra (extrem) ineffekdvitet.
32 Quiz: Immutable = pure? Antag a' vi har en class C som uppfyller alla krav för a' vara immutable, och följande kodsegment: C c = new C(); int x = c.getsomevalue(); Kan vi vara säkra på a' vi all@d får samma värde i x? Svar: Nej! Våra krav för immutability säger ingen@ng om a' metoder inte kan bero på y're, variabler.
33 Globalt (llgängligt Alla klasser och object har /llgång /ll en mängd saker per default. De använda allt som är public och static från alla paket och klasser som finns i scope. De kan skapa nya objekt genom a? anropa publika konstruktorer (eller publika sta/ska Factory Methods). Vi har inga garan/er för a? alla dessa är icke-muterbara, eller all/d returnerar samma saker när vi använder dem.
34 Singleton Pa,ern Restrict instan+a+on of a class to a single object. Whenever an instance of the class is requested, return that one object. Begränsa skapandet av instanser av en klass, så a? det bara finns en enda instans, och det är denna instans som returneras närhelst en sådan eberfrågas.
35 Singleton pa,ern Namnet Singleton Pa,ern kommer sig ur mängdlära, där en singleton är en mängd med enbart e4 element i sig. Singleton Pa4ern kan användas för a4 representera: Det kontext i vilket en komponent eller applika?on körs. E.g. config-filer, system-specifika detaljer, etc Specifika resurser som applika?onen använder: E.g. Database drivers, mobilens kamera, etc. Används på tok för oha, vilket har ge4 de4a pa4ern (delvis oförtjänt) dåligt rykte.
36 Singleton Pattern Singleton - singleton : Singleton + getsingleton() : Singleton - Singleton() Göm konstruktorn!
37 Live code Logger
38 Global state E" all&ör vanligt, men väldigt dåligt, användningsområde för Singleton Pa"ern är a" använda det för a" definiera objekt som håller globala 'llståndsvariabler (global state) alltså muterbara variabler som kan ändras och läsas från var som helst i koden. Jä"e-jä"e-jä"edåligt! Don t do it! Really don t! Kod som använder global state skapar beroenden som är extremt svåra a" överblicka och underhålla. Om du verkligen behöver state, skicka då det objekt som representerar de"a state explicit Oll de klasser som behöver bero på och uppdatera det. De"a ger explicita beroenden, som for&arande är starka, men ger bä"re överblick.
39 Summering Mutability är bra där det behövs men kan ställa 6ll problem. Begränsa mutability så mycket det bara går men inte mer. Använd inte muterbar global state! Defensive copying är bra ab använda som regel tänk all6d tanken! Implementera equals och hashcode metoder
40 What s next Block 6-2: Fler design pa5erns
Mutability och State. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018
Mutability och State Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018 Immutability Ett icke muterbart (immutable) objekt är ett objekt vars tillstånd inte
Föreläsning 3. Muterbara och icke-muterbara klasser. Delegering. Gränsnittet för en klass
TDA550 Objektorienterad programmering, fortsättningskurs Föreläsning 3 Muterbara och icke-muterbara klasser Delegering Gränsnittet för en klass Objektorienterad programmering fk 1 Föreläsning 3 Sidoeffekter
Föreläsning 7. Muterbara och icke-muterbara klasser Delegering Gränssnittet för en klass Metoden equals()
Föreläsning 7 Muterbara och icke-muterbara klasser Delegering Gränssnittet för en klass Metoden equals() Muterbara kontra icke-muterbara klasser Objekt som tillhör en icke-muterbar klass kan inte ändra
TDDD78 Viktiga begrepp, del 2
jonas.kvarnstrom@liu.se 2015 TDDD78 Viktiga begrepp, del 2 Identitet och likhet Är likhet och identitet samma sak? Oj, vi har samma kläder på oss idag! Nej, men likadana! Besserwisser 3 Detta är två rutor
Classes och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 8 Två designmönster, MVC och Observer/Observable. Designrekommendation
Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016
Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016 Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Objekt - klass Objekt - klass Objekt - klass + Objekt - klass public class
Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018
Static vs Dynamic binding Override vs Overload Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018 Quiz: Gissa typen? Object o = new Square(100,100); Polygon p =
Föreläsning 7. Muterbara och icke-muterbara klasser Delegering Gränssnittet för en klass Metoden equals()
Föreläsning 7 Muterbara och icke-muterbara klasser Delegering Gränssnittet för en klass Metoden equals() Muterbara kontra icke-muterbara klasser Objekt som tillhör en icke-muterbar klass kan inte ändra
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon
Programmering för språkteknologer II, HT2014. evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Hashtabeller
F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander
F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod
Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private
Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall
Föreläsning 7. Muterbara och icke-muterbara klasser Delegering Gränssnittet för en klass Metoden equals()
Föreläsning 7 Muterbara och icke-muterbara klasser Delegering Gränssnittet för en klass Metoden equals() Muterbara kontra icke-muterbara klasser Objekt som tillhör en icke-muterbar klass kan inte ändra
Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016
Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design Alex Gerdes, 2016 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon tripoly =
Subtyping, co- och contra-variance. Objekt-orienterad programmering och design Alex Gerdes, 2016
Subtyping, co- och contra-variance Objekt-orienterad programmering och design Alex Gerdes, 2016 Typer Java har två sorters typer primitiva typer och referens-typer. Primitiva typer är typer för värden:
TDDD78 Objektorientering i Java, del 4. Hur vet man om två objekt är lika? Hur undviker man objekt och när?
TDDD78 Objektorientering i Java, del 4 Hur vet man om två objekt är lika? Hur undviker man objekt och när? jonas.kvarnstrom@liu.se 2016 Identitet och likhet Är identitet och likhet samma sak? Oj, vi har
Principles of subclasses. Objekt-orienterad programmering och design Alex Gerdes, 2018
Principles of subclasses Objekt-orienterad programmering och design Alex Gerdes, 2018 Implementation inheritance Subclassing, eller implementation inheritance (implementationsarv), ger oss två fördelar:
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
public och private Obs: private inte skyddar mot access från andra objekt i samma klass.
public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private
Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Principles of subclasses Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018 Implementation inheritance Subclassing, eller implementation inheritance (implementationsarv), ger oss
Modulär design. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018
Modulär design Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018 Separation of Concern principle Do one thing do it well. Separation of Concern är inte specifikt
Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone.
TDA550 - Objektorienterad programvaruutveckling, fk Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone. Uppgift 1 Icke-muterbarhet kontra
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Konstruktorer Statiska metoder & attribut
1 Comparator & Comparable
1 Comparator & Comparable 1.1 Implementation av Comparable Att implementera Comparable innebär att man gör objekt av sin klass jämförbara med andra och att det därmed antas existera en naturlig ordning
Subtyping, co- och contra-variance. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017
Subtyping, co- och contra-variance Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017 Idag pratar vi om statiska typer...om inte annat anges. Subtypsrelationen
Modulär design Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Modulär design Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Vad är ett bra program? I kursen pratar vi om bra kod utifrån ett utvecklar-perspektiv, dvs det som gör koden lätt
DAT043 - Föreläsning 7
DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar
TENTAMEN OOP
TENTAMEN OOP 2014-01-19 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
12. Relationer och funktioner
Objektorienterad modellering och diskreta strukturer 12. Relationer och funktioner Sven Gestegård Robertz Institutionen för datavetenskap, LTH 2013 Laboration 4 Syntaxanalys Grammatik för (vår delmängd
"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde
Föreläsning 7 "Har en"-relation Arv "Har en" "Är en" Superklassen Object Överskuggning Fordonsexempel Seminarium 2 Relevanta uppgifter Uppgift 31 I exemplet Boll från förra föreläsningen gällde följande
Malmö högskola 2008/2009 CTS
Laboration 8 Avsikten med laborationen är att du lära dig skapa objekt med hjälp av klasser. Detta är en introduktion till ett objektorienterat tankesätt. Med hjälp av detta tankesätt kan du så småningom
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 Pelle Evensen, Daniel Wetterbro 5 november 2009 Sammanfattning Denna vecka ska vi titta på abstrakta klasser kontra interface,
UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.
Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language
Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder
Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1 Array och ArrayList Arrayer och ArrayList är till för att innehålla
Föreläsning 13 Innehåll
Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?
Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-6, TDA540 Dag: 207-0-24, Tid: 4.00-.00 Uppgift a) En abstrakt klass kan inte instansieras,
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).
1 (9) TENTAMEN: Objektorienterad programmering Läs detta! Uppgifterna är inte ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv din tentamenskod på varje blad (så att vi inte slarvar
Kopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
Objektorienterad Programmering DAT043
Objektorienterad Programmering DAT043 Föreläsning 3 22/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Kom ihåg: Visa Javas API. Nämn att slidesens också har tillhörande text på kurshemsidan.
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 Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,
Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14
Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 14 I torsdags & fredags: arrayer Deklaration, initiering, åtkomst Arrayer är referenser Arrayer som parametrar och returvärden Exempel
OOP Objekt-orienterad programmering
OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public
OOP Objekt-orienterad programmering
OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym
Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes
Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om
Föreläsning 5-6 Innehåll
Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]
Programmering för språkteknologer II, HT2011. Rum
Programmering för språkteknologer II, HT2011 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv11/pst2/ Idag - Hashtabeller - Flerdimensionella arrayer (2D) 2 Repetition -
OOP Objekt-orienterad programmering
OOP F10:1 OOP Objekt-orienterad programmering Föreläsning 10 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F10:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort
Modeller, Objekt och Klasser
Modeller, Objekt och Klasser Bildserie 3 Objekt Orienterad Programmering OO-programmering bygger på att vi som människor uppfattar tillvaron i termer av objekt - Bastu, pizza, öl,... Det borde vara lättare
Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.
Outline Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Undantag Design Hösttermin 2017 En frukt har ett namn Man kan lägga en frukt i
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Hashing Undantag Design Outline Hashing Undantag Design En frukt
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,
Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.
Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett
Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018
Subtyping och variance Objekt-orienterad programmering och design Alex Gerdes, 2018 Typer Java har två sorters typer primitiva typer och referens-typer. Primitiva typer är typer för värden: int, float
TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 TDDE11, 725G90/1 Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Introduktion OOP Instanser, instansvariabler, instansmetoder
Generics och polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018
Generics och polymorfism Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018 Live code Pair public class Pair { private A a; private B b; public A getfirst()
2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning
2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten
Malmö högskola 2007/2008 Teknik och samhälle
Laboration 9 Avsikten med denna laboration är att du ska jobba vidare med klasser. Uppgifterna går ut på att skriva metoder och att skriva konstruktorer. Laborationen bygger vidare på laboration 8. Skapa
Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och
Innehåll u OOP snabbintroduktion u Datatyper u Uttryck u Satser u Arv (intro) u Programvaruutveckling och programmering u Klassdesign och metodik (UML, CRC) u Arv, polymorfi och dynamisk bindning u Fält
Objektorientering: Lagring, räckvidd och livstid
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Objektorientering: Lagring, räckvidd och livstid Tre sorters variabler, två sorters metoder Räckvidd och livstid 2 Variabler (lokala och medlemsvariabler)
Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.
DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/3 2017 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack Klassen Object
UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.
Översikt UML Sekvensdiagram (dynamic structure) Informationsflöde genom programmet Användningsfall (use cases) Aktörers interaktion med systemet Paketdiagram Beroenden mellan paket abstrakta klasser Multipel
Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc
Föreläsning 5 (6) Metoder Metoder Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc Metoder Deklarera public void setnamn(string n) Åtkomstmodifierare Returtyp
Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)
Objektorienterad Programmering DAT043 Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Metoden clone() Skapa kopior av existerande objekt. Interface Cloneable Deep vs.
Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
LÖSNINGSFÖRSLAG
LÖSNINGSFÖRSLAG - 100406 Uppgift 1. a) Objekten som tillhör en icke-muterbar klass är oförändliga, dvs de behåller under hela sin livstid det tillstånd som de fick när de skapades. Icke-muterbara objekt
Lambdas. (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017
Lambdas (och fler design patterns) Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017 Funktioner En funktion (i programmeringstermer) är en operation som tar ett eller flera argument,
TUTORIAL: KLASSER & OBJEKT
TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan
Polymorfi. Objektorienterad och komponentbaserad programmering
Polymorfi Objektorienterad och komponentbaserad programmering Polymorfi, mångtydighet Polymorfi innebär att en viss konstruktion kan exekveras på olika sätt Överlagring av metoder ger ett polymorft beteende
SI-pass 4. Johan Brook och Jesper Persson. 25 september 2012. Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.
SI-pass 4 Johan Brook och Jesper Persson 25 september 2012 1. Sant eller falskt? Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner. Interfaces i Java kan innehålla privata
Lösningsförslag till tentamen
till tentamen 1 (6) Kurs Objektorienterad programmering Program D2 Läsår 2010/2011, lp 1 Examinator Uno Holmer Uppgift 1 (10 p) Ingen lösning ges. Se kurslitteraturen. Uppgift 2 (11 p) public class CounterButton
UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
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
Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..
Ett problem Kontrollstrukturer och er Hur sparas data T ex när man vill spara resultaten av en tävling Exempel med 3 deltagare: public class Competition private int result1; private int result2; private
Objektorienterad programmering i Java I
Laboration 4 Objektorienterad programmering i Java I Uppgifter: 1 Beräknad tid: 6 9 timmar Att läsa: Kapitel 7, 8 (stränghantering, arrayer och Vector) Utdelat material (paket) Syfte: Att kunna använda
Lösningar för tenta 2 DAT043,
Lösningar för tenta 2 DAT043, 2018-06-08. Uppgift 1 public class Car{ private String model; private String year; private double price; public Car(String model, String year, double price){ this.model =
Laboration A Objektsamlingar
Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se
Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Konstruktion av klasser med klasser
Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut
Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design
Integritetsprincipen Objektorienterad modellering och diskreta strukturer / design Designmönster och fallstudier Integritetsprincipen Gör attribut, metoder och klasser så hemliga de går. Lämna inte ut
Generics och polymorfism. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Generics och polymorfism Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Live code Pair public class Pair { private A a; private B b; public A getfirst() { return a; public
Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?
Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket
Design Patterns. Objekt-orienterad programmering och design Alex Gerdes, 2018
Design Patterns Objekt-orienterad programmering och design Alex Gerdes, 2018 Vad är ett design pattern? Ett design pattern (designmönster) är en (ofta namngiven) generell lösning av en vanligt återkommande
Tentamen Programmeringsteknik II Inledning. Anmälningskod:
Tentamen Programmeringsteknik II 2016-01-11 Inledning I bilagan finns ett antal mer eller mindre ofullständiga klasser. Några ingår i en hierarki: List, SortedList, SplayList och ListSet enligt vidstående
Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.
DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/4 2014 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack UML-översikt
Föreläsning 9: Arv och UML
TDA 545: Objektorienterad programmering Föreläsning 9: Arv och UML Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Quiz Vad betyder static? Varför skriver man get-metoder? public int getpos() { return pos;
Kort om klasser och objekt En introduktion till GUI-programmering i Java
Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på
Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015
Objektorienterad Programkonstruktion Föreläsning 6 23 nov 2015 Designmönster Färdiga "recept" för att lösa (del-)problem i struktureringen av ens program Mönster kan beskriva små komponenter eller stora
Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?
Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Djup/ytlig kopiering av containrar med referensobjekt. Allmänt. Vad ska container innehålla? 2004-05-10
Djup/ytlig kopiering av containrar med erensobjekt Allmänt Om man inte vet hur många objekt man kommer behöva under exekvering så måste dynamiska lagringsstrukturer användas. stack, kö, lista, träd osv
Objekt, Klasser, Paket m. m.
Objekt, Klasser, Paket m. m. Bildserie 3 Objekt Ett objekt karakteriseras av - Identitet, det som gör det möjligt att särskilja objektet från andra objekt - Tillstånd, den data som finns i objektet - Beteende,
2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa
2203$( Föreläsning ii - Mer om Java bla this och konstruktorer Av Björn Eiderbäck Email: bjorne@nada.kth.se Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: 7906277 previous next Exempel: lampa Light1 #
Trådar och trådsäkerhet. Objekt-orienterad programmering och design Alex Gerdes, 2018
Trådar och trådsäkerhet Objekt-orienterad programmering och design Alex Gerdes, 2018 Ak#va objekt Det är välkänt från vardagslivet a2 saker händer sam5digt. Det är vik5gt a2 det underliggande systemet
Laboration 1 - Grunderna för OOP i Java
Uppdaterad: 2006-08-31 Laboration 1 - Grunderna för OOP i Java Inledning Laborationen går ut på att lära sig grunderna för objektorienterad programmering, samt motsvarande språkkonstruktioner i Java. Labben