Objektbaserad programmering sid. 1 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv.

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

Klasser och objekt.
Algoritmer och data strukturer -Länkade listor
OOP Objekt-orienterad programmering
Föreläsning 1.
Arv.
Inkapsling.
Objektorienterad tänkande
Polymorfism.
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
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
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.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT C++ - förbättrat C?  Procedurellt program ser ut som C: sekvens, selektion, iteration  /* kommentar.
Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT CD5250 OOP med C++
Programmering i C# 3. Klasser.
Pekare och speciell programstruktur i inbyggda system
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 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.
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 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.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Riktade listor i C och Java Lösning till gruppövning 1.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 6. Klassmallar Templates kan givetvis även användas för klasser –Standardutseende template // Klassdefinition (*.h) class C { returtyp metod(parametrar…);...
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 1. Innehåll Introduktion till objektorientering –OOP (objektorienterad programmering) –Objekt, instanser, klasser C++ –OO i C++ –Standardbibliotek.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 4 Klasser Och Objekt.
Stack och Kö -Implementering -Tilllämpningar -- Kapitel 16, 11.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
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)”
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
Objekt, Klass och Instans Analys av systemet ger mer eller mindre detaljerade objekt Objekten sorteras och klass-diagram ritas upp där relationer reds.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
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.
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.
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 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
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.
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
Objektorienterad programmering sid. 1 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Objektorienterad programmering OOP = objektbaserad programmering.
TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder.
TDP004 Objektorienterad Programmering Fö 5 Minneshantering.
TDP004 Objektorienterad Programmering Fö 6 Objektorientering forts.
TDP004 Objektorienterad Programmering Fö 8 Sammanfattning
Detaljer i exception-hantering
Objektorienterad programmering forts
Presentationens avskrift:

Objektbaserad programmering sid. 1 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser

Objektbaserad programmering sid. 2 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Klasser är användardefinierade datatyper En abstraktion av något man använder Logiskt sammanhängande Stack _stack push pop isEmpty Lampa tänd släck lyser

Objektbaserad programmering sid. 3 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT En klass “i verkligheten” Är en samling objekt med likadana egenskaper, likadant beteende

Objektbaserad programmering sid. 4 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT En klass i ett programspråk-C++ är egentligen en “form att gjuta objekt i”. Klassen är en beskrivning av hur objekten kan se ut (attribut/egenskaper-medlemsdata) och bete sej/vad man kan göra med dom (metoder/operationer-medlemsfunktioner) storlek färg vikt hastighet tillstånd innehåll... skapa ta bort måla flytta starta stanna...

Objektbaserad programmering sid. 5 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Vi väljer vilka egenskaper och vilket beteende vi vill belysa class Car { public : start_engine(); shift_gear(); private : int current_gear; bool engine_runs; } class Car { public : void owner(person & p); bool taxIsPaid (); private : bool taxPaid; person _owner; }

Objektbaserad programmering sid. 6 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Klassen “finns inte” Det är objekten som “finns” Undantag: klassdata och klassfunktioner static Klasserna är verktyg för att göra objekt

Objektbaserad programmering sid. 7 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Bra med klasser/objekt informationsdöljande (information hiding) – mitt och ditt, kontroll, bemästra komplexitet –lokalitet, lätt hålla ihop Snitt mot omvärlden (interface) Bibliotek, tillverkare och användare –Klasser och deras interaktion behöver dokumenteras

Objektbaserad programmering sid. 8 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Klassens beståndsdelar  member data – jfr (typedef) struct  Val av sammansättning (aggregation):  “by value” eller  “by reference”  pekare, utbytbar, kan vara 0  referens, måste kopplas till objekt, kan ej ändras sen  metoder (operationer) - member functions

Objektbaserad programmering sid. 9 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Access specifiers  public – snittet mot användaren  private – interna hjälprutiner och data som användaren inte ska komma åt  protected – för Arvingarna, mer om det senare

Objektbaserad programmering sid. 10 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Medlemsåtkomst  “klassnivå” ::  “objektnivå”  i statiskt allokerat objekt.  i dynamiskt allokerat objekt, via pekare ->  “Forward-deklaration” class MinKlass; // bra till vad?

Objektbaserad programmering sid. 11 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Implementation av klass och objekt MinKlass görSi görSå data1 data2 class MinKlass { public: void görSi() {...} void görSå() {...} private: int data1,data2; } MinKlass mittobj1, mittobj2; Kod för medlems- funktionerna Data för mittobj1 Data för mittobj2

Objektbaserad programmering sid. 12 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT inline member functions class MyClass { doThis(xxx) { /* kod i class definition blir automatiskt inline*/ } } MyClass ::doThat { /* inte inline */ } inline MyClass ::foo { /* givetvis inline */ }

Objektbaserad programmering sid. 13 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT “Speciella” medlemsfunktioner  Konstruktor MinKlass(xxx)  destruktor ~MinKlass()  operatorer t.ex. bool operator==(const MinKlass&) Gemensamt för alla objekt: Skapa Ta bort

Objektbaserad programmering sid. 14 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Klassvariabler klass SparKonto static raenta 8% behallning objekt (mittSparKonto) static raenta behallning 800 static raenta behallning 850 objekt (dittSparKonto) kan användas även om inga objekt finns kan döljas i klassen med private, säkrare än globala objekt initeras lämpligen i klassnamn.c om det behövs static const int kan initieras i klassdefinition

Objektbaserad programmering sid. 15 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Klassmetoder  används för att manipulera klassdata  kan användas även om inga objekt finns  (kompileringsfel om man försöker manipulera objektdata) klass SparKonto static raenta 8% behallning aendraRaenta(nyRaenta)

Objektbaserad programmering sid. 16 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Klass inuti klass (inte klass mot klass...) class List class ListNode ett listobjekt information hiding! Man kan också ha en klass inuti en funktion, “local class”.

Objektbaserad programmering sid. 17 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Konstanta objekt const MinKlass mittobj(xxx); får inte förändras när de väl skapats. mittobj.strul(); // Ändringsförsök?? Hur håller kompilatorn/ programmeraren reda på vad medlemsfunktionerna gör?

Objektbaserad programmering sid. 18 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Konstanta objekt forts class MinKlass { entyp aendra(xxx); annantyp kolla() const; private: // diverse data } MinKlass::kolla() const { // Kompileringsfel om man försöker ändra i klassdata! }... const MinKlass a(xxx); a.aendra(ppp); // Kompileringsfel!

Objektbaserad programmering sid. 19 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Konstanta objekt forts class MinKlass { entyp aendra(xxx); annantyp kolla() const; private: osaeker *data; } class MinVektorKlass { mutable int index; // Hjälpvariabel som får ändras utan att objektets egentliga tillstånd påverkas search(xtype key, int &foundPos) const { foundPos = 0; for (index=0; index<max; index++) if (vec[index] = = key) {foundPos = index; return;} }

Objektbaserad programmering sid. 20 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT this-pekaren  return *this kedja ihop funktionsanrop  if (this != &that) spara exekveringstid vid exv. “självtilldelning” a = b eller objekt a objekt b this objekt a = = objekt b this ? screen.clear().moveCursor(2,2).setCursor(‘#’).display();

Objektbaserad programmering sid. 21 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Klass-scope och namnupplösning Access till klassmedlem:  “Klassnamn::medlemsnamn” måste användas i kod “utanför klassen” “inuti klassen” är  inuti klassdefinitionen class xxx { här };  inuti medlemsdefinitionerna xxx::func(ppp) { /* kod */ }  gäller även i definition av medlemsdata

Objektbaserad programmering sid. 22 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Klass-scope och namnupplösning forts Ordningen spelar roll, saker måste deklareras (men ej definieras) innan de används Undantag: namn använda i inline-funktions-kod namn i default-argument

Objektbaserad programmering sid. 23 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Klass-scope och namnupplösning forts En sak med ett visst namn inuti en klass döljer saker med samma namn utanför klassen Man kan komma runt detta med scope- operatorn, exempel: ::objektX pekar ut globalt objektX så man kommer åt det även inuti en klass med ett eget objektX

Objektbaserad programmering sid. 24 6/30/2015CD5250 OOP med C++ Mats Medin MDH/IDT Kort om klassmallar template class MyClass { } analogt funktionsmallar! (det kommer mera...)