Arv Murach s: kap 14

Relevanta dokument
Objektorienterad Programmering (OOP) Murach s: kap 12-16

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

Arv. Objektorienterad och komponentbaserad programmering

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

Exceptions (undantag) Murach s: kap 7

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

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

Objektorienterad Programmering (TDDC77)

Classes och Interfaces, Objects och References, Initialization

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

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

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

TDDC76 - Programmering och Datastrukturer

Dynamisk bindning och polymorfism

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

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

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

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

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

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

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

Objektorienterad Programmering (TDDC77)

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv

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

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

Övning Dictionary. Övning 1. Steg 1: På din virtuella maskin, starta Visual Studio.

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

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

Innehåll. Konstruktorer vid arv Regler för basklassens konstruktor. Konstruktorer vid arv. Konstruktorer vid arv. Konstruktorer vid arv

Systemvetarutbildningen och dataekonomutbildningen

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

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

Polymorfi. Objektorienterad och komponentbaserad programmering

Objektorienterad Programmering (TDDC77)

Modeller, Objekt och Klasser

F8: Typkonvertering i C++

OOP Objekt-orienterad programmering

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

OOP Objekt-orienterad programmering

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

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

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

Introduktion till arv

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

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

DAT043 - Föreläsning 7

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

Repetition av viktiga begrepp inom objektorienterad programmering

TDDC76 - Programmering och Datastrukturer

Lösningar för tenta 2 DAT043,

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

1 Repetition av viktiga begrepp inom objektorienterad programmering

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

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

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

Typecasting - primitiva typer. Innehåll. DoME klasser

Föreläsning 13 Innehåll

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

Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011

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

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.

Tentamen i TDP004 Objektorienterad Programmering Teoretisk del

TENTAMEN OOP

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

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

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.

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

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

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

Övriga byggstenar. Övriga byggstenar. Några tips under programutveckling. Beroenden Pekare till funktioner Typkonvertering

OOP Objekt-orienterad programmering

Föreläsning 9: Arv och UML

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

Konstruktion av klasser med klasser

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

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

Innehåll. Typomvandlingar (casting) Implicita Typomvandlingar. Typomvandlingar (casting) Implicita Typomvandlingar

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

Lösningar till tentamen i EDAF25

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

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Exempel på användning av arv: Geometriska figurer

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

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

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

Allmänna anvisningar: Skriv dina svar på svarsblanketten (se nästa sida) Markera och ange alla svar tydligt och entydigt efter instruktionerna.

TENTAMEN OOP

TDA550 - Objektorienterad programvaruutveckling, fk

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

Klasshierarkier - repetition

Instuderingsuppgifter läsvecka 2

Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer

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

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

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

Transkript:

Arv Murach s: kap 14 2013-02-26 1 Elektronikcentrum i Svängsta AB

Arv (Inheritance) Grundpelare inom OOP En klass, den härledda, utvidgar en annan klass, basklassen, genom att ärva dess metoder. Den härledda klassen kallas även för subklass. Subklassen utvidgar basklassen med egna medlemmar EC Utbildning AB 2013-02-26 2

Arv exempel Book och Software är syskon EC Utbildning AB 2013-02-26 3

Arv Relationerna kan benämnas på flera sätt: Basklassen Förälder, superklass, bastyp, supertyp Subklassen Barn, subklass, härledd klass, härledd typ, ärvande klass, ärvande typ. Relationen mellan subklass och dess basklass kan beskrivas som är en. Software är en TaxableProduct Label är en Control EC Utbildning AB 2013-02-26 4

Arv i.net Alla data- och referenstyper härstammar från object Metoder som ärvs: ToString() Equals(object) Static Equals(object1, object2) ReferenceEquals(object1, object2) GetType() GetHashCode() Finalize() MemberwiseClone() EC Utbildning AB 2013-02-26 5

När används arv? Skapa en basklass med gemensamma medlemmar Product som ärvs av Book och Software Building som ärvs av Factory och House Shape som ärvs av Circle och Square Bygga ut befintliga.net-klasser Skapa egna Form-typer Specialiserad List<Product> EC Utbildning AB 2013-02-26 6

Skapa basklasser Basklasser kan vara vilken klass som helst Inkapsling public protected internal, protected internal Private Virtuella metoder Kan överskuggas av ärvande klasser Görs ofta på ToString()-metoden EC Utbildning AB 2013-02-26 7

Basklasser Exempel på en (bas)klass olika åtkomstnivåer en virtuell metod class Product // Hidden in derived classes private decimal price; private string name; // Default constructor public Product() name = "UNKNOWN"; Initialize(); public Product(string thename) name = thename; Initialize(); public string Name get return Name; set name = value; public decimal Price get return price; set price = value; protected void Initialize() //Do some initializations... public virtual string GetDisplayText() return name + "\t" + price.tostring("c"); EC Utbildning AB 2013-02-26 8

Skapa subklasser Skapas genom att i klassdefinitionen ange klassen som ska ärvas. Endast en basklass kan användas Nyckelordet base representerar basklassen override används på metoder som ska överlagras (om de är virtual i basklassen) class Book : Product //... EC Utbildning AB 2013-02-26 9

Subklasser class Book : Product //New auto-properties public string Title get; set; public string Author get; set; //Default constructor public Book() Initialize(); //inherited from Product //Calling Product constructor public Book(string thename) : base(thename) //Overrides the method in Product (which is virtual) public override string GetDisplayText() return base.getdisplaytext() + "\tauthor: " + Author + "\ttitle: " + Title; EC Utbildning AB 2013-02-26 10

Polymorfism Flera former Subklasser hanteras gemensamt som dess basklass Kan skicka olika typer till samma metod En basklass kan peka på en subklass EC Utbildning AB 2013-02-26 11

Polymorfism public partial class Form1 : Form private void btnpolym_click(object sender, EventArgs e) Book b = new Book("C# 2008", 300m, "Murach"); Software s = new Software("MyOwnSoftware", 10000m, "1.2"); //Can send both Software and Book - they are derived from Product PrintInfo(b); PrintInfo(s); private void PrintInfo(Product p) MessageBox.Show(p.GetDisplayText()); class Book : Product public string Author get; set; class Software : Product public string Version get; set; public Book(string name, decimal price, string author) : base(name, price) this.author = author; public override string GetDisplayText() return "Author: " + Author + "\tname: " + Name + "\tprice: " + Price.ToString("c"); public Software(string name, decimal price, string version) : base(name, price) this.version = version; public override string GetDisplayText() return base.getdisplaytext() + "\tversion: " + Version; EC Utbildning AB 2013-02-26 12

Casting Konvertering från basklass till subklass Den underliggande typen måste vara av subklass-typen Görs en felaktig konvertering kastas undantaget InvalidCastException EC Utbildning AB 2013-02-26 13

Casting public partial class Form1 : Form private void btncasting_click(object sender, EventArgs e) Book thebook = new Book("C# 2008", 300m, "Murach"); Product prod = thebook; //implicit casting PrintInfo(prod); PrintInfo(theBook); //implicit casting Book otherbook = (Book)prod; //explicit casting BookDisplay(otherBook); BookDisplay(theBook); BookDisplay((Book)prod); //in-place casting private void PrintInfo(Product p) MessageBox.Show(p.GetDisplayText()); private void BookDisplay(Book b) MessageBox.Show("Title:\t" + b.name + Environment.NewLine + "Author:\t" + b.author + Environment.NewLine + "Price:\t" + b.price); EC Utbildning AB 2013-02-26 14