Undantag, Sammanfattning och Tentamensinfo. Objekt-orienterad programmering och design Alex Gerdes, 2016

Relevanta dokument
Sammanfattning och Tentamensinfo Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Undantag, Sammanfa,ning och Tentamensinfo. Objektorienterad programmering och design Alex Gerdes, 2018

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

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

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

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

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

Design by Contract, Exceptions, Initialisering. Objekt-orienterad programmering och design (DIT952) Johannes Åman Pohjola, 2017

Classes och Interfaces, Objects och References, Initialization

Introduktion. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2017

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

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Design by Contract, Exceptions. Objekt-orienterad programmering och design (DIT953) Johannes Åman Pohjola, 2018

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

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

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

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

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

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

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

Introduktion och OO. Objekt-orienterad Programmering och Design (TDA552) Alex Gerdes, HT-2018

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

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

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

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

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 (DIT952) Niklas Broberg, 2016

Principer, Pa+erns och Tekniker. Objekt-orienterad programmering och design Alex Gerdes, 2018

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

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

Generic type declarations. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

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

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

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

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

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

SOLID är en akronym för fem stycken designprinciper som används vid mjukvaruutveckling. SOLID står för:

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

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

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

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

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

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Kursombud. Objektorienterad modellering och diskreta strukturer / design. Agile? Designprinciper EDAF10 EDA061. Lennart Andersson. Grupper för projekt

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 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

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

Testning av program. Verklig modell för programutveckling

Designmönster/Design patterns

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

Instuderingsuppgifter läsvecka 2

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

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

Klassen javax.swing.timer

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

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

Subtyping, co- och contra-variance. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Johannes Åman Pohjola, 2017

Imperativ programmering. Föreläsning 4

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

OOP Objekt-orienterad programmering

TDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?

Objektorienterad Programmering (TDDC77)

Att skriva till och läsa från terminalfönstret

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

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Tentamen Programmering fortsättningskurs DIT950

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

Lösningar till tentamen i EDAF25

Kopiering av objekt i Java

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

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

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

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

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

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

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

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

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

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

1 Comparator & Comparable

Föreläsnings 9 - Exceptions, I/O

Objektorienterad Programmering (TDDC77)

DAT043 - Föreläsning 7

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering

Design Patterns. En kort introduktion

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Transkript:

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 e.g. refererar till ett objekt som inte finns, indexerar utanför en array, dividerar med 0, etc. Felaktig användning av API. Programmeraren har inte läst dokumentationen, och uppfyller inte uppställda villkor, e.g. skickar ett negativt tal till en metod som bara hanterar positiva tal. Externa faktorer som programmet inte har kontroll över, e.g. nätverket går ner, databasen kraschar, DVD:n är inte isatt, etc.

Felhantering Äldre programspråk (som C) har ingen strukturerad felhantering. Fel måste signaleras till användaren via värdet som returneras, så kallade felkoder. Leder till olika konventioner, kraftigt ökad komplexitet, etc. Moderna imperativa programspråk (som Java) har strukturerad felhantering via exceptions. Detta innebär att vi slipper använda felkoder. Använd aldrig felkoder i Java. Aldrig. Många använder felkoder fortfarande don t!

Exceptions Ett exception (undantag) i Java är ett objekt som representerar, och innehåller information om, ett fel som uppstått av en eller annan anledning. Ett exception kan kastas (throw). Ett exception kan fångas (catch). När ett exception inträffar innebär det en form av non-local transfer of control. Koden följer inte den normala strukturen, utan kan hoppa till ett catch-block långt bort från där exception kastas.

Error vs Exception Alla former av fel-objekt är i Java sub-klasser till klassen Throwable, som namnet till trots är en klass och inte ett interface. Throwable Error representerar ett fel som inte går att återhämta sig från, exekveringen ska avslutas. E.g. VirtualMachineError Kan fångas, men bör bara fångas för att avsluta programmet på ett snyggt sätt. Error RuntimeException Exception

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 exceptions Exception Checked exceptions

Checked exceptions 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

Att fånga exceptions 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.

Initialisering av objekt

Initialisering 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.

Initialisering av objekt 1. Statisk initialisering av klassen ( maskinen startar upp ). static initializer blocks, samt initialisering för static attribut. Görs bara om maskinen inte redan startats av ett tidigare anrop, till konstruktor eller någon static metod (eller användning av static attribut). 2. Anrop till konstruktorn för objektets superklass ( maskinen utgår från tidigare modell ) Explicit anrop till någon super( )-konstruktor måste göras allra först i en konstruktor. Om ingen super-konstruktor anropas explicit, anropas implicit super(). 3. Initialisering av objektet ( maskinen skapar grunden ) Non-static initializer blocks, samt initialisering för non-static attribut. 4. Exekvering av konstruktorn självt ( maskinen färdigställer ) Koden som explicit skrivits i konstruktorn, förutom eventuellt anrop till en super-konstruktor.

Exempel på initialisering 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(); Ett anrop av konstruktorn resulterar i 1. static init 2. super 3. object init 4. constructor

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.

Sammanfattning

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

Småskalig programmering Triviala program Få klasser Några 100-tal rader kod En eller ett fåtal programmerare Ingen eller kort livstid Just do it

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

Objekt-orientering Objekt-orientering är en metodik för att rätt använd! reducera komplexitet i mjukvarusystem. Rätt använd ger objekt-orientering stora möjligheter till: Code reuse Extensibility Easier maintenance Fel använd riskerar objekt-orientering att 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.

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!

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.

Lärandemål hög-nivå Från kursplanen: Efter godkänd kurs ska studenten kunna: redogöra för de tekniker som används inom objektorienterad programmering och design, t.ex. olika språkliga mekanismer (polymorfism, mutabilitet, gränssnitt, arv), designmönster, modularisering. implementera fristående objektorienterade applikationer på ett tekniskt och designmässigt sunt sätt t.ex. avseende korrekthet, modifierbarhet, och återanvändbarhet. jämföra och värdera olika programmerings- och designmässiga kvaliteter utifrån genomgången teori. utföra och beskriva testning av objektorienterade program. Övriga mål redogöra, implementera, jämföra och värdera behöver brytas ner i mer konkreta, examinerbara mål.

Lärandemål konkret Design-mässiga: REDOGÖRA för objekt-orienterade design-principer. KÄNNA IGEN och REDOGÖRA för olika objekt-orienterade design-mönster, inklusiver deras syfte och effekt. APPLICERA design-principer och design-mönster för att åstadkomma sund objekt-orienterad design. Tekniska: ANVÄNDA och REDOGÖRA för grundläggande objekt-orienterade koncept, som klasser och objekt, primitiver och referenser, metoder och konstruktorer, variabler och attribut, etc. ANVÄNDA och REDOGÖRA för mer avancerade språkmekanismer och tekniker, som exceptions, generics, threads, defensive copying, etc. ANVÄNDA och REDOGÖRA för arv och parameteriserade typer, och därtill hörande mekanismer, för att åstadkomma polymorfism och återanvändning av kod. Övergripande: ANALYSERA och UTVÄRDERA kod enligt principer för god objekt-orienterad design och implementation. DESIGNA och IMPLEMENTERAobjekt-orienterade program för en given domän.

Blooms lärandepyramid DESIGNA, IMPLEMENTERA UTVÄRDERA ANALYSERA ANVÄNDA, APPLICERA REDOGÖRA KÄNNA IGEN Kod Verktyg och Principer

Roadmap Delmoment 1. Tekniska verktyg och mekanismer 2. Principer 3. Patterns 4. Tekniker Översikt tentamen

Tekniska verktyg Classes, objects, interfaces, typer, referenser (1-2) Statiska vs dynamiska typer, overriding och overloading (2-2) Arv vs delegering (3-1) Generics, variance (3-2, 4-1) Trådar (7-1) Polymorfism (4-1) Encapsulation (4-2)

Roadmap Delmoment 1. Tekniska verktyg och mekanismer 2. Principer 3. Patterns 4. Tekniker Översikt tentamen

Design-principer SOLID Single Responsibility Principle Open-Closed Principle Liskov Substitution Principle Interface Segregation Principle Dependency Inversion Principle Generella Composition over Inheritance (3-1) High Cohesion, Low Coupling (4-2) Separation of Concern (5-1) Command-Query Separation (5-1) Law of Demeter (7-1) Don t talk to strangers

OPC: The Open-Closed Principle Software modules should be open for extension, but closed for modification. (Bertrand Meyer) Förändring är det enda som är konstant. Utveckla framåt-kompatibelt förutsäg var förändring kommer behövas. Föreläsning 1-1

Dependency Inversion Principle Depend on abstractions, not on concrete implementations. Genom att 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

Single Responsibility Principle A class should have at most one reason to change. Mitt förtydligande; Martins formulering tar inte hänsyn till immutabilitet (mer senare). Föreläsning 4-2 A class should have only one reason to change. (Robert C. Martin)

ISP: Interface Segregation Principle No client should be forced to depend on methods it does not use. Om ett objekt A är stort, med mycket funktionalitet, och objekt B beror på en liten del av denna funktionalitet: Introducera en abstraktion vars gränssnitt är precis den del av A som B behöver bero på. Föreläsning 6-2

Liskov Substitution 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 substituted 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

Principer hur hänger de ihop? Reuseability, Extensibility, Maintainability OCP DIP ISP SRP Polymorfism Encapsulation Arv Generics Väldigt grov karaktärisering LSP

Roadmap Delmoment 1. Tekniska verktyg och mekanismer 2. Principer 3. Patterns 4. Tekniker Översikt tentamen

Vad är ett design pattern? Ett design pattern (designmönster) är en (ofta namngiven) generell lösning av en vanligt återkommande situation inom (mjukvaru-)design. Termen och konceptet kommer ursprungligen ifrån arkitektur. Vi pratar mest om design patterns inom objekt-orienterad design, men de existerar (mer eller mindre uttalade och erkända) inom alla paradigmer. Ett design pattern har ingen färdig kod de är abstrakta mallar för hur ett problem kan lösas. Formaliserade best-practices. I en given situation och kontext kan vi instansiera ett design pattern med specifika klasser, metoder, etc, och få en färdig lösning.

Creational Patterns Berör hur objekt skapas Factory Factory Method Singleton

Behavioral Patterns Berör hur objekt kommunicerar e.g. vilka metoder och signaturer vi använder Observer, Mediator Template Method, Strategy, State Iterator Chain of Responsibility

Structural Patterns 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

Architectural Patterns Berör hur vi strukturerar våra program på en högre nivå än klasser Module Model-View-Controller

The Complete List (för tentan) Adapter, Bridge, Chain of Responsibility, Composite, Decorator, Facade, Factory, Factory Method, Iterator, Mediator, Model-View-Controller, Module, Observer, Singleton, State, Strategy, Template Method

Roadmap Delmoment 1. Tekniska verktyg och mekanismer 2. Principer 3. Patterns 4. Tekniker Översikt tentamen

Tekniker Functional Decomposition (4-2) Immutability (6-1) Defensive Copying (6-1) Mutate-by-copy (6-1) Method Cascading (6-2)

Roadmap Delmoment 1. Tekniska verktyg och mekanismer 2. Principer 3. Patterns 4. Tekniker Översikt tentamen

Tentamen När: Tisdag, 10/1, kl 14:00-18:00 Var: SB Hjälpmedel: inga Bifogas: Alla nödvändiga API som behövs för uppgifterna. UML syntax cheat sheet

Lärandemål konkret Design-mässiga: REDOGÖRA för objekt-orienterade design-principer. KÄNNA IGEN och REDOGÖRA för olika objekt-orienterade design-mönster, inklusiver deras syfte och effekt. APPLICERA design-principer och design-mönster för att åstadkomma sund objekt-orienterad design. Tekniska: ANVÄNDA och REDOGÖRA för grundläggande objekt-orienterade koncept, som klasser och objekt, primitiver och referenser ANVÄNDA och REDOGÖRA för mer avancerade språkmekanismer, som exceptions, generics, threads, defensive copying ANVÄNDA och REDOGÖRA för arv och parameteriserade typer, och därtill hörande mekanismer, för att åstadkomma polymorfism och återanvändning av kod. Övergripande: ANALYSERA och UTVÄRDERA kod enligt principer för god objekt-orienterad design och implementation. DESIGNA och IMPLEMENTERAobjekt-orienterade program för en given domän.

Tentamen upplägg A. Teknisk del 1. Redogöra för tekniska termer 2. Arv, overloading och overriding 3. Generics och variance 4. Trådar 5. Generella tekniker Kan handla om vad som helst av det jag listat under Verktyg eller Tekniker. B. Design-del 1. Redogöra för design-principer 2. Redogöra för design-mönster 3. Känna igen design-mönster 4. Applicera design-mönster 5. Analysera kod med avseende på principer och patterns Kan ha flera olika frågor under samma avsnitt

UML? UML kommer att förutsättas, och användas/frågas efter generellt i frågorna om design. Cheat sheet med syntax bifogas tentan.

Teknisk del 1. Redogöra för tekniska termer Typuppgift: DIT950 Mars 2015 Uppgift 1 2. Arv, overloading och overriding Typuppgift: TDA550 Januari 2015 Uppgift 1b (fast med riktiga namn) 3. Generics och variance Typuppgift: TDA550 Augusti 2015 Uppgift 8 Exempeluppgift: DIT950 Mars 2015 Uppgift 9 Exempeluppgifter: Övning 3-2 4. Generella tekniker Exempeluppgift: TDA550 Januari 2015 Uppgift 7

Design-del 1. Redogöra för design-principer Typuppgift: DIT950 Augusti 2014 Uppgift 3 2. Redogöra för design-mönster Typuppgift: DIT950 Mars 2015 Uppgift 6 (fast jag kommer fråga om specifika patterns) 3. Känna igen design-mönster Exempeluppgift: Övning 7-1a (identifiera) Typuppgift: TDA550 Januari 2015 Uppgift 3a 4. Applicera design-mönster Typuppgift: TDA550 Augusti 2015 Uppgift 6 5. Analysera kod med avseende på principer och patterns Exempeluppgift: TDA550 Januari 2015 Uppgift 2

Frågor?