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.

Slides:



Advertisements
Liknande presentationer
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.
Advertisements

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.
Fortsättningskurs i Programmering lektion 6
Klassarv och inkapsling
Repetition av objektorientering
OOP Objekt-orienterad programmering
Objektorienterad utveckling Lektion 2 Objekt, överlagring, överskuggning, klasshierarkier och dynamisk bindning KTH Peter Mozelius.
Metoder i java Det finns två typer av metoder i java
Arv.
Abstract & sealed.
Polymorfism.
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Alice in Action with Java
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
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Klasser och objekt Klasser, objekt och instansvariabler
Sid 41 Fordon int antalhjul; int vikt;
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.
Polymorfism.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmering i C# 5. Structer.
Arv.
Programmeringsteknik för Media1 & K1
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
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.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
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,
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 4 Klasser Och Objekt.
1. Ett problem/uppgift.
Objektorienterad programmering i Java
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Objektorienterad programmering
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
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.
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.
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
OOP&M - teori1 OOP del II– Föreläsning 2 vecka 46 Konstruktorer Instansmetoder Kapitel 14 i kursboken.
OOP&M - teori1 OOP&M del II– Föreläsning 5 vecka 50 OBJEKT Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle Book String.
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.
Arv, abstrakta klasser och gränssnitt
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
Objektorienterad programmering sid. 1 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Objektorienterad programmering OOP = objektbaserad programmering.
Föreläsning 9: Arv och UML
Presentationens avskrift:

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 ) Den nya klassen behåller alla egenskaper som den gamla har Lägger till nya egenskaper (fält) och utökar beteendet (nya metoder)

Arv (forts) Kan användas för att: bygga vidare på fördefinierade klasser i Javas klassbibliotek strukturera egna program i generell kod och mer specialiserad kod återanvända koden i superklasser många gånger

Konstruktorer Vid Arv Konstruktorer ärvs inte! Därför måste subklasser tillhanda- hålla egna konstruktorer I en subklass konstruktor måste ett anrop till en konstruktor i super- klassen ske Har superklassen en "tom" konstruktor anropas denna om inget eget anrop görs från subklassen

Konstruktorer Vid Arv Ett anrop till en konstruktor i super- klassen sker med nyckelordet super Detta anrop måste placeras först public Barn(String namn, int alder) { super(namn, alder); // Anropar superklassens konstruktor // Eventuell övrig kod här } // Nu kan vi skapa ett nytt objekt av Barn så här: Barn dotter = new Barn("Stina Karlsson", 8);

Arv (forts) En klass kan endast ärva ifrån en annan klass Anges inget arv, ärver klassen automatiskt från klassen Object Alla klasser ärver direkt eller indirekt från klassen Object

Object Implicit arv av Object public class Person { // Medlemmar } public class Person extends Object { // Medlemmar } Explicit arv av Object Följande variabeldeklaration är möjlig Object pappa = new Person("Kalle Karlsson", 33);

Arv Exempel ”Är en/ett…” Lastbil Fordon superklass Personbil subklass

Arv Ett Exempel Till ”Är en/ett …” Person - namn : String - ålder : int + Person(n : String, a : int) + Person() + setNamn(namn : String) + setÅlder(a : int) + getNamn() : String + getÅlder() : int + print() + toString() Barn - veckopeng : int + Barn(n : String, a : int, v : int) + setVeckopeng(v : int) + getVeckopeng() : int + okaVeckopeng(n : int) Anställd - företag : String + Anställd(n : String, a : int, f : String) + setFöretag(f : String) + getFöretag() : String + sparka()

Åtkomstregler Vid Arv private är fortfarande private fält och metoder ärvs ej av subklasser public är fortfarande public fält och metoder ärvs av subklasser protected (skyddad åtkomst) private gentemot andra klasser public gentemot subklasser Klasser som är final kan inte ärvas

Gömmande Av Fält Fält med samma namn i subklassen gömmer fält i superklassen Subklassen får nya fält som är helt separerade från fälten i superklassen Kod i superklassen refererar till dennes fält Kod i subklassen refererar till dennes fält public class Klass1 { protected int tal = 10; } public class Klass2 extends Klass1 { private int tal = 20; public void print() { System.out.println(tal); // 20 System.out.println(super.tal); // 10 } }

Omdefinition Av Metoder En subklass kan omdefiniera de metoder som ärvs från superklassen Innebär att metoden har samma namn, returvärde och parametrar Men har en annan implementation (kod) Den nya metoden kan komma åt den gamla metodens implementation public class Person { public String toString() { System.out.println(super.toString()); return namn; } }

Omdefinition Av Metoder Metoder som inte kan omdefinieras av en subklass är: final, static Metoder som kan omdefinieras av en subklass är: public, protected Metoder som måste omdefinieras av en subklass är: abstract

Abstrakta Klasser På sätt och vis motsatsen till final En abstrakt klass: är inte komplett går inte att skapa objekt av kan endast ärvas av andra klasser används när implementationen för några, men inte alla, metoder kan tillhandahållas i en superklass

Abstrakta Metoder En abstrakt metod: saknar implementation (kod) har endast en signatur (namn, returtyp och parametrar) måste implementeras i subklasser Finns minst en abstrakt metod måste hela klassen vara abstrakt public abstract class Person { public abstract void jobba(); }

Exempel på abstract ”Är en/ett …” GeometriObjekt # x : int # y : int + GeometriObjekt (x : int, y : int) + setX(x : int) + setY(y : int) + beraknaArea() : double Rektangel - langd : int - bredd : int + Rektangel (x : int, y : int, langd : int, bredd : int) + setLangd(langd : int) + getLangd() : int + setBredd(bredd : int) + getBredd() : int + beraknaArea() : double Cirkel - radie : int + Cirkel(x : int, y : int, d : double) + setRadie(d : int) + getRadie() : int + beraknaArea() : double