Objektorienterad programmering sid. 1 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Objektorienterad programmering OOP = objektbaserad programmering.

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

1 Windows programmering (2) Borland C++ Builder 4/5 Modsoft Ab Kent Westerholm.
Klasser och objekt.
Algoritmer och data strukturer -Länkade listor
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Föreläsning 1.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning.
Arv.
Abstract & sealed.
Inkapsling.
Polymorfism.
Alice in Action with Java
i olika programmeringsspråk
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Konstruktor Ser till att objektets data är korrekt initierade MinKlass::MinKlass(); MinKlass::MinKlass(int.
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.
Objektorienterad programmering i Java
Programmering i C# 3. Klasser.
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;
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.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 10: Objektorientering Objektorientering och abstrakta datatyper Dynamisk bindning Singel mot multipelt.
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
Övning 4 Ritobjekt.
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,
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 1. Innehåll Introduktion till objektorientering –OOP (objektorienterad programmering) –Objekt, instanser, klasser C++ –OO i C++ –Standardbibliotek.
Föreläsning 4 Klasser Och Objekt.
Objektorienterad programmering i Java
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
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Lite OOA/OOD.
Föreläsning 2. Allmänt STL genererar varningar i Visual C++ –”#pragma warning (disable : 4786)”
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Undantag - eng. Exceptions Viktig del av klassbiblioteksdesign “Hoppa direkt ut med felkod” class.
Arv repetition Arv = Är relation Tillgänglighet public, protected och private. Överklass ös Direkt härledd underklass dhu: Class dhu : public ös{} Indirekt.
7. Delegerare och notifierare
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Funktionsmall template void myfunc(Type * arr, int n) { // kod; // objekt av typ Type kan deklareras.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Konstanter float pi; const float pi = ; float *pip = π //Kompileringsfel! const float.
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
Lite ObjektOrienterad Analys och Design sid. 1 6/1/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Lite OOA/OOD.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
OOP&M - teori1 OOP del II– Föreläsning 2 vecka 46 Konstruktorer Instansmetoder Kapitel 14 i kursboken.
C++ som ett bättre C Sid 1 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT C++ kurs CD5250, vårterminen 2000 Lärare: Mats Medin,
Iteratorer och generiska algoritmer sid. 1 6/28/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Iterator vector ::iterator b = ivec.begin() vector ivec vector.
Överlagring av operatorer, friends, user-defined conversions, klassmallar sid. 1 6/29/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Överlagring av operatorer.
Objektbaserad programmering sid. 1 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv.
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.
TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder.
TDP004 Objektorienterad Programmering Fö 6 Objektorientering forts.
TDP004 Objektorienterad Programmering Fö 8 Sammanfattning
Detaljer i exception-hantering
Objektorienterad programmering forts
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

Objektorienterad programmering sid. 1 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Objektorienterad programmering OOP = objektbaserad programmering + arv Fordon TågBåtBil Flygplan

Objektorienterad programmering sid. 2 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Exempel på arv Drawable rita() flytta() position bitmap Persistent save() restore() storage_file_name object_id Box bredd hojd Text_Box text font Cirkel centrum radie Linje end_a end_b Pil riktning byt_ riktning() Bankkonto agare saldo satt_in(summa) ta_ut(summa) Bilregpost agare marke regnr besiktigad() skattad()

Objektorienterad programmering sid. 3 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Arv innebär “Underklassen” kan göra det som “överklassen” gör + det vi själva bestämmer att den ska kunna dessutom Underklassen håller samma data som överklassen + det den behöver för sitt eget tillagda beteende

Objektorienterad programmering sid. 4 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Arv innebär forts Underklassens beteende är mer specialiserat Överklassens beteende är mer generellt Klasser som är mycket generaliserade har vi ingen nytta av att instansiera - abstrakta överklasser

Objektorienterad programmering sid. 5 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Att jobba med arv Oftast börjar man med att hitta de objekt man behöver - och deras klasser Sen letar man rätt på beteende som är gemensamt för flera klasser –bryts ut till överklass Man tittar också efter existerande klasser man kan använda

Objektorienterad programmering sid. 6 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Överklassens privata data kan inte underklassens metoder komma åt Metoder som är implementerade i överklassen kommer dock åt dem

Objektorienterad programmering sid. 7 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Synligt (public) arv - arv av interface class Box : public Drawable {/* metoder och data */} Box-klassens anropssnitt erbjuder även metoderna rita() och flytta() som definierats i överklassen Drawable (jfr sid 1. rita() och flytta() är givetvis public:) Även implementationen ärvs - om inte...

Objektorienterad programmering sid. 8 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Synligt (public) arv - arv av interface forts class Bankkonto : public Persistent {/* metoder och data */} Bankkonto -klassens anropssnitt erbjuder även metoderna save() och restore() som definierats i överklassen Persistent (jfr sid 1. save() och restore() är givetvis public:) Även implementationen ärvs - om inte...

Objektorienterad programmering sid. 9 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Om inte... Överklassen Drawable vet inte hur en Box eller Cirkel ser ut, bara att det ska gå att rita den - alltså får draw() implementeras i Box, Cirkel, Linje,... Drawable::rita() är en pure virtual function Enbart anropssnitt (interface) ärvs för metoden draw() Drawable kan inte instansieras - - Drawable är en abstrakt överklass

Objektorienterad programmering sid. 10 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Ett statiskt allokerat objekt Har plats för de medlemsdata som finns i dess typ - varken mer eller mindre Alltså är överklass-objektets lagringsutrymme mindre än underklassobjektet

Objektorienterad programmering sid. 11 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Exempel: Drawables Gör en sekvens av grafikobjekt av olika subtyp - Box, Cirkel, Linje, etc. som ska ritas på skärmen Vi kan inte allokera statiskt, objekten måste hanteras via pekare eller referenser (varför var det så?) adasd dfasfas sfdsfd Box*Cirkel* Pil* Linje* Text_Box*

Objektorienterad programmering sid. 12 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Exempel: Drawables forts List ritlista; // template // class List //... List::stoppaIn(Type *elem); ritlista.stoppaIn(minOrangeBox); ritlista.stoppaIn(mingroenaCirkel); ritlista.stoppaIn(mittStreck); Jag trodde att typkontrollen skulle sätta stopp för det där!

Objektorienterad programmering sid. 13 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Konvertering subtyp supertyp Konvertering från subtyp till supertyp är tillåtet - sker automatiskt (implicit) vid behov! Konvertering från supertyp till subtyp görs med dynamic_cast

Objektorienterad programmering sid. 14 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT dynamic_cast med pekare Behövs t.ex. för att anropa medlemsfunktion som inte finns i “överklassen”: Drawable *mittRitobjekt = hamtaNastaObj; Pil *pp = dynamic_cast (mittRitobjekt); if (pp) // Det var en pil, konvertering lyckades! pp->byt_riktning(); Objektets dynamiska typ är känd men för medlemsåtkomst används den statiska typen. :-(:-(

Objektorienterad programmering sid. 15 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT dynamic_cast med referens Exempel: anropa subtypens medlemsfunktioner på ett objekt utpekat av “supertypreferens”: Drawable &mittRitobjekt = hamtaNastaObj; try { Pil &pp = dynamic_cast (mittRitobjekt); pp->byt_riktning(); } catch (std::bad_cast) { /* Det var inte en pil */}

Objektorienterad programmering sid. 16 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Public inheritance - synligt arv public members (synliga medlemmar) i överklassen blir public (synliga) i underklassen Protected members (skyddade medlemmar) i överklassen blir protected (skyddade) i underklassen –(privata medlemmar i överklassen kommer man inte åt alls från underklassen)

Objektorienterad programmering sid. 17 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Protected inheritance - skyddat arv public members (synliga medlemmar) och protected members (skyddade medlemmar) i överklassen blir protected (skyddade) i underklassen –(privata medlemmar i överklassen kommer man inte åt alls från underklassen)

Objektorienterad programmering sid. 18 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Private inheritance - privat arv public members (synliga medlemmar) och protected members (skyddade medlemmar) i överklassen blir private (privata) i underklassen –(privata medlemmar i överklassen kommer man inte åt alls från underklassen)

Objektorienterad programmering sid. 19 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT i överklasstyp av arvi underklass publicpublicpublic protected public protected privatepublicej åtkomlig publicprotected protected protectedprotected protected privateprotected ej åtkomlig publicprivate private protectedprivate private privateprivate ej åtkomlig