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

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

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

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

Mechanizm dziedziczenia

dr inż. Jarosław Forenc

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

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.

Laboratorium 1 - Programowanie proceduralne i obiektowe

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

Mechanizm dziedziczenia

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

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

Plik klasy. h deklaracje klas

Projektowanie klas c.d. Projektowanie klas przykład

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

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

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

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

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

PARADYGMATY PROGRAMOWANIA Wykład 2

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

Dziedziczenie. Ogólna postać dziedziczenia klas:

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

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: piątek:

Wprowadzenie do programowanie obiektowego w języku C++

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

Wykład 8: klasy cz. 4

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

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

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

Zaawansowane programowanie w języku C++ Programowanie obiektowe

TEMAT : KLASY POLIMORFIZM

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

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

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

PARADYGMATY PROGRAMOWANIA Wykład 4

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

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

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

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

TEMAT : KLASY DZIEDZICZENIE

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

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

Wstęp do Programowania 2

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

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

Listy powiązane zorientowane obiektowo

Programowanie komputerowe. Zajęcia 7

Zaawansowane programowanie w C++ (PCP)

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

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

Programowanie Obiektowe i C++

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

Programowanie obiektowe w C++ Wykład 12

PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie. dr inż. Jacek Naruniec

Programowanie obiektowe w języku

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

Wykład 5 Okna MDI i SDI, dziedziczenie

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

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

Programowanie obiektowe

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Enkapsulacja, dziedziczenie, polimorfizm

Podstawy programowania skrót z wykładów:

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

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

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

Programowanie obiektowe język C++

C++ - [4-7] Polimorfizm

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

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

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

C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm. C++ - polimorfizm POLIMORFIZM

Informatyka 2. Wykład nr 3 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

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

Materiały do zajęć VII

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

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

Zaawansowane programowanie w C++ (PCP)

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

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

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

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

Wstęp do programowania obiektowego, wykład 7

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

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

Wyjątki (exceptions)

Programowanie obiektowe

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Zwracanie obiektu. Funkcja może zwracać obiekty: #include"stdafx.h #include <iostream> using namespace std; class samp { inti; public:

Dziedziczenie jednobazowe, poliformizm

Dziedziczenie. Streszczenie Celem wykładu jest omówienie tematyki dziedziczenia klas. Czas wykładu 45 minut.

Podstawy Programowania Obiektowego

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

Programowanie obiektowe

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

Transkrypt:

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B

Plan prezentacji Dziedziczenie Przestrzenie nazw Na podstawie: A. Allain, Przewodnik dla początkujących C++ S. Prata, Szkoła programowania C++

Dziedziczenie pozwala dodawać nowe możliwości (nowe metody) do istniejącej klasy Dziedziczenie pozwala dodawać nowe dane do klasy Dziedziczenie pozwala zmieniać działanie metod klasy

Prosta klasa bazowa: przechowuje imię i nazwisko oraz informację o tym, czy gracz ma stół pingpongowy

Klasa pochodna: dodatkowa informacja o punktach rankingowych class RatedPlayer : public TableTennisPlayer {... }; Obiekt klasy pochodnej zawiera w sobie dane składowe typu bazowego. Klasa pochodna dziedziczy implementację klasy bazowej.

Klasa pochodna potrzebuje własnego konstruktora. W klasie pochodnej można dodać nowe pola i metody.

Klasa pochodna nie ma dostępu do prywatnych składowych klasy bazowej, do ich inicjalizacji należy wykorzystać listę inicjalizacyjną

Wskaźniki klasy bazowej mogą pokazywać obiekty klasy pochodnej. Referencja klasy bazowej może odnosić się do obiektu klasy pochodnej.

W konsekwencji funkcje pobierające jako argument referencję do klasy bazowej działają także dla obiektów klasy pochodnej.

RatedPlayer rplayer(1140, "Maciej", "Kaczkowski", true); TableTennisPlayer player("teresa", "Bogatko", false); Show(player); Show(rplayer);

Podobnie można inicjalizować obiekty klasy bazowej za pomocą obiektu klasy pochodnej

Rachunek bankowy imię i nazwisko klienta, numer rachunku, saldo. Operacje na rachunku: tworzenie rachunku, wpłata, wypłata, wyświetlenie.

Rachunek bankowy rozszerzony o: limit debetu, stopa procentowa, zadłużenie. Operacje na rachunku: wypłata (obsługuje powstanie debetu), wyświetlenie (w tym dodatkowych informacji).

W obu klasach zadeklarowano metody withdraw(), viewaccount() Nowe słowo kluczowe virtual W klasie Account jest zadeklarowany także destruktor wirtualny

Konstruktory klasy pochodnej używaj list inicjalizacyjnych Metoda AccountPlus::viewAccount() wywołuje metodę Account::viewAccount() Metoda AccountPlus::withdraw wywołuje, w zależności od sytuacji, różne metody

Account * p_clients[clients];... for(int i=0; i < CLIENTS; i++){ p_clients[i]->viewaccount(); cout << endl; } for(int i=0; i < CLIENTS; i++){ delete p_clients[i]; }

class Account{ protected: double balance;... };

Abstrakcyjna klasa bazowa AccountABC

Przestrzenie nazw Nazwy w języku C++ mogą odnosić się do zmiennych, funkcji, struktur, wyliczeń, klas, składowych struktur i klas Dla rosnących projektów rośnie ryzyko kolizji tych nazw Dodatkowo ryzyko zwiększa się w projektach wykorzystujących biblioteki zewnętrzne. W celu uniknięcia konfliktów wprowadzono mechanizm przestrzeni nazw.

Przestrzenie nazw Polecenie using namespace nazwa_przestrzeni; udostępnia wszystkie nazwy z przestrzeni nazwa_przestrzeni Przykładowo using namespace std; udostępnia wszystkie nazwy z przestrzeni std.

Przestrzenie nazw Polecenie using namespace std; udostępnia wszystkie nazwy z przestrzeni std. Dzięki temu możemy korzystać bezpośrednio z obiektów cout, cin. Nie musimy odwoływać się do pełnych nazw: std::cout, std::cin.

Przestrzenie nazw Definiowanie przestrzeni nazw Przykład namespace cprogramming{ int x; }//brak średnika Dostęp do zmiennej x można uzyskać pisząc cprogramming::x, dołączając całą przestrzeń nazw using namespace cprogramming; lub dołączając tylko wybraną nazwę z przestrzeni using namespace cprogramming::x;

Przestrzenie nazw Zagnieżdżanie przestrzeni nazw Przykład namespace com{ namespace cprogramming { }} int x;

Przestrzenie nazw Przykład do istniejącej przestrzeni nazw namespace com{ } int x; można dodać nowy element... namespace com{ } double y;

Przestrzenie nazw Kiedy stosować instrukcję using namespace Zazwyczaj nie należy umieszczać deklaracji using w plikach nagłówkowych, a tylko w plikach źródłowych. Zalecenie: w plikach nagłówkowych stosuj pełne nazwy, w plikach źródłowych można wykorzystywać deklarację using.

Podsumowanie Dziedziczenie Przestrzenie nazw