Sid 1 2000-period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.

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
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Föreläsning 1.
Arv.
Objektorienterad tänkande
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 Konstruktor Ser till att objektets data är korrekt initierade MinKlass::MinKlass(); MinKlass::MinKlass(int.
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
Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT Lite OOA/OOD.
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 Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
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.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
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 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 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.
Sid 1 CD5250 Daniel Flemström MDH/IDT COM Extremely Rough Overview.
Föreläsning 4 Klasser Och Objekt.
Sid period2CD5250 OOP med C++ Daniel Flemström MDH/IDT Abstrakta Containertyper Vilka finns fördefinierade? Vad kan dom? #pragma warning(disable:4786)
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)”
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Undantag - eng. Exceptions Viktig del av klassbiblioteksdesign “Hoppa direkt ut med felkod” class.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Abstrakta Containertyper Vilka finns fördefinierade? Vad kan dom?
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
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Programmeringsteknik för K och Media
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.
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.
Ö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.
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:

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 Klasser är användardefinierade datatyper En abstraktion av något man använder Logiskt sammanhängande “En struct innehållande funktioner, inte bara data” Stack _stack push pop isEmpty Lampa tänd släck lyser

Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT En klass “i verkligheten” Är en samling objekt med likadana egenskaper, likadant beteende

Sid period2CD5250 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...

Sid period2CD5250 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; }

Sid period2CD5250 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

Sid period2CD5250 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 –OBS! Klasser och deras interaktion behöver dokumenteras

Sid period2CD5250 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

Sid period2CD5250 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  Vanligen alla data, en fråga om stil  protected – för Arvingarna, mer om det senare

Sid period2CD5250 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?

Sid period2CD5250 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

Sid period2CD5250 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 */ } För att få snabbhet trots många många anrop i OOP

Sid period2CD5250 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 Se detta som ett funktions- namn så blir det lättare! Men – OBS - ”operator” skrivs ej då den anropas

Sid period2CD5250 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

Sid period2CD5250 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

Sid period2CD5250 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

Sid period2CD5250 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”.