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

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

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

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

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

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

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

Objektorienterad programmering

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

Föreläsning 15: Repetition DVGA02

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

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

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

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

Objektorienterad programmering. Grundläggande begrepp

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

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

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

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

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

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

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

Objektorienterad programmering, allmänt

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

Föreläsning 10. ADT:er och datastrukturer

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

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Kursplanering Objektorienterad programmering

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

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

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

Kopiering av objekt i Java

Instuderingsuppgifter läsvecka 2

Objektorienterad Programmering (TDDC77)

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

Laboration 1 - Grunderna för OOP i Java

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

Objektorienterad Programmering (TDDC77)

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

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

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

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

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Viktiga programmeringsbegrepp: Kontrakt

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

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

Föreläsning 4. Polymorfism. Polymorfism Dynamisk bindning Inkapsling Information hiding Access-metoder och mutator-metoder

Course Contents. Objektorienterad programmering. Goals. Buzzwords. Course overview (1) Book. Objektorienterad programmering d2. DAT050, 16/17, lp 2 1

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT15

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Länkade strukturer. (del 2)

TENTAMEN OOP

Imperativ programmering. Föreläsning 4

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

SKOLFS. beslutade den XXX 2017.

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

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

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

Ingenjörsfirman Stéen Java Sida 1 av 1

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

Classes och Interfaces, Objects och References, Initialization

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

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

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

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

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT17

Sammansatta datatyper Generics: Parametrisk polymorfism

DAT043 - Föreläsning 7

Kurs-PM fo r HI1027, Objektorienterad programmering, period 1 HT14

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

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

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

Repetition av OOP- och Javabegrepp

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

Laboration 2: Designmönster

Design Patterns. En kort introduktion

Tentamen Programmering fortsättningskurs DIT950

Repetition av OOP- och Javabegrepp

TDA550 Objektorienterad programmering, fortsättningskurs. Föreläsning 1. Introduktion Variabler och typer

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!

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

Introduktionsmöte Innehåll

Objektorienterad mjukvaruutveckling. 15 högskolepoäng. TentamensKod: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Programmeringsteknik II

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

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

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

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

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

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Kursplanering fo r HI1027, Objektorienterad programmering, P1 HT112

DAT043 - föreläsning 8

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl

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

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

Introduktion. Lagom är bäst. OO eller ej? TDP004 Objektorienterad Programmering Fö 7 Objektorienterad design, tips och råd

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Transkript:

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 Konstruktorer Metoder Accessor, mutator, predicate 1

Abstraktion Modularisering Objektreferens Overloading Klassdiagram och objektdiagram Primitiva typer och objekttyper Samlingar och arrayer Likheter och skillnader Fördelar och nackdelar Traversering av samlingar och arrayer Index vs. Iterator Dokumentation Javadoc Fördelar med dokumentation (och med javadoc speciellt) Gränssnitt Immutable objekt Klassvaribler (statiska variabler) Paketindelning och import Information hiding Public vs private 2

Testning Unit testing Regression testing Walkthroughs Manuella, verbala Utskrifter Vad har de olika teknikerna för fördelar / nackdelar Debugging Coupling Inkapsling Implicit och explicit coupling Cohesion Klass och metod Läsbarhet Återanvändbarhet Tecken på dålig design Ex.. Ansvarsdriven design Refactoring!"# $% & & av arv Superklass, subklass, arvshierarki Fördelar med arv Polymorfism Subtyping av subtyp Jämförelse mot subklass Variabler / parametrar Object-klassen i Java Polymorfiska samlingar 3

'($ & Polymorfism Metoder Statiska och dynamiska typer Omdefinition (overriding) Dynamic method lookup )" Abstrakta klasser och gränssnitt (interface) av båda Likheter och skillnader När skall man använda vad! Multipelt implementationsarv Nackdel? Hur har Java valt att implementera.. Fördelar / nackdelar * Defensiv programmering Interaktion mellan klient och server; ansvarsområden Undantagshantering Javas undantagshanteringsmodell Checked vs unchecked Återhämtning (error recovery) Undvikande (error avoidance) Sätt in kontraktsmodellen i alla dessa sammanhang Samarbetsmöjligheter Javas filhanteringsmodell som exempel 4

Se i ett större perspektiv Prototyping Par-programmering Livscykelmodeller Vattenfallsmodellen Iterativa modeller Designmönster Decorator Singleton Observer +,- $$ Vad är det? Vilka krav ställs på ett programspråk för att det skall anses vara OO? Hur skiljer sig ett OO-språk från imperativa språk som C? Använd laborationer/exempel för att belysa frågeställningar Uppgift 1: Begrepp (5 poäng) Förklara följande begrepp kortfattat: a) Coupling (1 p) b) Cohesion (1 p) c) Override (omdefiniera) (1 p) d) Overload (överlagra) (1 p) e) Design patterns (designmönster) (1 p) 5

Uppgift 2: Samlingar (5 poäng) Nedanstående kod kommer från projektet Notebook i kapitel 4 i kursboken. I första versionen används en ArrayList och i den andra versionen används en array ( fixed-size collection ) istället. a) Förklara skillnaden mellan de båda samlingarna. Ange för och nackdelar med respektive lösning. b) I versionen med ArrayList finns följande metod. Skriv om metoden så att den kan gå igenom listan med noteringar med hjälp av en iterator istället. (Du har tillgång till Javas API för ArrayList och Iterator i bilaga A) Uppgift 3: Arv och polymorfism (5 poäng) I bilaga B finns kod för ett program som lagrar information om CD och videofilmer. En testklass ( DBUI.java ) lägger in 8 föremål och skriver ut dessa. a) Vad skrivs ut när programmet körs? (1 p) b) Förklara, med hjälp av kodexemplet och dina kunskaper från kursboken, begreppen method lookup (3p) och method polymorphism (1p). (3+1 p) Uppgift 4: Gränssnitt, abstrakta klasser och designmönster (15 poäng) 6

Ovanstående exempel är ett klassdiagram för designmönstret Decorator. Med hjälp av dina kunskaper från kursboken och diagrammet, svara på följande: a) Förklara utifrån exemplet vad Decorator-mönstret gör. Ta gärna hjälp av figurer i din beskrivning. (7 p) b) Klassen Decorator i exemplet är abstrakt, medan VisualComponent är ett gränssnitt. Vilka skillnader och likheter finns det mellan abstrakta klasser och gränssnitt (om det finns några)? Vilka är deras respektive uppgifter? (4 p) c) I Java är det inte tillåtet med multipelt arv. Hur har man löst det i Java istället och vilka fördelar och nackdelar finns det med Javas lösning? Uppgift 5: Undantag (5 poäng) a) I Java används två typer av undantag, kontrollerade (checked exceptions) och okontrollerade (unchecked exceptions). Förklara skillnaden mellan dessa två. (2 p) b) När och hur anser du att undantag ska användas tillsammans med kontrakt? Motivera dina svar. Uppgift 6: Objektorientering (5 poäng) Vad anser du vara de viktigaste principerna i objektorienterad programmering, förutom arv och polymorfism? Motivera dina svar. 7