Typecasting - primitiva typer. Innehåll. DoME klasser

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

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

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Classes och Interfaces, Objects och References, Initialization

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

OOP Objekt-orienterad programmering

Konstruktion av klasser med klasser

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Arrayer. results

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

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

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

Föreläsning 13 Innehåll

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

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

Föreläsning 4. Klass. Klassdeklaration. 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

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

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

Klasshierarkier - repetition

Java, klasser, objekt (Skansholm: Kapitel 2)

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Karlstads universitet Institutionen för Informationsteknologi Datavetenskap

OOP Objekt-orienterad programmering

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

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

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

OOP Objekt-orienterad programmering

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

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

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

DAT043 - föreläsning 8

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

Tentamen. Programmeringsmetodik, KV: Java och OOP. 20 januari 2005

Dynamisk bindning och polymorfism

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

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

Föreläsning 5-6 Innehåll

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

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

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

Tentamen. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

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

Länkade strukturer. (del 2)

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

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

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

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

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Modeller, Objekt och Klasser

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

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

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

TENTAMEN OOP

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

Parameteröverföring. Exempel. Exempel. Metodkropp

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

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

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

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Generisk klass med typparameter Inre klass - ListIterator

tentaplugg.nu av studenter för studenter

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

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

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

Föreläsning 3. UML Arvsmekanismen Variabler och typer Typer och subtyper. Vad är UML?

F8: Typkonvertering i C++

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

Föreläsning 3. UML Arvsmekanismen Variabler och typer Typer och subtyper. Vad är UML?

Objektorienterad programmering i Java

Objektsamlingar i Java

Objektorienterad Programmering (TDDC77)

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

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

Innehåll. 5. More sophisticated behavior. Javas klassbibliotek. Arbete med klassbibliotek. A Technical Support System. Huvudloopens struktur

Introduktion till Java

Laboration 1: Figurer i hierarki

Introduktion till arv

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

Objekt och klasser - Introduktion

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

Uno Holmer, Chalmers, :17 Uno Holmer, Chalmers, :17

Kopiering av objekt i Java

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

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

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

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

TENTAMEN OOP

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Föreläsning 3. Arvsmekanismen. Typer och subtyper. Abstraction & Information Hiding. Nested Objects. Separation of concerns. Delegating responsibility

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Objektorienterad Programmering (TDDC77)

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

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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Transkript:

Typkonvertering Typecasting - primitiva typer Typecasting - klasstyper Implicit Vid tilldelning I aritmetiska uttryck Explicit! Casting Om konvertering är möjlig Operator (type) value Cast har hög prioritet (Lägst av de unära, se app.d) Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 1 double result; int count, total; //count & total har fått värden result = (double)total/count; Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 2 public class Auction // The list of Lots in this auction. private ArrayList lots; Vilken typ har public Lot getlot(int number) elementen? if((number >= 1) && (number < nextlotnumber)) // The number seems to be reasonable. Lot selectedlot = (Lot) lots.get(number-1); //getlot Anger att Returnerar en referensen skall referens till ett tolkas som Lot Object //Auction Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 3 Objects First With Java A Practical Introduction Using BlueJ Innehåll Exemplet DoME "Database of Multimedia Entertainment" 8.Improving structure with inheritance Arv Subtyping Substitution Polymorfi Lagra info om CD-skivor och video CD: titel, artist, #spår, speltid, innehav, kommentar Video: titel, regissör, speltid, innehav, kommentar Möjliggör t.ex. sökning i och listning av innehåll Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 5 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 6 DoME objekt DoME klasser DoME objektmodell övre halvan visar attributen nedre halvan visar metoderna Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 7 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 8 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 9

Klassdiagram CD källkod ofullständigt [(kommentarer!) ] public class CD CD(String thetitle, String theartist) artist = theartist; comment = " "; void setcomment(string newcomment) String getcomment() Video källkod ofullständigt [(kommentarer!) ] public class Video private String director; Video(String thetitle, String thedirect) director = thedirect; comment = " "; void setcomment(string newcomment) String getcomment() Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 10 void print() Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 11 void print() Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 12 class Database private ArrayList cds; private ArrayList videos; Database källkod public void list() for(iterator iter = cds.iterator(); iter.hasnext(); ) CD cd = (CD)iter.next(); cd.print(); for(iterator iter = videos.iterator(); iter.hasnext(); ) Video video = (Video)iter.next(); video.print(); //list //Database + och - DoME + Strukturerna definierade - Samma kod på flera ställen!cd och Video liknar varandra, stora delar identiska!mer jobb med underhåll!risk för att fel introduceras - Dubletter av kod även i Database Arv Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 13 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 14 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 15 Att använda arv Arvshierarkier Arv i Java definiera en superklass : Item definiera subklasser för Video och CD superklassen definierar gemensamma attribut subklasserna ärver superklassens attribut subklasserna lägger till egna attribut no ingen change ändring here här change ändring här here public class Video extends Item Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 16 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 17 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 18

Superklass/basklass private int playingtime; private boolean gotit; Subklasser private int numberoftracks; public class Video extends Item private String director; private int playingtime; private boolean gotit; * Initialise the fields of the item. public Item(String thetitle, int time) playingtime = time; gotit = false; comment = ""; // methods omitted Arv och konstruktorer Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 19 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 20 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 21 private int numberoftracks; Arv och konstruktorer * Constructor for objects of class CD public CD(String thetitle, String theartist, int tracks, int time) super(thetitle, time); artist = theartist; numberoftracks = tracks; // methods omitted super betyder konstruktorn i superklassen med denna parameterlista Anrop av basklassens konstruktor Konstruktorer ärvs inte! Subklassens konstruktorer måste innehålla ett anrop 'super'. Om det inte står explicit, lägger kompilatorn till anropet (utan parametrar) fungerar bara om basklassen har en sådan konstruktor Måste vara första satsen i subklassens konstruktor. Fler mediakategorier i DoME metoderna visas ej Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 22 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 23 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 24 Ytterligare nivåer i hierarkin metoderna visas ej Sammanfattning Arv ger (så här långt) stöd för : Undviker dubletter av kod Återanvändning av kod Enklare underhåll Utökning av befintlig kod public class Database private ArrayList items; * Construct an empty Database. public Database() items = new ArrayList(); * Add an item to the database. items.add(theitem); Database ny källkod Undviker avoids att code kod dupliceras duplication i klienten in client! Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 25 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 26 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 27

Database källkod Subtypning Subklasser och subtypning * Print a list of all currently stored CDs and * videos to the text terminal. public void list() for(iterator iter = items.iterator(); iter.hasnext(); ) Item item = (Item)iter.next(); item.print(); Vi hade: public void addcd(cd thecd) public void addvideo(video thevideo) Nu har vi: Metoden anropas med: Video myvideo = new Video(); database.additem(myvideo); Klasser definierar typer. Subklasser definierar subtyper. CD är-en Item Subklassens objekt kan användas där det krävs ett objekt av superklassen. (Detta kallas substitution.) Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 28 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 29 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 30 Subtyping och tilldelning Parameteröverföring Objektdiagram Vehicle v1 = new Vehicle(); Vehicle v2 = new Car(); Vehicle v3 = new Bicycle(); subclass Subklassens objects objekt may kan be tilldelas assigned en to superclass referensvariabel för superklassen variables Car är-en Vehicle public class Database Video video = new Video(); CD cd = new CD(); database.additem(video); database.additem(cd); Vilket Item som helst är ok Subklassens objekt kan skickas till en formell parameter av superklassens typ Video är-en Item CD är-en Item Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 31 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 32 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 33 Klassdiagram Polymorfi Klassen Object Referensvariabler i Java är polymorfa. Alla klasser ärver från klassen Object (De kan referera till objekt av mer än en typ.) De kan referera till objekt av den deklarerade klassen eller till objekt av härledda klasser. Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 34 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 35 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 36

Polymorfa collections Casting (igen) Alla collections är polymorfa. Elementen är av typen Object. public void add(object element) public Object get(int index) Kan tilldela subtyp till supertyp. Kan inte tilldela supertyp till subtyp! String s1 = mylist.get(1); error! Casting fixar detta: String s1 = (String) mylist.get(1); (bara om elementet är av typen String!) Alla objekt kan läggas in i collections eftersom collections accepterar objekt av typen Object ocj alla klasser är härledda från Object. Bra! Hur är det med primitiva typer? Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 37 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 38 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 39 Sammanfattning Primitiva typer (int, char, etc) är inte objekt. De slås in i paket till ett objekt! existerar för alla primitiva typer: primitiv typ wrapperklass int Integer float Float char Character int i = 18; Integer iwrap = new Integer(i); mycollecton.add(iwrap); Slå wrap in värdet the int av value typen int Lägg add in the det wrapper objektifierade värdet Integer element = (Integer) mycollection.get(0); int value = element.intvalue() retrieve Få tillbaka the ett wrapper objektifierat värde Ta unwrap av omslaget Arv möjliggör att man kan utnyttja ett strukturellt släkskap mellan klasser Arv Undviker kodupprepning Kod kan återanvändas Förenklar koden Förenklar underhåll och utvidning Referensvariabler kan referera till objekt av alla underliggande klasser i en hierarki. Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 40 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 41 Objects First with Java - A Practical Introduction using BlueJ, David J. Barnes, Michael Kölling 42