Zaawansowane programowanie w C++ (PCP)

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

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

Zaawansowane programowanie w C++ (PCP)

Język C++ wykład VIII

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Programowanie Obiektowe i C++

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

Curiously recurring template pattern

Zaawansowane programowanie w C++ (PCP)

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

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Programowanie obiektowe w C++ Wykład 12

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

Zaawansowane programowanie w C++ (PCP)

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Zaawansowane programowanie w C++ (PCP)

EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi

Zaawansowane programowanie w C++ (PCP)

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

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

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

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

Podstawy Programowania Obiektowego

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

Programowanie i struktury danych

Programowanie w języku C++

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

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

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 w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

C++11. C++ 11 wybrane elementy. C++11: referencje do rvalue C++ 11: C++11: referencje do rvalue. C++11: referencje do rvalue. Referencje do rvalue

Szablony klas, zastosowanie szablonów w programach

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

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

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

Wyliczanie wyrażenia obiekty tymczasowe

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

Wprowadzenie do szablonów szablony funkcji

Wykład 4: Klasy i Metody

Programowanie Obiektowe i C++

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

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.

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

Wprowadzenie do szablonów szablony funkcji

Szablony funkcji i klas (templates)

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

C++ - szablony kontenerów. Kontenery i szablony kontenerów. C++ - szablony kontenerów. C++ - szablony kontenerów. C++ - szablony kontenerów

Konstruktor kopiujacy

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

obiekty funkcyjne - funktory

Dziedziczenie jednobazowe, poliformizm

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

Zaawansowane programowanie w języku C++ Programowanie obiektowe

C++11. C++ 11 wybrane elementy. C++11: referencje do rvalue C++ 11: C++11: referencje do rvalue. C++11: referencje do rvalue. Referencje do rvalue

Programowanie komputerowe. Zajęcia 5

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

dr inż. Jarosław Forenc

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Spis treści. Wprowadzenie 15

PROGRAMOWANIE GENERYCZNE W JĘZYKU C++

Szablony funkcji i szablony klas

Programowanie obiektowe w języku

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);

1 Atrybuty i metody klasowe

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

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

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

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

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Przypomnienie o klasach i obiektach

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

TEMAT : KLASY DZIEDZICZENIE

Podstawy programowania w języku C++

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie, część I

C++ Przeładowanie operatorów i wzorce w klasach

Zaawansowane programowanie w języku C++ Klasy w C++

PARADYGMATY PROGRAMOWANIA Wykład 3

Paradygmaty programowania. Paradygmaty programowania

Programowanie obiektowe

Deklaracja struktury w C++

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Wyjątki (exceptions)

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

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

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

Szablon klasy std::list

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

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

Stos liczb całkowitych

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Język C++ Różnice między C a C++

Języki i paradygmaty programowania

Wstęp do Programowania 2

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

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

Transkrypt:

Wykład 9 - powtórzenie. 11 maja 2007

Powtórzenie materiału obiekty automatyczne, statyczne, tymczasowe, dynamiczne dziedziczenie, agregacja polimorfizm, funkcje wirtualne wzorce projektowe (strukturalne, bechawioralne, kreacyjne) obsługa błędów, mechamizm wyjątków sprytne wskaźniki szablony biblioteka standardowa, kolekcje

Zad 1 - szablony Napisz szablon funkcji wypisującej elementy kolekcji na podany strumień. Elementy rozdzielaj przecinkiem. template<typename T> void print(const T& kolekcja, std::ostream& os) { /* tutaj implementacja */ Które instrukcje tworzą iterator (wewnątrz szablonu print): T::const_iterator it; typename T::const_iterator it; class T::const_iterator it; Podaj prawidłowe konkretyzacje szablonu print: vector<int> v; print(v, cout); vector<int> v; print<int>(v, cout); vector<int> v; print<std::vector<int> >(v, cout);

Zad 2 - wyjątki Podaj napis, który będzie wypisany po wywołaniu funkcji zad2(). //Klasa wyjatku struct E : public std::exception { char c_; E(char c) : c_(c) { ; //Klasa wyjatku struct EE : public E { EE(char c) : E(c) { ; struct Foo { char c_; Foo(char c) : c_(c) { cout << c_; Foo(){ cout << c_; ; typedef std::auto_ptr<foo> PFoo; //Metoda fabryczna PFoo f(char c){ return PFoo(new Foo(c) );

void g() { PFoo pa = f( a ); { PFoo pb = f( b ); try { PFoo pc = pa; throw EE( c ); f( d ); catch(const E&) { cout << e ; throw EE( f ); catch(const EE&) { cout << g ; throw E( h ); void zad2() { try { g(); catch(const EE&) { cout << i ; catch(const E&) { cout << j ; cout << endl;

Zad 3 - wzorce Uzupełnij implementacje klas Pracownik, Specjalista, Kierownik aby możliwe było tworzenie kopii obiektów tych klas. void zad3() { Kierownik* k = new Kierownik( Abacki ); k->dodaj( new Pracownik( Babacki ) ); k->dodaj( new Pracownik( Cabacki ) ); Kierownik* kk = new Kierownik( Dabacki ); kk->dodaj( k ); kk->dodaj( new Specjalista( Ebacki ) ); //tutaj tworzy kopie obiektu Kierownik* kkk = new Kierownik(*kk); delete kk; /* tutaj posluguje sie obiektem kkk */ delete kkk;

struct Pracownik { virtual Pracownik() { ; struct Specjalista : public Pracownik { virtual Specjalista() { ; class Kierownik : public Pracownik { public: Kierownik(const std::string& n) : Pracownik(n) { virtual Kierownik() { for(vector<pracownik*>::iterator it= podlegli.begin(); it!= podlegli.end(); ++it ) delete *it; void dodaj(pracownik* prac) { podlegli.push_back(prac); private: vector<pracownik*> podlegli; ;

zad4 - stl, kolekcje zaproponuje kolekcję przechowującą dane personalne (imię, nazwisko, adres). Najczęstszą operacją na kolekcji jest wyszukiwanie informacji bazując na nazwisku. zaproponuj kolekcję przechowującą kolejkę zadań do wykonania (zadanie jest opisane przez nazwę oraz opis). Elementy są dodawane na koniec, zaś usuwany jest początkowy.

zad5 - różne Odziedziczyłeś projekt, który zawiera klasę Zespolone. class Zespolone { public: Zespolone( double re, double im = 0 ) : re_(re), im_(im) {; void operator+( Complex other ) { _re = _re + other._real; _im = _im + other._imaginary; void operator<<( std::ostream os ) { os << ( << _re <<, << _im << ) ; Zespolone operator++() { ++_re; return *this; private: double re_, im_; ;

Operator przypisania Dla klasy Okno dostarczono trzy warianty operatora przypisania: class Bitmap { /*... */ ; class Okno { /*... */ private: Bitmap* b; ; Które warianty zapewniają bezpieczne przypisanie obiektu samego do siebie? Które warianty zostawią obiekt w poprawnym stanie, zakładając, że konstruktor Bitmap zgłosi wyjątek? Która implementacja operatora przypisania jest najlepsza dla klasy Okno(uzasadnij)?

//Implementacja 1 Okno& operator=(const Okno& o) { delete b; b = new Bitmap(*o.b); return *this; //Implementacja 2 Okno& operator=(const Okno& o) { if(this == &o) return *this; delete b; b = new Bitmap(*o.b); return *this; //Implementacja 3 Okno& operator=(const Okno& o) { Bitmap* old = b; b = new Bitmap(*o.b); delete old; return *this;