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

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

Programowanie i struktury danych

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Szablony klas, zastosowanie szablonów w programach

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

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

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

Język C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji

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

Wykład 8: klasy cz. 4

Język C++ wykład VIII

Szablony funkcji i klas (templates)

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

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

PARADYGMATY PROGRAMOWANIA Wykład 3

Programowanie obiektowe. Wykład 5. C++: szablony

Kurs programowania. Wykład 9. Wojciech Macyna

STL Standardt Template Library (wprowadzenie)

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

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

PARADYGMATY PROGRAMOWANIA Wykład 4

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

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

Programowanie w języku C++

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

Programowanie obiektowe w C++ Wykład 12

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

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

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

Zaawansowane programowanie w języku C++ Biblioteka standardowa

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

Jak Windows zarządza pamięcią?

Szablony funkcji i szablony klas

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

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

Podstawy Programowania Obiektowego

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

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

Abstrakcyjny typ danych

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

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

Język C++ Programowanie obiektowe

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

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

Język C++ umożliwia przeciążanie operatora, tzn. zmianę jego znaczenia na potrzeby danej klasy. W tym celu definiujemy funkcję o nazwie:

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

Wykład 5: Klasy cz. 3

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

Kompletna dokumentacja kontenera C++ vector w -

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Technologie programowania Wykład 4. Szablony funkcji Notes. Szablony funkcji Notes. Szablony funkcji Notes. Notes. Przemek Błaśkiewicz.

Wstęp do Programowania 2

Wyliczanie wyrażenia obiekty tymczasowe

Programowanie Obiektowe i C++

TEMAT : KLASY DZIEDZICZENIE

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

Konstruktor kopiujacy

Plik klasy. h deklaracje klas

STL: Lekcja 1&2. Filozofia STL

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 12

Wzorce funkcji (szablony)

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Operatory na rzecz typu TString

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

Biblioteka standardowa C++

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

Wykład 4: Klasy i Metody

Pojemniki Pojemnik to obiekt, którego zadaniem jest przechowywanie innych obiektów.

Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm

dr inż. Jarosław Forenc

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

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

Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python.

ZASADY PROGRAMOWANIA KOMPUTERÓW

Programowanie, część I

Podstawy Programowania Obiektowego

Dziedziczenie jednobazowe, poliformizm

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.

Szablon klasy std::vector

PARADYGMATY PROGRAMOWANIA Wykład 2

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

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

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Projektowanie klas c.d. Projektowanie klas przykład

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

Programowanie, część I

Dziedziczenie. Ogólna postać dziedziczenia klas:

Języki i paradygmaty programowania

10.1 Szablony Szablony funkcji Szablony klas Szablony jako wstęp do biblioteki STL... 10

Szablon klasy std::list

Wykład 3 Składnia języka C# (cz. 2)

Zaawansowane programowanie w C++ (PCP)

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

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Transkrypt:

Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie obiektów 2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne 3. Funkcje operatorowe. Wskaźnik this 4. Dziedziczenie 5. Polimorfizm i funkcje wirtualne 6. Szablony 7. Strumienie 8. Tworzenie aplikacji w systemie Windows

Szablony Szablony klas Szablony funkcji Kontenery (pojemniki)

Szablony klas Szablon klasy (klasa wzorcowa), to klasa uogólniona (klasa sparametryzowana), która pozwala na definiowanie klas dla różnych typów danych przechowywanych w polach składowych. W definicji szablonu klasy, parametrem jest typ danych pola składowego klasy.

Deklaracja szablonu klasy template <param1, param2,...> class nazwa ; // ciało klasy Parametry opisujące typ danych mają postać: class nazwa_typu_uogólnionego

Przykład deklaracji szablonu klasy Nazwa typu uogólnionego Nazwa szablonu klasy template <class T> class Tablica ; // ciało szablonu klasy Tablica

Przykład deklaracji szablonu klasy template <class T> class Tablica public: Tablica(int n = 10); // konstruktor ~Tablica(); // destruktor T& operator [] (int i); // op. indeksowania private: T* t; // wskaznik na tablice danych typu T int rozmiar; // rozmiar tablicy ;

Przykład definicji szablonu klasy // konstruktor template <class T> Tablica<T>::Tablica(int n) rozmiar = n; t = new T[rozmiar]; // tablica danych typu T // destruktor template <class T> Tablica<T>::~Tablica() delete []t; // operator indeksowania template <class T> T& Tablica<T>::operator [] (int i) return t[i];

Przykład użycia szablonu klasy Konkretyzacja szablonu klasy następuje w momencie tworzenia obiektu. W miejsce parametrów podajemy typ danych Tablica <float> a(20); for (int i = 0; i < 20; i++) a[i] = i * 3.14; cout << a[i] << endl; Tablica <Punkt> pkt(5); for (int i = 0; i < 5; i++) pkt[i] = Punkt(i, 2*i); cout << pkt[i] << endl; Tablica <zesp> z(); for (int i = 0; i < 10; i++) z[i] = zesp(i*2, 1); cout << z[i] << endl;

Szablony funkcji Szablon funkcji, to funkcja uogólniona, która pozwala na definiowanie funkcji dla różnych typów danych przetwarzanych przez tę funkcję. Rodzina funkcji różniących się typem argumentów i/lub typem zwracanego wyniku. W definicji szablonu funkcji, parametrem jest typ danych argumentu funkcji.

Przykład definicji szablonu funkcji int max(int x, int y) return (x > y)? x : y; long max(long x, long y) return (x > y)? x : y; zesp max(zesp x, zesp y) return (x > y)? x : y; W klasie zesp konieczny operator >

Przykład definicji szablonu funkcji template <class T> T max ( T& x, T& y ) return (x > y)? x : y; Szablon funkcji może być użyty dla wszystkich typów danych, pomiędzy którymi zdefiniowana jest relacja większości >

Przykład definicji szablonu funkcji template <class T> char* porownaj( T obiekt1, T obiekt2) if (obiekt1 = = obiekt2) return "takie same\n"; else return "rozne\n";

Konkretyzacja szablonu funkcji Konkretyzacja szablonu funkcji następuje w momencie wywołania funkcji. int i = 4, j = 4; cout << porownaj(i, j);!! float x = 3.5, y = 4.5; cout << porownaj(x, y); char c1 = 'a', c2 = 'a'; cout << porownaj(c1, c2); int *w1 = &i, *w2 = &i; cout << porownaj(w1, w2); zesp z3(1, 1), z4(1, 2); cout << porownaj(z3, z4); punkt p1(0, 0), p2(0, 0); cout << porownaj(p1, p2);

Kontenery (pojemniki) Kontenery, to klasy sparametryzowane (szablony) służące do przechowywania i udostępniania danych. vector vector<bool> list stack queue deque priority queue set - tablica dynamiczna (dostęp do elementów za pomocą indeksu). - specjalna wersja kontenera vector, operująca na bitach pamięci. - lista elementów (efektywne wstawianie i usuwanie). - stos (dostęp tylko do wierzchołka stosu). - kolejka (wstawianie na końcu, usuwanie z początku). - kolejka dwukierunkowa (wstawianie i usuwanie z obu końców). - kolejka priorytetowa (do operacji na dużych elementach). - zbiór (brak kolejności elementów, operacje zawierania, dołączania i usuwania). multiset - kontener set z powtarzającymi się elementami. bitset map - kontener set ze zoptymalizowanym sposobem przechowyw. wartości binarnych. - mapa (dostęp do wartości poprzez unikatowy klucz). multimap- mapa (klucz może się powtarzać). string - przechowywanie i operacje na łańcuchach znakowych.

Plik nagłówkowy <vector> Kontener vector vector<double> x; // pusta tablica vector<int> a(10, 0); // 10-el. zerowych Wybrane metody klasy vector: size - zwraca liczbę elementów w wektorze insert - wstawia nowy element przed podaną pozycję push_back - wstawia nowy element na koniec tablicy erase - usuwa element z podanej pozycji clear - usuwa wszystkie elementy z wektora.... i funkcje implementujące różne algorytmy (sortowanie, odwracanie kolejności, permutacje itd...)