Detaljer i exception-hantering

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

Avlusning Debugger (”avlusare”) Breakpoints Watch.
Funktioner och programorganisation
Algoritmer och data strukturer -Länkade listor
OOP Objekt-orienterad programmering
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Föreläsning 1.
Arv.
Abstract & sealed.
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.
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.
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
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.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
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.
Programmeringsteknik för Media1 & K1
1. En infrastruktur för programutveckling
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.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
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…);...
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
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.
Sid period2CD5250 OOP med C++ Daniel Flemström MDH/IDT Abstrakta Containertyper Vilka finns fördefinierade? Vad kan dom? #pragma warning(disable:4786)
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Objektorienterad programmering
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.
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.
Objekt, Klass och Instans Analys av systemet ger mer eller mindre detaljerade objekt Objekten sorteras och klass-diagram ritas upp där relationer reds.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
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.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och Datastrukturer -- Kap 21,14 Prioritets Köer (Priority Queues ), Graph.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
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,
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
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.
Objektorienterad programmering sid. 1 7/15/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Objektorienterad programmering OOP = objektbaserad programmering.
Föreläsning 3. Klasser class namn { public: deklarationer av synliga medlemsfunktioner och datamedlemmar protected: private: deklarationer av gömda medlemsfunktioner.
TDP004 Objektorienterad Programmering Fö 5 Minneshantering.
TDP004 Objektorienterad Programmering Fö 6 Objektorientering forts.
TDP004 Objektorienterad Programmering Fö 8 Sammanfattning
Objektorienterad programmering forts
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

Detaljer i exception-hantering throw skapar temporärt objekt av exception-klassen exception-objektet tillverkas genom att det första objektet kopieras till speciell lagringsplats temporärobjektets statiska typ används temporärobjektet tas bort exception handler letas upp stack unwind, destruktoranrop auto_ptr?! därför bör resurser representeras av objekt 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Detaljer i exception-hantering forts catch (Extype eobj) eobj exception-objektet kopieras till eobj Om Extype är basklass till exception-objektet kopieras endast basklass-delen eventuellt rethrow skickar exception-objektet (inte eobj) vidare 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Detaljer i exception-hantering forts class Base { virtual print() throw (file_err, io_err); } class Derived { virtual print() throw (file_err); Mer restriktiv myBaseP->print(); // i värsta fall... 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Detaljer i exception-hantering forts MyClass::MyClass(int test1, int test2) try : medlem1(test1) medlem2(test2) { /* kod */ } catch (...) 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

exception(const exception &) throw (); //exception.h namespace std { class exception { public: exception() throw(); exception(const exception &) throw (); exception& operator=(const exception &) throw(); virtual ~exception() throw(); virtual const char* what() const throw(); } 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Predefined exception classes logic_error runtime_error bad_alloc bad_cast out_of_range length_error range_error invalid_argument domain_error overflow_error underflow_error 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Funktionsmall template <class Type> void myfunc(Type * arr, int n) { // kod; // objekt av typ Type kan deklareras och // användas inom funktionen } Type döljer ev. Type deklarerat före mallen Implicit instansiering, Type byts mot aktuell typ 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Klassmall template <class Type> class Stack { Stack(); ~Stack(); void push(const Type item); void pop(Type &item); } instansiering görs explicit enligt: Stack<int> my_stack; Type byts mot aktuell typ 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Template nontype parameter+defaults template <class Type=string, int size=1024> class Stack { public: Stack(); ~Stack(); void push(const Type item); void pop(Type &item); private: Type theStack[size]; } konstant uttryck, beräknas vid kompilering Defaultvärde från flera deklarationer kan användas 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Klassmall forts Medlemsfunktioner definierade i .cpp-filen måste också göras som mallar: template <class Type> Stack<Type>::push const Type item) // OBS! { // kod } Type byts mot aktuell typ 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

friends (vänner) i klassmallar Följande kan vara “vänner till klassmallar”: klass eller funktion som inte är mall Klass eller funktion som är mall, bunden till klassmallen genom att den använder klassmallens typparameter Klass eller funktion som är mall, obunden, dvs med egen typparameter oberoende av klassmallens 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Om klassvariabler definieras i en klassmall får varje instansiering sin egen uppsättning. Klasser inuti klasser kan göras även med mall. Den inre klassen kan använda den yttre klassens mall-parametrar. Medlemsfunktioner och nästade klasser i en klassmall kan ha egna typparametrar oberoende av klassmallens, ”member template” detta används i abstrakta containertyper 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Abstrakta Containertyper Vilka finns fördefinierade? Vad kan dom? 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Sekventiell container innehåller en ordnad följd av element. Följande typer finns: vector Specialfall “deque”, optimerad för köer lista 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

dvs “array” i C, C++, Pascal m.fl. programmeringsspråk. OBS! Det svenska ordet vektor betyder inom matematiken endimensionell matris, dvs “array” i C, C++, Pascal m.fl. programmeringsspråk. Detta är inte samma sak som “vector” i C++! 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

vector<Type> 1 2 3 4 5/20/2018 CD5250 OOP med C++ 1 2 3 4 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

vector member functions size capacity reserve resize push_back push_front [] begin end insert element/sequence erase element/sequence operator= empty vector(vec.pos1,vec.pos2) find 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

list<Type> 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

list member functions begin end insert element/sequence size push_back push_front merge sort reverse erase element/sequence operator= empty list(list2.pos1,list2.pos2) 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Iteratoranvändning for (vector<string>::iterator myiterator = mycontainer.begin(); myiterator!= mycontainer.end(); ++ myiterator) cout << * myiterator << endl; 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

Associativ container Stöder effektiv sökning Följande typer finns: map - (nyckel, värde) - par set - visst element finns/finns inte multimap, multiset: som map, set men det kan finnas flera par/element med samma nyckel 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

map<Type1, Type2> #include <map> map <string,int> myPhonebook; myPhonebook.insert(string(“Joe”), 123456); ... int joes_number = myPhonebook[“Joe”]; myPhonebook.erase(“Joe”); 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT

set<Type> #include <set> set <int> lucky_numbers; lucky_numbers.insert(3); lucky_numbers.insert(7); lucky_numbers.insert(13); 5/20/2018 CD5250 OOP med C++ Mats Medin MDH/IDT