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

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

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

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

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

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

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

Objektorienterad Programmering (TDDC77)

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

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

OOP Objekt-orienterad programmering

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

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

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

Konstruktion av klasser med klasser

Föreläsning 13 Innehåll

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

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

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.

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

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

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

OOP Objekt-orienterad programmering

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

Classes och Interfaces, Objects och References, Initialization

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

Polymorfi. Objektorienterad och komponentbaserad programmering

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

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

Klasshierarkier - repetition

Arv. Objektorienterad och komponentbaserad programmering

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

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

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

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

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

Objektorienterad Programmering (TDDC77)

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

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

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

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

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

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

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

Repetition av OOP- och Javabegrepp

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

DAT043 - Föreläsning 7

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

Repetition av OOP- och Javabegrepp

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

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

Föreläsning 9: Arv och UML

Imperativ programmering. Föreläsning 4

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

TENTAMEN OOP

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

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

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

TDDD78 Viktiga begrepp, del 2

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

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

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

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

TDA550 - Objektorienterad programvaruutveckling, fk

DD1342 Programkonstruktion för F1,

Tentamen för TTIT71 Programmering kl Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll

TDDC76 Programmering och datastrukturer

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

DAT043 - föreläsning 8

Malmö högskola 2007/2008 Teknik och samhälle

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

Arv. En klassdefinition class A extends B {... } definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som definierade för B.

Agenda. Objektorienterad programmering Föreläsning 13

Modeller, Objekt och Klasser

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

LÖSNINGSFÖRSLAG

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

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

Instuderingsuppgifter läsvecka 2

CHALMERS TENTAMEN. 2018/2019, lp 1 DAT050. Uno Holmer

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

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

TENTAMEN OOP

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Transkript:

DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/4 2014 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack UML-översikt Klassen Object i Java Inleds med Abstrakt klass abstract class Kombination av vanlig klass och interface Kan innehålla vanliga metoder och variabler Innehåller oftast minst en abstrakt metod som definieras i subklass Objekt av klassen kan inte skapas Exempel: Implementation av Schackpjäser De olika pjäserna har mycket gemensamt Men förflyttning sker på olika sätt Definiera en abstrakt klass med allt gemensamt Definiera en konkret subklass för varje pjästyp: Bonde Springare Löpare Torn Dam Kung

Exempel: Skiss av klasser abstract c l a s s S c h a c k p j a s { C o l o r f a r g ; Image b i l d ; Brade brade ; Ruta r u t a ; S c h a c k p j a s (... ) {... // k o n s t r u k t o r abstract boolean dragok ( Ruta r1, Ruta r2 ) ; c l a s s Bonde extends S c h a c k p j a s { // implementera bondens drag Konstruktor m.m. visas ej. Exempel: Skiss av klasser c l a s s Dam extends S c h a c k p j a s { // implementera damens drag c l a s s Torn extends S c h a c k p j a s { // implementera t o r n e t s drag c l a s s S p r i n g a r e extends S c h a c k p j a s { // implementera s p r i n g a r e n s drag Klasshierarki = Typhierarki Klasshierarkin är en trädstruktur Referenser av viss typ får referera till objekt av typer som är nedanför i trädet. Schackpjas får referera till Bonde, Dam, Kung, Torn... En Schackpjas har många former (Bonde, Dam... ): POLYMORFISM Dynamisk bindning En Schackpjas-referens ser endast Schackpjas-definitioner, t.ex. dragok Om en metod, t.ex. dragok, definierats om i en subklass så används den omdefinierade! Objektetets typ och inte referensens typ väljer metod. Detta är dynamisk bindning S c h a c k p j a s p j a s = new... //Dam, Kung, Torn...... p j a s. dragok (.. ) // Dynamiskt metodval // beroende av typen // hos pjas o b j e k t e t

Klass/typ - hierarki för Schackpjäserna med UML-notislappar Klass/typ - hierarki för Schackpjäserna Schackpjas - ruta : Ruta - farg : string + dragok(r1 : Ruta, r2 : Ruta) Kung Lopare Springare Dam Torn Bonde dragok() är en abstrakt metod. dragok() implementeras olika i Kung, Dam, Lopare... Alla klasserna har fler metoder UML vanlig klass UML arv och implementation Konto + namn : String - personnummer : int ~ saldo : double + antalkonton : int = 0 + sättin() + taut() - idkontroll() # beräknaränta() ~ paketsynlighet # protected + public - private understruket betyder static Variabler, ev. med typ Metoder, ev. typ, ev. parameterlista Java-specifik UML Superklass Subklass Relationen ÄR «interface» Interface ImplementerandeKlass

UML - associationer UML - dubbelriktad association A B Oriktad eller dubbelriktad association C ass_name D Riktad association, har, känner till E 1..* F Aggregat, har, består av, äger ej A A:s roll i B B:s roll i A B G 1 5 H Komposition har, består av, äger M N Beroende beror av, metodparameter, lokal variabel UML - exempel Course ~ courseid : int - name : string - t : Teacher + enroll(stud : Student) 1..4 1..* 1 taught_by 1..2 «interface» Teacher + givetest(t : Test) enrolled waiting Student - studentid : int + taketest(t : Test) Professor UnderGrad Grad Test Grade

Klassen Object Superklass till alla Javaklasser Överst i klasshierarkin Mest generella typen i Java Object - referens kan referera till alla objekt Innehåller 11 metoder Alla klasser har 11 metoder från Object Flera metoder ärvs tomma eller väldigt enkla, kan/bör definieras om av subklasserna. Metoderna i Object String tostring() String-repr. boolean equals(object o) likhet? int hashcode() Object clone() kopia void finalize() anropas före GC Class getclass() meta-information void notify() väck en tråd void notifyall() väck alla trådar void wait() lägg tråd void wait(t) i void wait(t,n) vänteläge Jämförelse med == eller equals()? == jämför variablers innehåll primitiva typer: enkelt och självklart referenstyper: samma princip equals() kan jämföra objekts innehåll om man definierat om den Spelkort s1 = new Spelkort("RUTER",5); Spelkort s2 = new Spelkort("RUTER",5); Spelkort s3 = s2; s1 == s2 ger false inte samma objekt men lika s2 == s3 ger true samma objekt s1.equals(s2) kan ge true om man definierat den rätt