Składnia C++ Programowanie Obiektowe, część 3 Mateusz Cicheński

Podobne dokumenty
Wyjątki (exceptions)

Obsługa wyjątków. Język C++ WW12

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Identyfikacje typu na etapie. wykonania (RTTI)

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

11.1 Obsługa błędów i wyjątków Polecenia try, throw, catch CLI C++, klasa Exception... 9

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Zaawansowane programowanie w języku C++ Wyjątki

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3

Programowanie w języku C++

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Efekty uboczne błędów

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

ATD. Wykład 8. Programowanie (język C++) abstrakcyjny typ danych. Abstrakcyjne typy danych (ATD) Metody czysto wirtualne. Definicje i uwagi:

Rzutowanie i konwersje

Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk

EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi

Wykład V. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Klasyfikacja wyjątków

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Programowanie obiektowe w języku

Ściąga z JTP. (Ja Tjeba Pierd...) Uwagi, nowe pytania, poprawki itd. zgłaszać na forum mambo.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

EGZAMIN 2 (14 WRZEŚNIA 2015) JĘZYK C++

Zaawansowane programowanie w C++ (PCP)

Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wyjątki. Wyjątki

Programowanie 2. Język C++. Wykład 3.

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

class Samochod { void Ruch(); }; class Amfibia : public Samochod { void Ruch(); // amfibie pływają };

Programowanie obiektowe

dr inż. Jarosław Forenc

Język C++ wykład VIII

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

WYJĄTKI. Jest ona jednak czasochłonna i prowadzi do duŝego zapotrzebowania na zasoby systemu.

C++ język nie dla ludzi o słabych nerwach. Małgorzata Bieńkowska

Operacje wejścia/wyjścia (odsłona druga) - pliki

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Programowanie obiektowe

1. Mamy definicje czterech klas: class A1 {public: A1() {cout<<"a1";}}; class A2 : private A1 {public: A2() {cout<<"a2";}}; class A3 {public: A3()

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Języki i metody programowania Java INF302W Wykład 3 (część 1)

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Języki programowania - podstawy

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Programowanie Komputerów

Podstawy programowania w języku C++

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

Programowanie Obiektowew języku C++ Zadania L9

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Aplikacje w środowisku Java

Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746)

Wykład 04. Programowanie obiektowe. Maciej Wołoszyn 17 marca Spis treści

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Programowanie Obiektowew języku C++ Zadania L4

Programowanie obiektowe

Throwable. Wyjatek_1(int x_) { x = x_; } int podaj_x()

Owad():waga(1),jadowitosc(false) {cout<<"konstruktor domyslny owada\n";}

#include "stdafx.h" #include <iostream> #include "windows.h" using namespace std;

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

ECLIPSE wnioski z dwóch pierwszych laboratoriów

TEMAT : KLASY POLIMORFIZM

Programowanie obiektowe w C++ Wykład 12

Kurs programowania. Wykład 9. Wojciech Macyna

Plik klasy. h deklaracje klas

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this


JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

Programowanie 2. Język C++. Wykład 9.

Podstawy programowania w języku C++

Podstawy Programowania Obiektowego

Signals + Threads: Qt vs. Boost

Słowa kluczowe i nazwy

Programowanie obiektowe

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Wprowadzenie do programowanie obiektowego w języku C++

Programowanie 2. Język C++. Wykład Relacje między klasami, klasy zagnieŝdŝone, klasy lokalne

Konstruktor kopiujacy

Konwencje obsługi błędów

Wykład 8: Obsługa Wyjątków

Na ekranie monitora zostaną wyświetlone w dwu liniach teksty Pierwsza linia Druga linia

Wstęp do Programowania 2

Programowanie Obiektowew języku C++ Zadania L4

Programowanie w języku C++

Dzisiejszy wykład. Klasa string. wersja prosta wersja ze zliczaniem odwołań. Wyjątki Specyfikator volatile Semafory

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Programowanie Obiektowe Ćwiczenie 4

Polimorfizm w pigułce

Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Kolekcje obiektów. Wyj tki.

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

DYNAMICZNE PRZYDZIELANIE PAMIECI

Transkrypt:

Składnia C++ Programowanie Obiektowe, część 3 Mateusz Cicheński

Rzutowanie Implicit/explicit cast Reinterpret cast Static cast Z wykorzystaniem Run-time Type Information Obsługa wyjątków Czym jest wyjątek w C++ Konstrukcja try/catch Zagnieżdżanie obsługi wyjątków Specyfikowanie rzucanych wyjątków Klasa exception Unexpected & terminate handler Plan zajęć

#include <iostream> class A { float x; ; class B { int y; void function() { cout << y << endl; ; float a = 4.5f; int b = a; //b = 4 int c = (int) a; //c = 4 int d = int (a); //d = 4 A a; B* ptr = (B*) &a; //one can convert a pointer to any pointer! ptr->function(); //either runtime error or unexpected result! Implicit/explicit cast

#include <iostream> class A { float x; virtual void ~A() { ; class B { int y; void function() { cout << y << endl; ; A a; B* ptr = reinterpret_cast<b*>(&a); //ptr!= NULL, possible runtime errors Reinterpret cast

#include <iostream> class A { float x; virtual void ~A() { ; class B : public A { int y; void function() { cout << y << endl; ; A a; B* ptr = static_cast<b*>(&a); //ptr!= NULL, possible runtime errors Static cast

#include <iostream> class A { float x; virtual void ~A() { ; class B { int y; void function() { cout << y << endl; ; A a; B* ptr = dynamic_cast<b*>(&a); if (ptr!= NULL) ptr->function(); //ptr == NULL Przy pomocy RTTI

#include <iostream> class A { float x; virtual void ~A() { ; class B : public A { int y; void function() { cout << y << endl; ; A a; B* ptr = dynamic_cast<b*>(&a); //ptr == NULL B b; A* aptr = &b; B* ptr2 = dynamic_cast<b*>(aptr); //ptr2!= NULL Przy pomocy RTTI c.d.

#include <iostream> #include <typeinfo> class A { ; class B : public A { ; virtual void ~A() { A a; B b; A* ptr = &b; A& ref = b; cout << typeid(a).name() << endl; //1A cout << typeid(b).name() << endl; //1B cout << typeid(ptr).name() << endl; //P1A cout << typeid(*ptr).name() << endl; //1B cout << typeid(ref).name() << endl; //1B Przy pomocy RTTI c.d.

Jętka rząd owadów uskrzydlonych, okres życia larw może trwać nawet do kilku lat, postacie dorosłe żyją bardzo krótko Dowolny obiekt! Wyjętka pochodna jętki Czym jest wyjętka w C++ wyjątek

#include <iostream> cout << 1; try { cout << 2; throw 3; cout << 4; catch (int e) { cout << e; cout << 5; $./main 1235 output Przykład obsługi wyjątku

try { //catch int exceptions catch (int e) { //catch char exceptions catch (char e) { //catch any unhandled exceptions catch ( ) { Konstrukcja try/catch

try { try { catch (int e) { throw; catch ( ) { throw; catch (char e) { catch ( ) { Zagnieżdżona obsługa wyjątków

//can throw any exception void function1(); //can throw only char exceptions void function2() throw (char); //cannot throw any exception void function3() throw (); Specyfikowanie rzucanych wyjątków

class exception { exception () throw(); exception (const exception&) throw(); exception& operator= (const exception&) throw(); virtual ~exception() throw(); virtual const char* what() const throw(); #include <iostream> #include <exception> exception try { int* arr = new int[1000000000]; catch (exception& e) { cout << e.what() << endl; //std::bad_alloc Klasa exception

void myunexpected() { throw; void myterminate() { //e.g. prevent termination set_unexpected(myunexpected); set_terminate(myterminate); Unexpected & terminate

#include <iostream> void myunexpected() { throw; void function() throw (int, bad_exception) { throw 3.14159265359f; set_unexpected(myunexpected); try { function(); catch (exception& e) { cout << e.what() << endl; //std::bad_exception cout << 5; Klasa bad_exception

Default: unexpected == terminate == abort(); void function() throw (int) { throw 3.14159265359f; => call unexpected => abort() void function() throw (int, bad_exception) { throw 3.14159265359f; => bad_exception thrown void myunexpected() { throw 3; set_unexpected(myunexpected); void function() throw (int) { throw 3.14159265359f; => OK., myunexpected will throw int instead of float Domyślna obsługa unexpected/terminate