Instuderingsuppgifter läsvecka 2

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

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

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

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

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

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

Klasshierarkier - repetition

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

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

Föreläsning 5. När skall man använda implementationsarv? När skall man använda implementationsarv?

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 3

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

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

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

Objektorienterad Programmering (TDDC77)

Konstruktion av klasser med klasser

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

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

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

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

Föreläsning 13 Innehåll

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Föreläsning 2. Polyfmorfism Dynamisk bindning Interface och abstrakta klasser Överlagring Överskuggning Accessorer och mutatorer

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

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

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

Repetition av viktiga begrepp inom objektorienterad programmering

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA550 DAG: TID: 8:30 12:30

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Arv (Inheritance) Multipelt arv finns i verkligheten. Överskuggning, metodbindning. Läsanvisning: ! Arv! Object, instanceof! Relationer!

Föreläsning 5. Föreläsning 5. Klasser och objekt. Klasser och objekt. Klasser och objekt

1 Repetition av viktiga begrepp inom objektorienterad programmering

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

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

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

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

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

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

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

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

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

Objektorienterad Programmering (TDDC77)

TENTAMEN OOP

CHALMERS TENTAMEN. 2012/2013, lp 1 DAT042. Uno Holmer. Java API (utdelas av skrivningsvakten) Erland Holmström tel besöker tentamen

OOP Objekt-orienterad programmering

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

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

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

DAT043 - Föreläsning 7

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

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

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

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

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

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

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

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

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

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

Föreläsning 5. Föreläsning 5

Tentamen Programmering fortsättningskurs DIT950

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

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

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

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

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

TENTAMEN OOP

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

Föreläsning 3 Arvsmekanismen Variabler och typer Typer och subtyper

Objektorienterad programutveckling, fk

Laboration 1 - Grunderna för OOP i Java

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Polymorfi. Objektorienterad och komponentbaserad programmering

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

TENTAMEN: Objektorienterad programmering. Läs detta! Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen.

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

Objektorienterad programmering i Java

Arv. Objektorienterad och komponentbaserad programmering

Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone.

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

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

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

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

Transkript:

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 bindning och dynamisk bindning går till. The ependency Inversion Principle säger epend upon abstractions, not upon concrete implementations. etta är en av de viktigaste principerna i objektorienterad design. Förklara varför. Förklara innebörden av The Open-losed Principle. Vad finns det för samband mellan The Open-losed Principle. och The ependency Inversion Principle? Förklara begreppen overriding (överskuggning), hiding (döljande) och overloading (överlagring). Varför bör man använda annotationen @Override när man överskuggar en metod? Vad innebär begreppet kovarians? Vad är fördelarna med att använda kovarians. Förklara begreppen inkapsling (encapsulation) och informationsdöljande (information hiding). 10. Vad är en mutator-metod? 11. Vad är en icke-muterbar klass? 12. Är en klass icke-muterbar om klassen inte innehåller några mutator-metoder? T550 (HT16) 1 Instuderingsuppgifter 2

13. Följande klasser är givna public class { public () { System.out.println(".()"); public void f( arg) { System.out.println(".f()"); public void g( arg) { System.out.println(".g()"); // public class extends { public () { System.out.println(".()"); public void f( arg) { System.out.println(".f()"); public void g( arg) { System.out.println(".g()"); public static void h( arg) { //OS: statisk! System.out.println(".h()"); // public class extends { public () { System.out.println(".()"); public void f( arg) { System.out.println(".f()"); public void f( arg) { System.out.println(".f()"); public void g( arg) { System.out.println(".g()"); public static void h( arg) { // //OS: statisk! System.out.println(".h()"); Vad blir resultatet för var och en av följande satser (ger kompileringsfel, ger exekveringsfel, skriver ut xxx, etc)? a = new (); (a) ab = new (); (b) bc = new (); (c) c = new (); (d) a.f(bc); (e) bc.h(c) (f) bc.f(ab); (g) c.g(a); (h) c.g(bc); (i) ab.h(ab); (j) ab.g(ab); (k) T550 (HT16) 2 Instuderingsuppgifter 2

14. etrakta nedanstående klasser och interface: public interface { public void a( ); // public interface { public void b(); // public class implements { public void a() { System.out.println( "a() in " ); //a public void c() { System.out.println( "c() in " ); //c // public abstract class extends implements { public void c() { System.out.println( "c() in " ); //c // public class E extends { public void b() { System.out.println( "b() in E" ); //b //E public class F extends implements { public void b() { System.out.println( "b() in F" ); //b //F a(): void a(): void c(): void {abstract c(): void E F Vad blir resultatet för var och en av följande satser (ger kompileringsfel, ger exekveringsfel, skriver ut xxx, etc)? a) x = new E(); x.c(); b) Object o = new E(); System.out.println( o instanceof ); c) x = new (); ax.c(); d) x = new E(); y = () x; y.b(); e) x = new F(); x.b(); f) x = new F(); y = () x; x.b(); g) x = new (); x.a(); h) x = new F(); y = x; y.a(); T550 (HT16) 3 Instuderingsuppgifter 2

15. Följande klasser är givna public interface I { void f1(); public abstract class 1 { public abstract void f2(); public void f3() { print("1.f3"); protected void print(string s) { System.out.println(s); public class 2 extends 1 implements I { public void f1() { print("2.f1"); public void f2() { print("2.f2"); public class 3 extends 2 { public void f2() { print("3.f2"); public void f4() { print("3.f4"); public void print(string s) { System.out.println("++"+s+"++"); public class Main { public static void func(2 obj) { obj.f1(); obj.f2(); obj.f3(); obj.f4(); public static void func2(3 obj) { obj.f4(); public static void main(string[] arg) { func(new 1()); func(new 2()); func(new 3()); func2(new 2()); func2(new 3()); 16. Tre metodanrop i klassen Main ger kompileringsfel. Vilka är de, och vad är det för fel på dem? ntag nu att vi avlägsnar de felaktiga satserna och kompilerar de fem klasserna. Vad skrivs då ut om Main exekveras? Skriv deklarationer i Java som motsvarar nedanstående UML-diagram. et räcker med att ange klass- respektive interfacehuvuden. {abstract E T550 (HT16) 4 Instuderingsuppgifter 2

17. Skriv deklarationer i Java som motsvarar nedanstående UML-diagram. Klasserna och skall innehålla nödvändiga instansvariabler, samt en lämplig konstruktor. 18. 19. 20. 21. 22. 23. Implementationsarv är en viktig mekanism för återanvändning. Återanvändning är dock inte i sig ett tillräckligt motiv för att använda implementationsarv. Visa detta påstående med ett exempel. Förklara varför en subklass har en stark koppling till sin superklass. Vad säger The Principle of Least stonishment? Vad är det för skillnad mellan en subtyp i Java och en äkta subtyp (d.v.s. en subtyp som uppfyller Liskov Substitution Principle). Vad innebär delegering? En grundprincip är att föredra delegering framför implementationsarv. a) Ge exempel på vilka motiv som finns bakom denna princip. b) Implementationsarv kan dock ibland vara lämpligt att använda. När? T550 (HT16) 5 Instuderingsuppgifter 2