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

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

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

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

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

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

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

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.

Konstruktion av klasser med klasser

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

OOP Objekt-orienterad programmering

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

Föreläsning 13 Innehåll

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

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

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

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

Polymorfi. Objektorienterad och komponentbaserad programmering

Klasshierarkier - repetition

OOP Objekt-orienterad programmering

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

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

Classes och Interfaces, Objects och References, Initialization

Arv. Objektorienterad och komponentbaserad programmering

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

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

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

Objektorienterad Programmering (TDDC77)

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

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

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

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

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

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

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

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

TENTAMEN OOP

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

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

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

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

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

DAT043 - Föreläsning 7

Repetition av OOP- och Javabegrepp

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

TDDD78 Viktiga begrepp, del 2

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

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

Repetition av OOP- och Javabegrepp

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

DD1342 Programkonstruktion för F1,

Agenda. Objektorienterad programmering Föreläsning 13

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

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Föreläsning 9: Arv och UML

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

TDA550 - Objektorienterad programvaruutveckling, fk

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

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Malmö högskola 2008/2009 CTS

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

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

TENTAMEN OOP

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

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

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

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Objektorienterad programmering i Java

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

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

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

TDDC76 Programmering och datastrukturer

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

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Imperativ programmering. Föreläsning 4

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Dynamisk bindning och polymorfism

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

Föreläsning 5-6 Innehåll

Modeller, Objekt och Klasser

Tentamen. Lösningsförslag

Transkript:

DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/3 2017 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack Klassen Object i Java Demonstration av equals() från Object UML-översikt 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 ) ; dragok() ger true om flytt från ruta r1 till ruta r2 är ett tillåtet drag för aktuell pjäs, false annars. 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 metoden. 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 i en riktig tillämpning 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 om k är 5 så får k==5 värdet true 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 false inte samma referens (men likadana objekt) s2 == s3 true samma referens s1.equals(s2) kan ge true om man definierat equals() rätt i Spelkort Exempel: Program som testar equals i Spelkort c l a s s EqualsDemo { p u b l i c s t a t i c void main ( S t r i n g [ ] u ) { S p e l k o r t k o r t 1 = new S p e l k o r t ( Spader, 1 1 ) ; S p e l k o r t k o r t 2 = new S p e l k o r t ( Spader, 1 1 ) ; System. out. p r i n t l n ( Kort1 : + k o r t 1 ) ; System. out. p r i n t l n ( Kort2 : + k o r t 2 ) ; System. out. p r i n t l n ( ) ; S... ( Korten l i k a? + k o r t 1. e q u a l s ( k o r t 2 ) ) ; S... ( Kort l i k a med 17? + k o r t 1. e q u a l s ( 1 7 ) ) ; System. out. p r i n t l n ( ) ; Med gamla Spelkort blir utskriften från EqualsDemo Kort1: Spader KNEKT Kort2: Spader KNEKT Korten lika? false grunddefinitionen av equals() Kort lika med 17? false Lägg till equals() i Spelkort Inget annat ändras c l a s s S p e l k o r t { : p u b l i c boolean e q u a l s ( Object annat ){ i f (! ( annat i n s t a n c eof S p e l k o r t ) ) return f a l s e ; S p e l k o r t a n n a t k o r t = ( S p e l k o r t ) annat ; : return a n n a t k o r t. v a l o r==t h i s. v a l o r && a n n a t k o r t. f a r g. e q u a l s ( t h i s. f a r g ) ; Med nya Spelkort blir utskriften från EqualsDemo Kort1: Spader KNEKT Kort2: Spader KNEKT Korten lika? true NY definition av equals() Kort lika med 17? false

UML vanlig klass UML-ÖVERSIKT Konto + namn : String - personnummer : int ~ saldo : double + antalkonton : int = 0 + sättin() + taut() - idkontroll() # beräknaränta() Variabler, ev. med typ Metoder, ev. typ, ev. parameterlista ~ paketsynlighet # protected + public - private understruket betyder static Java-specifik UML UML arv och implementation UML - associationer Superklass «interface» Interface A C ass_name B D Oriktad eller dubbelriktad association Riktad association, har, känner till E 1..* F Aggregat, har, består av, äger ej Subklass ImplementerandeKlass G 1 5 H Komposition har, består av, äger Relationen ÄR M N Beroende beror av, metodparameter, lokal variabel

UML - dubbelriktad association 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) A A:s roll i B B:s roll i A B enrolled waiting Student - studentid : int + taketest(t : Test) Professor UnderGrad Grad Test Grade