Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar

Slides:



Advertisements
Liknande presentationer
Utveckla en applikation Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Advertisements

Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Föreläsning 7, Kapitel 7 Designa klasser Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Programmeringsteknik
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Föreläsning 4 Python: mera om funktioner och parametrar
Abstract & sealed.
Inkapsling.
Polymorfism.
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
TNSL04 – IT grundkurs. VT2008. Föreläsning nr 3, torsdag 7 feb. kl Del 1. Klasser, objekt, metoder, konstruktorer, samlingar och tillstånd. Hur.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Alice in Action with Java
i olika programmeringsspråk
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Föreläsning 11 Arrayer.
Objektorienterad programmering i Java
Programmering i C# 3. Klasser.
Föreläsning 2, Kapitel 2 Att förstå klassdefinitioner Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
PROCESSPROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Föreläsning 6, kapitel 6 Objekt som uppför sig som de skall Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes.
Föreläsning 5. Problemet Vi har sett att vi kan ersätta de metoder vi ärver från överklassen med egen funktionalitet (polymorfism) class Bil : public.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
4. Arv och dynamisk bindning
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Vektorer (klassen Vector) Sortering
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Föreläsning 4. Arv – bakgrund (kap. 9) Hund pälsfärg favoritben smutsa_ned() ät_katt() Katt pälsfärg smutsa_ned() klös_soffa() Kanin pälsfärg slaktvikt.
Programmeringsteknik för Media1 & K1
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Föreläsning 5, Kapitel 5 Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 10, kapitel 10 Abstrahera mera! Abstrakta klasser och interface Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”,
Föreläsning 4 Klasser Och Objekt.
Objektorienterad programmering i Java
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Föreläsning 3, Kapitel 3 Objektinteraktion - Skapa objekt som samarbetar Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David.
1 Föreläsning 8 Mer om klasser och objektorientering.
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt.
Köer -- Kapitel 16. Principen med en kö Köer är FIFO datastrukturer  First In – First Out  enqueue() Lägg till data i kön (först)  dequeue() Hämta.
Välkommen till kursen objektorienterad programmering med Java Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 5 Klasser och instanser
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Referensvariabel Klass och konstruktorer Klass med set- och get-metoder Klass och fält Fler metoder.
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
Objektorienterad programmering sid. 1 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Objektorienterad programmering OOP = objektbaserad programmering.
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar Telefon Andreas Hedrén Telefon Föreläsning 9, Kapitel 9

Centrala delar Polymorfism Statisk och dynamisk typ Overriding Protected som synlighet

Arvshierarki

Olika utskrifter CD: A Swingin' Affair (64 mins)* Frank Sinatra tracks: 16 my favourite Sinatra album video: The Matrix (136 mins) Andy & Larry Wachowski must see if interested in virtual reality! title: A Swingin' Affair (64 mins)* my favourite Sinatra album title: The Matrix (136 mins) must see if interested in virtual reality! Vad vi vill ha Vad vi har

Problem Metoden print hos Item skriver endast ut gemensamma fält Arv går bara åt ett håll: –En underklass ärver överklassens variabler –Överklassen känner inte till underklassens variabler

Försök att lösa problemet Placera metoden print där den har tillgång till nödvändig information Varje underklass har sin egen version av metoden Men variablerna hos Item är privata Klassen Database kan inte hitta metoden print hos klassen Item.

Statisk och dynamisk typ En mer komplex hierarki behöver ytterligare koncept Ny terminologi: –Statisk typ –Dynamisk typ

Statisk och dynamisk typ Car c1 = new Car(); Vad har c1 för typ? Vehicle v1 = new Car(); Vad har v1 för typ?

Statisk och dynamisk typ En variabels deklarerade typ är dess statiska typ Den typ av objekt som variabeln refererar till är dess dynamiska typ Kompilatorns jobb är att kontrollera så att vi inte gör fel med statiska typer Item item = (Item) iter.next(); item.print(); // Compile-time error.

Overriding: Lösningen Metoden print finns i både över- och underklassen Tillfredställer kontroll av både statisk och dynamisk typ

Åsidosättande - Overriding Över- och underklass definierar metoder med samma deklaration Metoderna har tillgång till variablerna i den egna klassen Överklassen ser till att vi får statisk typkontroll Underklassens metod anropas när programmet körs – den sätter sig över (overrides) överklassens version Vad händer med överklassens version?

Anropa rätt metod Inget arv eller polymorfism Den enda möjliga metoden anropas

Anropa rätt metod Arv men inte overriding. Söker efter en metod genom att starta nerifrån och gå uppåt till en matchande metod hittas

Anropa rätt metod Polymorfism och overriding. Den första versionen som hittas används

Anropa rätt metod 1.Variabeln används 2.Objektet som variabeln refererar till hittas 3.Objektets klass hittas 4.Klasser genomsöks efter en matchande metod 5.Om ingen matchande metod hittas söks klassens överklass igenom Detta upprepas till en matchande metod hittas eller tills det inte längre finns några överklasser i hierarkin Overriding metoder går före överklassens

Att använda nyckelordet super Metoder i överklasser som är overridden i underklasserna är gömda …... men vi vill ibland kunna anropa de En metod som är overridden kan anropas genom att använda nyckelordet super: –super.method(...) –Jämför med användandet av super i konstruktorer

Anropa en overridden metod public class CD {... public void print() { super.print(); System.out.println(" " + artist); System.out.println(" tracks: " + numberOfTracks); }... }

Klassen Object:s metoder Metoder i Object ärvs av alla klasser Alla dessa kan ersättas (override) i de egna klasserna Metoden toString ersätts ofta: –public String toString() –Returnerar en sträng som representerar objektet

Overriding toString public class Item {... public String toString() { String line1 = title + " (" + playingTime + " mins)"); if(gotIt) { return line1 + "*\n" + " " + comment + "\n"); } else { return line1 + "\n" + " " + comment + "\n"); }... }

Overriding toString Det är generellt bättre att använda metoden toString istället för att göra en egen metod print : –System.out.println(item.toString()); Anrop till println med ett objekt som argument resulterar i att objektets metod toString automatiskt anropas: –System.out.println(item);

Protected synlighet Att använda synligheten Private i överklassen kan ibland vara allt för restriktivt för underklassen En närmare arvsrelation kan uppnås genom att använda synligheten protected Protected är mer restriktiv än public och variablerna är inte åtkomliga utifrån Man ska använda så restriktiv synlighet som möjligt

Synlighet

Summering Statisk och dynamisk typ Åsidosättande – overriding Åsidosätta toString() -metoden protected