Abstract & sealed.

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

Fortsättningskurs i Programmering lektion 6
Klassarv och inkapsling
Repetition av objektorientering
OOP Objekt-orienterad programmering
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
ObjektOrienterad analys och design. SVP Vt2009 Föreläsning nr 2, måndag 8 april kl Diskussion (kurshemsida): Om designuppgiften Om projektuppgiften.
Arv.
Objektorienterad tänkande
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
i olika programmeringsspråk
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.
Klasser och objekt Klasser, objekt och instansvariabler
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.
Sid 41 Fordon int antalhjul; int vikt;
int res2=Math.max(tal1,tal2);
4. Arv och dynamisk bindning
Vektorer (klassen Vector) Sortering
Polymorfism.
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.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Räckvidd och synlighet. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Synlighet (meddelandesändning) Det.
Programmering i C# 5. Structer.
Arv.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Multipelt arv Drawable draw() move() position bitmap Persistent save() restore() storage_file_name.
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.
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Programmering i C# 9. Pekare och osäker kod.
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.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
OOP F14:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 14 Repetition Tips inför inlämningsuppgift 2.
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
Objektorienterad programmering i Java
Objektorienterad programmering
Föreläsning 3, Kapitel 3 Objektinteraktion - Skapa objekt som samarbetar Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David.
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.
7. Delegerare och notifierare
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.
Ö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
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Konstanter float pi; const float pi = ; float *pip = π //Kompileringsfel! const float.
Föreläsning 5 Klasser och instanser
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.
OOP&M - teori1 OOP del III–vecka 15 Mer NetBeans MouseEvent Graphics Threads TIJ Chapter 14 Menus sid Drawing File Dialogs
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
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 3 Väsentliga delar i ett Javaprogram Input i paketet extra
1 Mer om metoder, variabler, klasser och objekt. Kursboken: - Kapitel 6 - Kapitel 8.
TDP004 Objektorienterad Programmering Fö 6 Objektorientering forts.
TDP004 Objektorienterad Programmering Fö 8 Sammanfattning
Objektorienterad programmering forts
Presentationens avskrift:

Abstract & sealed

Abstrakta klasser Vad är en abstrakt klass? En abstrakt klass är en klass där man inte kan skapa några objekt som bara tillhör den klassen. Däremot går det att skapa objekt av dess härledda klasser. en abstrakt basklass är alltså en ren basklass, referenser av den typen kan finnas, men inte objektet. abstract class Shape { …. }

Abstrakta klasser Designdilemma i OOP Lösning Basklasser ska vara abstrakta, tidlösa, allmänna och utan konkreta detaljer. Härledda klasser ska vara konkretiseringar med alla nödvändiga implementationsdetaljer. Men samtidigt vill man använda basklassreferenser för att på ett generellt sätt hantera objekt av härledda klasser, och då måste ju de medlemmar som ska anropas finnas i basklassen. Lösning Att i basklassen ha ett antal metoder som finns där bara till namnet, enbart för att kunna anropas via basklassreferenser. Dessa metoder kallas för ”placeholder” och består av metoder utan implementation  abstrakta metoder.

Abstrakta metoder abstract class Shape { public abstract double Area(); } En abstrakt metod har ingen kropp och därmed ingen implementation. Implementationen ersätts av ett semikolon. Det är endast tillåtet att deklarera abstrakta metoder i en abstrakt klass. D.v.s. en abstrakt metod tvingar klassen att vara abstrakt men inte tvärtom. I en abstrakt klass kan finnas icke abstrakta metoder. En abstrakt metod är implicit virtuell och måste därför implementeras med en override metod i alla härledda klasser. den abstrakta metoden måste implementeras i härledd klass, annars blir även den klassen abstrakt.

Abstrakta metoder abstract class Shape { public abstract double Area(); } class Circle: Shape private int radius; public int Radius get { return radius; } set { radius = value; } public override double Area() return System.Math.PI * radius * radius;

Abstrakta egenskaper Det går att deklarera egenskaper som abstrakta i en abstrakt klass. Implementationen för get och set ersätts med en semikolon. I en härledd klass måste dessa egenskaper markeras override.

Abstrakta egenskaper abstract class Shape { public abstract double Area(); public abstract int X { get; set; } public abstract int Y { get; set; } } class Circle: Shape private int radius; private int x; private int y; public override int X get { return x;} set { x = value;} public override int Y get { return y; } set { y = value; } public int Radius get { return radius; } set { radius = value; } public override double Area() return System.Math.PI * radius * radius;

Abstrakta klasser För att dra detta tänkande ytterligare ett steg kan man tänka sig basklasser som enbart är avsedda att vara paket av abstrakta metoder och egenskaper. En slags standarsuppsättningar av metodnamn / egenskapsnamn som används som basklasser och därmed ger flera av härledda klasser ett slags standardutseende – ett gemensamt gränssnitt.

Sealed klass För att skapa en klass som hindrar andra klasser att ärva ifrån den då markeras klassen med nyckelordet sealed. D.v.s. sealed klass kan aldrig vara en basklass till ngn annan klass. Om ngn klass försöker ärva från en sealed klass, då genereras ett kompileringsfel. En sealed klass kan inte deklarera en virtuell metod. Det går att deklarera en metod som sealed. Detta betyder att den härledda klassen inte kan skriva om implementationen för den sealed metoden.

En abstakt metod presenterar namnet på en metod. Ingen implementation En virtuell metod är den första implementeringen av en metod. En override metod är ytterliggare en implementering av en metod. En sealed metod är den sista implementeringen av en metod.