Undantag, Sammanfa,ning och Tentamensinfo. Objektorienterad programmering och design Alex Gerdes, 2018
|
|
- Oliver Sandström
- för 6 år sedan
- Visningar:
Transkript
1 Undantag, Sammanfa,ning och Tentamensinfo Objektorienterad programmering och design Alex Gerdes, 2018
2 Saker går fel av många olika anledningar. Kass kod. Programmeraren har skrivit kod med buggar, som e.g. refererar :ll e; objekt som inte finns, indexerar utanför en array, dividerar med 0, etc. Felak:g användning av API. Programmeraren har inte läst dokumenta:onen, och uppfyller inte uppställda villkor, e.g. skickar e; nega:vt tal :ll en metod som bara hanterar posi:va tal. Externa faktorer som programmet inte har kontroll över, e.g. nätverket går ner, databasen kraschar, DVD:n är inte isa;, etc.
3 Felhantering Äldre programspråk (som C) har ingen strukturerad felhantering. Fel måste signaleras :ll användaren via värdet som returneras, så kallade felkoder. Leder :ll olika konven:oner, kra?igt ökad komplexitet, etc. Moderna impera:va programspråk (som Java) har strukturerad felhantering via excep+ons. DeFa innebär af vi slipper använda felkoder. Använd aldrig felkoder i Java. Aldrig. Många använder felkoder foriarande don t!
4 Excep&ons E" excep%on (undantag) i Java är e" objekt som representerar, och innehåller informa?on om, e" fel som uppstå" av en eller annan anledning. E" excep?on kan kastas (throw). E" excep?on kan fångas (catch). När e" excep?on inträffar innebär det en form av non-local transfer of control. Koden följer inte den normala strukturen, utan kan hoppa?ll e" catch-block långt bort från där excep?on kastas.
5 Error vs Excep+on Alla former av fel-objekt är i Java sub-klasser 6ll klassen Throwable, som namnet 6ll trots är en klass och inte e; interface. Throwable Error representerar e; fel som inte går a; återhämta sig från, exekveringen ska avslutas. E.g. VirtualMachineError Kan fångas, men bör bara fångas för a; avsluta programmet på e; snyggt sä;. Error Run3meExcep3on Exception
6 Checked vs Unchecked RuntimeException representerar buggar saker som inte borde inträffa och därför inte borde behöva varnas för. E.g. ArrayIndexOutOfBoundsException, IllegalArgumentException Dessa är unchecked, dvs behöver inte deklareras från metoder. Även Error och dess subklasser är unchecked. Alla andra exceptions är checked de representerar saker som vi förväntar oss kommer att inträffa under normal körning undantagsfall, förvisso, men ändå. Dessa måste vi varna användare för. E.g. FileNotFoundException, SQLException RuntimeException Unchecked excepdons Exception Checked exceptions
7 Checked excep*ons För checked exceptions måste vi deklarera, i metoders signaturer, om de kan komma att kasta exceptions av typen i fråga: public String readfile(string filename) throws FileNotFoundException { } En metod som anropar readfile måste antingen fånga FileNotFoundException, eller själv deklarera att den kan komma att kasta samma exception. Kallas exception propagation
8 A" fånga excep-ons public void appendfile(string filename, String str) throws IOException { try { String contents = readfile(filename); contents += str; writefile(filename, contents); } catch (FileNotFoundException e) { createfile(filename); writefile(filename, str); } } Vi fångar en sorts fel Men kan fortfarande orsaka andra sorters IOException, e.g. om vi inte har permission att skriva.
9 Ini$alisering av objekt
10 Ini$alisering av objekt När vi ber om att skapa ett nytt objekt med ett anrop till en konstruktor, sätter vi igång en kedja av händelser, som (förhoppningsvis, om inga exceptions händer) mynnar ut i att vi får tillbaka ett objekt av typen i fråga.
11 Initialisering av objekt 1. Sta&sk ini&alisering av klassen ( maskinen startar upp ). static ini&alizer blocks, samt ini&alisering för static a>ribut. Görs bara om maskinen inte redan startats av e> &digare anrop &ll konstruktor eller någon static metod (eller användning av static a>ribut). 2. Anrop &ll konstruktorn för objektets superklass ( maskinen utgår från &digare modell ) Explicit anrop &ll någon super( )-konstruktor måste göras allra först i en konstruktor. Om ingen super-konstruktor anropas explicit, anropas implicit super(). 3. Ini&alisering av objektet ( maskinen skapar grunden ) Non-sta&c ini&alizer blocks, samt ini&alisering för non-sta&c a>ribut. 4. Exekvering av konstruktorn självt ( maskinen färdigställer ) Koden som explicit skrivits i konstruktorn, förutom eventuellt anrop &ll en super-konstruktor.
12 Exempel på ini+alisering public class Init { static String hello = Hello! ; int x = 5; String foo; } Init() { constructorcode(); } Init init = new Init(); ======================== hello = Hello! ; super(); x = 5; foo = null; constructorcode(); E3 anrop av konstruktorn resulterar i 1. static init 2. super 3. object init 4. constructor
13 Default constructor Alla klasser har en default constructor som skapas oavsett om den skrivs ut eller inte: public MyClass(){} Den skapas bara om inga andra konstruktorer definieras. Så fort någon annan konstruktor definieras, oavsett signatur, så skapas ingen default constructor. Om en konstruktor i en sub-klass inte gör ett explicit anrop till någon super-konstruktor, då anropas implicit super(), vilket (om den inte omdefinierats) innebär default constructor. Felmeddelanden av typen There is no default constructor available in beror på att superklassen definierat en konstruktor med annan signatur, medan sub-klassen fortfarande försöker implicit anropa super(), som inte längre skapas implicit.
14 Sammanfa&ning
15 Quiz Vad är vårt mål? Svar: Att ni ska lära er att skriva objekt-orienterad kod, som är Lätt att underhålla (maintainable) Testbar Robust vid förändringar Återanvändbar (reuseable) Utökningsbar (extensible) Objekt-orienterad programmering och design
16 Småskalig programmering Triviala program Få klasser Några 100-tal rader kod En eller e9 fåtal programmerare Ingen eller kort livs<d Just do it
17 Storskalig programmering Mycket komplexa programsystem Flera miljoner rader kod 100-tals programmerare, geografiskt utspridda Lång livstid Software engineering Behov av verktyg Behov av processer Any code of your own that you haven't looked at for six or more months might as well have been written by someone else. - Eagleson's law
18 Objekt-orientering Objekt-orientering är en metodik för a2 rä2 använd! reducera komplexitet i mjukvarusystem. Rä2 använd ger objekt-orientering stora möjligheter Bll: Code reuse Extensibility Easier maintenance Fel använd riskerar objekt-orientering a2 skapa extra komplexitet Big ball of mud Det finns mycket dålig kod därute Det finns väldigt många missförstånd kring objekt-orientering.
19 Objekt-orienterad modellering Ett program är en modell av en (verklig eller artificiell) värld. I en objekt-orienterad modell består denna värld av en samling objekt som tillsammans löser den givna uppgiften. De enskilda objekten har specifika ansvarsområden. Varje objekt definierar sitt eget beteende. För att fullgöra sin uppgift kan ett objekt behöva support från andra objekt. Objekten samarbetar genom att kommunicera med varandra via meddelanden. Ett meddelande till ett objekt är en begäran att få en uppgift utförd. Alla dessa kriterier ska vara uppfyllda!
20 Design Designen (modellen) utgör underlaget för implementationen. Bra design minskar kraftigt tidsåtgången för implementationen. Brister i designen överförs till implementationen och blir mycket kostsamma att åtgärda. Vanligaste misstaget i utvecklingsprojekt är att inte lägga tillräckligt med tid på att ta fram en bra design. Bra design är svårt!! I allmänhet bör mer tid avsättas för design än för implementation.
21 Lärandemål
22 Blooms lärandepyramid DESIGNA, IMPLEMENTERA UTVÄRDERA ANALYSERA ANVÄNDA, APPLICERA REDOGÖRA KÄNNA IGEN Kod Verktyg och Principer
23 Lärandemål konkret Kunskap och förståelse: REDOGÖRA för objekt-orienterade design-principer. KÄNNA IGEN och REDOGÖRA för olika objekt-orienterade design-mönster, inklusiver deras sy?e och effekt. Färdigheter och förmåga: APPLICERA design-principer och design-mönster för ac åstadkomma sund objekt-orienterad design. ANVÄNDA och REDOGÖRA för grundläggande objekt-orienterade koncept, som klasser och objekt, primi/ver och referenser, metoder och konstruktorer, variabler och a6ribut, etc. ANVÄNDA och REDOGÖRA för mer avancerade språkmekanismer och tekniker, som excep/ons, generics, threads, defensive copying, etc. ANVÄNDA och REDOGÖRA för arv och parameteriserade typer, och därdll hörande mekanismer, för ac åstadkomma polymorfism och återanvändning av kod. DESIGNA och IMPLEMENTERA objekt-orienterade program för en given domän. UTFÖRA och BESKRIVA testning av objekt-orienterade program. Värderingsförmåga och förhållningssäc: ANALYSERA och UTVÄRDERA kod enligt principer för god objekt-orienterad design och implementadon.
24 Laboration: egen kod Sy#ar 'll a) ni ska få träna på a) använda tekniska aspekter, och få en känsla för polymorfism och code reuse Arv, delegering, generics(?), overriding,... Testar (främst) följande lärandemål: ANVÄNDA och REDOGÖRA för grundläggande objekt-orienterade koncept, som klasser och objekt, primi.ver och referenser, metoder och konstruktorer, variabler och a4ribut, etc. ANVÄNDA och REDOGÖRA för arv och parameteriserade typer, och där'll hörande mekanismer, för a) åstadkomma polymorfism och återanvändning av kod. UTFÖRA och BESKRIVA testning av objekt-orienterade program. (ANVÄNDA och REDOGÖRA för mer avancerade språkmekanismer och tekniker, som excep.ons, generics, trådar, defensive copying, etc.)
25 Labora&on: annans kod Sy#ar 'll a) ni ska träna på a) läsa och förstå existerande kod, a) anpassa egen och annans kod, och förbä)ra kod med hjälp av strukturerad refaktorering. Testar (främst) följandelärandemål: APPLICERA design-principer och design-mönster för a) åstadkomma sund objektorienterad design. ANVÄNDA och REDOGÖRA för mer avancerade språkmekanismer och tekniker, som excep%ons, generics, defensive copying, etc. ANALYSERA och UTVÄRDERA kod enligt principer för god objekt-orienterad design och implementa'on. DESIGNA och IMPLEMENTERA objekt-orienterade program för en given domän på e) sunt sä) med avseende på korrekthet, modifierbarhet och återanvändbarhet.
26 Inlämningsuppgift Inlämningen görs i samma grupper som 1digare. Testar (främst) följande lärandemål: ANALYSERA och UTVÄRDERA kod enligt principer för god objekt-orienterad design och implementa1on. KÄNNA IGEN och REDOGÖRA för olika objekt-orienterade design-mönster, inklusiver deras syde och effekt. APPLICERA design-principer och design-mönster för af åstadkomma sund objekt-orienterad design.
27 Muntlig tentamen Testar följande lärandemål: REDOGÖRA för objekt-orienterade design-principer. KÄNNA IGEN och REDOGÖRA för olika objekt-orienterade design-mönster; inklusive deras och effekt. REDOGÖRA för grundläggande objekt-orienterade koncept, som klasser och objekt, primi.ver och referenser, metoder och konstruktorer, variabler och a4ribut, etc. REDOGÖRA för mer avancerade språkmekanismer och tekniker, som excep.ons, generics, threads, defensive copying, etc. REDOGÖRA för arv och parameteriserade typer, och därcll hörande mekanismer, för ad åstadkomma polymorfism och återanvändning av kod.
28 Muntlig tentamen När: Under vecka 3, vid en 1dpunkt ni själva bokar på kurshemsidan Var: EDIT 5471, 6471 och (4/5/6)128 Vem: Dr. Alex Gerdes, Dr. Niklas Broberg, Dr. Jonas Almström Duregård Vad: se muntamanuset på kurshemsidan Hjälpmedel: Inga Tillhandahålles: UML syntax cheat sheet
29 Roadmap Delmoment 1. Tekniska verktyg och mekanismer 2. Principer 3. Pa:erns 4. Tekniker
30 Tekniska verktyg Klasser, objekt, gränssni2 (interfaces), typer, referenser (1-2) Sta=ska vs dynamiska typer, overriding och overloading (2-2) Arv vs delegering (3-1) Generics, varians (3-2, 4-1) Excep=ons (7-2) Trådar (7-1) Polymorfism (4-1) Encapsula=on (4-2)
31 Roadmap Delmoment 1. Tekniska verktyg och mekanismer 2. Principer 3. Pa:erns 4. Tekniker
32 Design-principer SOLID Single Responsibility Principle Open-Closed Principle Liskov Subs<tu<on Principle Interface Segrega<on Principle Dependency Inversion Principle Generella Composi<on over Inheritance (3-1) High Cohesion, Low Coupling (4-2) Separa<on of Concern (5-1) Command-Query Separa<on (5-1) Law of Demeter (7-1)
33 OPC: The Open-Closed Principle So1ware modules should be open for extension, but closed for modifica=on. (Bertrand Meyer) Förändring är det enda som är konstant. Utveckla framåt-kompatibelt förutsäg varförändring kommer behövas. Föreläsning 1-1
34 Dependency Inversion Principle Depend on abstractions, not on concrete implementations. Genom a( använda supertyper istället för subtyper kan vi minska beroendet av en specifik klass. Föreläsning 2-1, mer på 4-1
35 Single Responsibility Principle Föreläsning 4-2 A class should have only one reason to change. (Robert C. Mar8n)
36 ISP: Interface Segregation Principle No client should be forced to depend on methods it does not use. Om e% objekt A är stort, med mycket funk6onalitet, och objekt B beror på en liten del av denna funk6onalitet: Introducera en abstrak6on vars gränssni% är precis den del av A som B behöver bero på. Föreläsning 6-2
37 Liskov Subs+tu+on Principle If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o1 is subsktuted for o2, then S is a subtype of T. (Barbara Liskov) S är en äkta subtyp till T endast om, för varje publik metod som finns i både S och T: S s metod godtar alla värden som T s metod godtar S gör alla beräkningar på denna indata som T gör (och kanske fler). Föreläsning 2-2
38 Roadmap Delmoment 1. Tekniska verktyg och mekanismer 2. Principer 3. Pa:erns 4. Tekniker
39 Vad är ett design pattern? E" design pa*ern (designmönster) är en (o2a namngiven) generell lösning av en vanligt återkommande situa9on inom (mjukvaru-)design. Termen och konceptet kommer ursprungligen ifrån arkitektur. Vi pratar mest om design pa"erns inom objekt-orienterad design, men de existerar (mer eller mindre u"alade och erkända) inom alla paradigmer. E" design pa"ern har ingen färdig kod de är abstrakta mallar för hur e" problem kan lösas. Formaliserade best-prac9ces. I en given situa9on och kontext kan vi instansiera e" design pa"ern med specifika klasser, metoder, etc, och få en färdig lösning.
40 Crea%onal Pa+erns Berör hur objekt skapas Factory Factory Method Singleton
41 Behavioral Patterns Berör hur objekt kommunicerar e.g. vilka metoder och signaturer vi använder Observer Template Method, Strategy, State Iterator Chain of Responsibility
42 Structural Pa*erns Berör hur vi strukturerar komponenter E.g. vilka klasser och interfaces vi bör använda, och hur de bör bero av varandra Adapter Bridge Composite Decorator Facade
43 Architectural Patterns Berör hur vi strukturerar våra program på en högre nivå än klasser Module Model-View-Controller
44 The Complete List (för tentan) Adapter, Bridge, Chain of Responsibility, Composite, Decorator, Facade, (Abstract) Factory, Factory Method, Iterator, Model- View-Controller, Module, Observer, Singleton, State, Strategy, Template Method
45 Roadmap Delmoment 1. Tekniska verktyg och mekanismer 2. Principer 3. Pa:erns 4. Tekniker
46 Tekniker Refactoring (1-1) Func2onal Decomposi2on (4-2) Immutability (6-1) Defensive Copying (6-1) Mutate-by-copy (6-1) Method Cascading (6-2)
47 Frågor?
Undantag, Sammanfattning och Tentamensinfo. Objekt-orienterad programmering och design Alex Gerdes, 2016
Undantag, Sammanfattning och Tentamensinfo Objekt-orienterad programmering och design Alex Gerdes, 2016 Saker går fel av många olika anledningar. Kass kod. Programmeraren har skrivit kod med buggar, som
Sammanfattning och Tentamensinfo Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Sammanfattning och Tentamensinfo Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018 Den här veckan Måndag: Retrospektiv övning, övning på gamla tentauppgifter Tisdag (idag): Retrospektiv
Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016
Objekt-orienterad Programmering och Design TDA551 Alex Gerdes, HT-2016 Kursteamet Dr. Alex Gerdes kursansvarig, föreläsare Dr. Niklas Broberg examinator, (föreläsare) Fredrik Sjöholm handledare Johan Andersson
Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018
Objekt-orienterad programmering och design DIT953 Niklas Broberg, 2018 Kursteamet Niklas Broberg kursansvarig, föreläsare, examinator Johannes Åman Pohjola föreläsare Assistenter: Karin Wibergh Sarosh
Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018
Objekt-orienterad Programmering och Design TDA552 Alex Gerdes, HT-2018 Kursteamet Dr. Alex Gerdes examinator och föreläsare (Dr. Niklas Broberg föreläsare) Handledare: Sólrún Halla Einarsdóttir Yazan Ghafir
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
Design by Contract, Exceptions, Initialisering. Objekt-orienterad programmering och design (DIT952) Johannes Åman Pohjola, 2017
Design by Contract, Exceptions, Initialisering Objekt-orienterad programmering och design (DIT952) Johannes Åman Pohjola, 2017 Design by Contract Designfilosofi där en metods specifikation betraktas som
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 =
Introduktion. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017
Introduktion Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017 Vad är ett bra program? Korrekt? Effektivt? Användbart? Flexibelt? Robust? Skalbart? Enkelt? Läsbart? Testbart? Maintainable?
Introduktion. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Introduktion Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018 Vad är ett bra program? Korrekt? Effektivt? Användbart? Flexibelt? Robust? Skalbart? Enkelt? Läsbart? Testbart? Maintainable?
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
Design by Contract, Exceptions. Objekt-orienterad programmering och design (DIT953) Johannes Åman Pohjola, 2018
Design by Contract, Exceptions Objekt-orienterad programmering och design (DIT953) Johannes Åman Pohjola, 2018 Design by Contract Designfilosofi där en metods specifikation betraktas som ett kontrakt mellan
Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016
Objektorienterad Programkonstruktion Föreläsning 4 8 nov 2016 Nästade klasser I Java går det att deklarera en klass inuti en annan klass. Vi kallar detta för att en yttre klass innehåller en inre klass.
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
Introduktion och OO. Objekt-orienterad Programmering och Design (TDA552) Alex Gerdes, HT-2018
Introduktion och OO Objekt-orienterad Programmering och Design (TDA552) Alex Gerdes, HT-2018 Vad är ett bra program? Korrekt? Effektivt? Användbart? Flexibelt? Robust? Skalbart? Enkelt? Läsbart? Testbart?
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
Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15
DAVA15 Objekt, klasser Vad är det? Vad är sambandet mellan dem? Vad är skillnaden mellan dem? Tillstånd Signatur Kommunikation Typ Fält, parametrar och lokala variabler Likheter och skillnader Räckvidd
Design Patterns. Objekt-orienterad programmering och design Alex Gerdes, 2016
Design Patterns Objekt-orienterad programmering och design Alex Gerdes, 2016 Vad är ett design pattern? Ett design pattern (designmönster) är en (ofta namngiven) generell lösning av en vanligt återkommande
Principer, Pa+erns och Tekniker. Objekt-orienterad programmering och design Alex Gerdes, 2018
Principer, Pa+erns och Tekniker Objekt-orienterad programmering och design Alex Gerdes, 2018 Live code tda551.polygon AbstractPolygon # getpointswithbase(abstractpolygon) : List # getpoints()
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()
Dependencies High cohesion, low coupling. Objekt-orienterad programmering och design Alex Gerdes, 2018
Dependencies High cohesion, low coupling Objekt-orienterad programmering och design Alex Gerdes, 2018 Vad är ett bra program? Korrekt? Effektivt? Användbart? Flexibelt? Robust? Skalbart? Enkelt? Läsbart?
Introduktion. Objekt-orienterad Programmering och Design (TDA551) Alex Gerdes, HT-2016
Introduktion Objekt-orienterad Programmering och Design (TDA551) Alex Gerdes, HT-2016 Vad är ett bra program? Korrekt? Effektivt? Användbart? Flexibelt? Robust? Skalbart? Enkelt? Läsbart? Testbart? Maintainable?
HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)
Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN) Dagens agenda Admin Tentatid och plats Tillåtet på tentan EDAF10 Föreläsning inför XL-projektet
Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.
Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel
Dependencies High cohesion, low coupling. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018
Dependencies High cohesion, low coupling Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018 Vad är ett bra program? Korrekt? Effektivt? Användbart? Flexibelt? Robust? Skalbart? Enkelt?
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
Principer, Patterns och Tekniker. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018
Principer, Patterns och Tekniker Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018 Live code DIT952.polygon AbstractPolygon + paint(graphics)
Principer, Patterns och Tekniker. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Principer, Patterns och Tekniker Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Live code DIT952.polygon AbstractPolygon # getpointswithbase(abstractpolygon) : List
JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012
DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012 Innehåll Testning med JUnit Refactoring Några designprinciper JUnit Ramverk i Java för testning av Java-klasser Utvecklat av Gamma
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
Generic type declarations. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Generic type declarations Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Polymorfism Polymorfism är värdefullt ger hög grad av reuseability och extensibility. You know this by
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
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker
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,
Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier
Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv
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
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker
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:
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
Testning av program. Verklig modell för programutveckling
Fel i program När man skriver program uppkommer alltid fel. Felen kan indelas i följande kategorier: Under kompileringen upptäcker kompilatorn fel som handlar om att man använt konstruktionerna i programspråket
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
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:
Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.
Klient/server Översikt Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning. Lektion 1: Webbtekniker från Microsoft Microsoft webbtekniker. ASP.NET. Klientsidan. Internet Information Server.
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
Objektorienterad Programkonstruktion. Föreläsning jan 2016
Objektorienterad Programkonstruktion Föreläsning 13 19 jan 2016 Tentamen Del I, E del Flervalsfrågor 20/25 krävs för godkänt, ger betyg E Upp till 7 möjliga bonuspoäng Del II, Högrebetygsdel Problemfrågor
Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal
Tentamen DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl 14.00 17.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna
Design Patterns Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017
Design Patterns Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017 Vad är ett design pattern? Ett design pattern (designmönster) är en (ofta namngiven) generell lösning av en vanligt
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
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
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
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
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
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:
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
Separation of Concern. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018
Separation of Concern Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018 Modulär design Fördelar med välgjord modulär design: Lätt att utvidga Moduler går
Klassen javax.swing.timer
Klassen javax.swing.timer I Swing finns en klass Timer som man kan använda för att upprepa en vis kodsekvens med jämna tidsmellanrum. Ett objekt av klassen Timer exekveras som en egen tråd. Ett objekt
TDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Typhierarkier del 2 Vad krävs? Hur fungerar det? Hur får en subtyp fungera egentligen? Krav på hierarkier 1 3 Får subtypen LinkedList sakna metoder från
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
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Överlagring (overloading) Arv
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
Instuderingsuppgifter läsvecka 2
Instuderingsuppgifter läsvecka 2 1. 2. 3. 4. 5. 6. 7. 8. 9. En referensvariabel har både en statisk typ och en dynamisk typ. Förklara dessa båda begrepp! Förklara begreppet polymorfism. Förklara hur statisk
SOLID är en akronym för fem stycken designprinciper som används vid mjukvaruutveckling. SOLID står för:
Lektion 32 Övningar Korta punkter Jag vill ha en redovisning från alla grupper där ni går igenom person för person vad personen har ansvarat för och vad och vem personen har parprogrammerat på. Ta även
Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag
Föreläsning 12 Föreläsning 12 Rörliga figurer Klassen Timer Undantag Något om applets Rörliga appletsfigurer Klassen Timer Undantag Något om applets Klassen javax.swing.timer I Swing finns en klass Timer
Separation of Concern. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017
Separation of Concern Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017 Modulär design Ett programsystem är för stort för att kunna förstås i sin helhet.
OOP Objekt-orienterad programmering
OOP F12:1 OOP Objekt-orienterad programmering Föreläsning 12 Mer om JOptionPane Undantagshantering Vad är det? try catch Kasta egna undantag Filhantering spara objekt mellan körningar Användardialog via
Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)
Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061) HT1 2014, FÖRELÄSNING 14 (INFÖR TENTAN) Dagens agenda Admin Tentatid och plats Tillåtet på tentan EDAF10 Föreläsning inför XL-projektet
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
Föreläsnings 9 - Exceptions, I/O
Föreläsnings 9 - Exceptions, I/O Josef Svenningsson Tisdag 6/11 Undantag - Exceptions Kommer ni ihåg det här programmet? Det var ett av de första ni såg i första föreläsningen. import javax.swing.*; public
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
Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser
Föreläsning 8 Arv och abstrakta klasser Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen (extends) Den nya klassen behåller alla egenskaper som den gamla
Att skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
Designmönster/Design patterns
Johan Eliasson Design patterns Designmönster/Design patterns Vad är det? Beprövade lösningar till återkommande programmeringsproblem Plattformsoberoende Beskrivs ofta med hjälp av UML Baseras på en bok
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
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,
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 =
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
Lösningar till tentamen i EDAF25
Lösningar till tentamen i EDAF25 21 aug 2017 Lösning 1 Javaklasser (många varianter finns naturligtvis): class Client { private Invoker invoker; public void newcommand(string cmdtext) { Command cmd; if
Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal
Tentamen DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl 9.00 12.00 Hjälpmedel: penna, suddgummi, linjal Tentan har två delar om vardera 30 poäng Maximala betygsgränser (gränserna kan
Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel
Lösningar till Fiktiv Tentamen på kursen 2D4135 Objektorienterad programmering, design och analys med Java vt2004 Teoridel T1) (4p) Förklara kort följande grundläggande begrepp inom objektorienterad programmering:
Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine
Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Klassen calculator Signatur Calculator
Design Patterns. En kort introduktion
Design Patterns En kort introduktion Vad är ett designmönster? Ett designmönster är en (namngiven) lösning på ett i en viss omgivning ofta återkommande problem. I mjukvaru-världen: En uppsättning klasser
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
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
TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.
Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:
Objektorienterad Programkonstruktion, DD1346. Tentamen , kl
Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 Tentamen 2016 03 18, kl. 14.00 17.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del I
Länkade strukturer, parametriserade typer och undantag
Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer
UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda
Objektorienterad modellering och design (EDAF25) Föreläsning 3 UML Objektdiagram Agenda UML objekt och sekvensdiagram Design smells Designprinciper (DRY, SRP, OCP, DIP) (, ) Att göra denna och nästa vecka:
Felhantering TDDD78, TDDE30, 729A
Felhantering TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Felhantering 2 Ofta antar vi att allt ska fungera Alla filer vi behöver finns går att öppna Tillräckligt mycket minne finns Servrar som
Objektorienterad programmering, allmänt
Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 juni 2005 1 Vilka egenskaper vill vi att program ska ha? Förslag (en partiell lista): De ska... gå snabbt att skriva vara
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?
Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt Sven-Olof Nyström Uppsala Universitet 17 mars 2005 1. Korrekthet 2. Robusthet 3. Utökbarhet 4. Återanvändbarhet 5. Kompatibilitet
Imperativ programmering. Föreläsning 4
Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering
UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda
Objektorienterad modellering och design (EDAF25) Föreläsning 3 UML Objektdiagram Agenda UML objekt och sekvensdiagram Design smells Designprinciper (ALP, SRP, OCP, DIP) (, Composite) Att göra denna och
Kursombud. Objektorienterad modellering och diskreta strukturer / design. Agile? Designprinciper EDAF10 EDA061. Lennart Andersson. Grupper för projekt
Kursombud Objektorienterad modellering och diskreta strukturer / design Designprinciper Lennart Andersson EDAF10 EDA061 Reviderad 2010 09 02 2010 OMD 2010 F2-1 Att göra Agile? OMD 2010 F2-2 Grupper för
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
"Ä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
Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011
Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011 Text inom [] avser kommentarer till rättningen, ofta sådant som många missuppfattat eller gjort fel på. Del A. Teoriuppgifter 1. Återanvändning:
Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder
Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i
Tentamen Programmering fortsättningskurs DIT950
Tentamen Programmering fortsättningskurs Datum: 2015-03-17 Tid: 08.30-12.30 Hjälpmedel: Engelskt-Valfritt språk lexikon Betygsgränser: U: -23 G: 24-43 VG: 44-60 (max 60) Lärare:. Någon besöker ca 10.00