Wykład 4 Wybrane zagadnienia programowania w C++



Podobne dokumenty
Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Projektowanie i programowanie obiektowe (materiały do wykładu cz. VI)

Wartości domyślne, szablony funkcji i klas

Funkcje składowe (metody)

CitiDirect Online Banking. Powiadomienia

Programowanie w Języku C 2

Logika I. Wykład 2. Działania na zbiorach

Kompozycja i dziedziczenie klas

np. tu - na pierwszej formatce kreatora zaznaczamy opcję nr 3

Podejmowanie decyzji. Piotr Wachowiak

Kalkulator Kalorii by CTI. Instrukcja

STEROWNIK BIOLOGICZNYCH OCZYSZCZALNI ŚCIEKÓW

Ćwiczenie nr 2 Zbiory rozmyte logika rozmyta Rozmywanie, wnioskowanie, baza reguł, wyostrzanie

Kurier POCZTEX XL by CTI. Instrukcja

Matematyka:Matematyka I - ćwiczenia/granice funkcji


Uchwała nr 1 Nadzwyczajnego Walnego Zgromadzenia J.W. Construction Holding S.A. z siedzibą w Ząbkach z dnia 1 kwietnia 2008 roku

Bazy danych. Andrzej Łachwa, UJ, /15

Tematyka i rozwiązania metodyczne kolejnych zajęć lekcyjnych wraz z ćwiczeniami.

Praca na wielu bazach danych część 2. (Wersja 8.1)

Rekompensowanie pracy w godzinach nadliczbowych

Polska-Warszawa: Usługi w zakresie doradztwa prawnego i reprezentacji prawnej 2015/S

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

Stanowisko Rzecznika Finansowego i Prezesa Urzędu Ochrony Konkurencji i Konsumentów w sprawie interpretacji art. 49 ustawy o kredycie konsumenckim

Intellect. Business Intelligence. Biblioteka dokumentów Podręcznik. Business Intelligence od 2Intellect.com Sp. z o.o.

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

PERSON Kraków

STA T T A YSTYKA Korelacja

DEMERO Automation Systems

MATEMATYKA 9. INSTYTUT MEDICUS Kurs przygotowawczy do matury i rekrutacji na studia medyczne Rok 2017/2018 FUNKCJE WYKŁADNICZE, LOGARYTMY

Instrukcja rejestracji do sprawozdania PARPA G1

Procedury uzyskania dostępu do systemu SIL

Rozliczenia z NFZ. Ogólne założenia. Spis treści

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

Architektura Systemów Komputerowych. Sterowanie programem skoki Przerwania

Moduł Pulpit opcji oraz Narzędzia. Opis v 1.0

Praca na wielu bazach

FORMULARZ OFERTOWY. DATA... NAZWA WYKONAWCY... SIEDZIBA... Telefon... Fax...

I. LOGICZNE STRUKTURY DRZEWIASTE

Ogłoszenie o zwołaniu Nadzwyczajnego Walnego Zgromadzenia Spółki ELKOP S.A.

Regulamin w konkurencjach solowych

Integracja systemów, integracja procesów

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

API transakcyjne BitMarket.pl

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

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

Microsoft Management Console

Regulamin Projektów Ogólnopolskich i Komitetów Stowarzyszenia ESN Polska

K P K P R K P R D K P R D W

Wypełnienie formularza zapisu dzieci do przedszkoli należy wprowadzić na stronie otwock.formico.pl

Platforma zamówień personelu JOBMAN.pl

SCHEMATY STRON. Baner Nawigacja Nawigacja okruszkowa Prawa kolumna zobacz również Boksy Zwykła strona...

Programowanie obiektowe w C++ Wykład 11

Plan połączenia poprzez przejęcie. NEUCA spółka akcyjna oraz INFONIA Sp. z o.o.

Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych ul. Koszykowa 75, Warszawa

Spis treści. 1. Znak Konstrukcja symbolu Budowa znaku Kolorystyka wersja podstawowa Kolorystyka wersja czarno-biała...

GENERALNY INSPEKTOR OCHRONY DANYCH OSOBOWYCH

Procedura działania Punktu Potwierdzającego Profile Zaufane epuap w Urzędzie Miejskim w Gdańsku

Historia zmian w aplikacji. Rejestr Podmiotów Wykonujących Działalność Leczniczą

Plan połączenia poprzez przejęcie. SYNOPTIS PHARMA Sp. z o.o. oraz BS - SUPLE Sp. z o.o.

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Ogólna charakterystyka kontraktów terminowych

Regulamin Walnego Zebrania Członków Stowarzyszenia Nasz Dom - Rzeszów" w Rzeszowie. Rozdział I Postanowienia ogólne

Zawarta w Warszawie w dniu.. pomiędzy: Filmoteką Narodową z siedzibą przy ul. Puławskiej 61, Warszawa, NIP:, REGON:.. reprezentowaną przez:

REGULAMIN OBRAD WALNEGO ZEBRANIA CZŁONKÓW STOWARZYSZENIA LOKALNA GRUPA DZIAŁANIA STOLEM

Umowa w sprawie przyznania grantu Marie Curie 7PR Wykaz klauzul specjalnych

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Search. (Wyszukiwarka) (Moduł Magento) v.1.0.0

Wstęp do programowania

ROZWIĄZANIA ZADAŃ Zestaw P3 Odpowiedzi do zadań zamkniętych

Lekcja 15. Temat: Prąd elektryczny w róŝnych środowiskach.

Plan naprawczy. Sokółka 2006/2007. Opracowanie: Urszula Bronowicz Henryka Sarosiek ElŜbieta Plichta Katarzyna Dykiel Tomasz Mucuś

Stowarzyszenie Lokalna Grupa Działania EUROGALICJA Regulamin Rady

WYRAŻENIA REGULARNE I JĘZYK AWK

Regulamin Obrad Walnego Zebrania Członków Stowarzyszenia Lokalna Grupa Działania Ziemia Bielska

Uniwersytet Warszawski Teoria gier dr Olga Kiuila LEKCJA 5

Warszawska Giełda Towarowa S.A.

3S TeleCloud - Aplikacje Instrukcja użytkowania usługi 3S KONTAKTY

Projekt współfinansowany ze środków Unii Europejskiej w ramach Programu Operacyjnego

W. Guzicki Zadanie 23 z Informatora Maturalnego poziom rozszerzony 1

Procedura działania Punktu Potwierdzającego Profile Zaufane epuap w Urzędzie Miejskim w Barcinie

Geometria Wykreślna Wykład 3

Odpowiedzi i schematy oceniania Arkusz 23 Zadania zamknięte. Wskazówki do rozwiązania. Iloczyn dwóch liczb ujemnych jest liczbą dodatnią, zatem

Przykłady wybranych fragmentów prac egzaminacyjnych z komentarzami Technik ochrony fizycznej osób i mienia 515[01]

SYSTEMY TRANSAKCYJNE (TraderTeam.pl: Rafa Jaworski, Marek Matuszek) Lekcja XVII

Procedura działania Punktu Potwierdzającego Profile Zaufane epuap Urzędzie Gminy w Ułężu

Charakterystyka systemów plików

FORMULARZ OFERTY. Wartość brutto:...zł, (słownie złotych brutto:. ).

Procedura działania Punktu Potwierdzającego Profile Zaufane epuap w Urzędzie Miejskim w Łabiszynie

Zestaw skróconych instrukcji dotyczący najważniejszych operacji w programie Merkury Quattro.

Zadania z parametrem

Procedura nadawania uprawnień do potwierdzania Profili Zaufanych w Urzędzie Gminy w Ryjewie

Przedmiot: Projektowanie dokumentów WWW. Laboratorium 3: Strona domowa cz. III Formularze. Opracował: Maciej Chyliński

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

REGULAMIN SAMORZĄDU UCZNIOWSKIEGO GIMNAZJUM W ZABOROWIE UL. STOŁECZNA 182

OptiMore Importer Rejestru VAT. Instrukcja obsługi programu

INTENSE BUSINESS INTELLIGENCE PLATFORM

Adres strony internetowej, na której Zamawiający udostępnia Specyfikację Istotnych Warunków Zamówienia:

Transkrypt:

Wykład 4 Wybrane zagadnienia programowania w C++ Przykład programu obiektowego Dziedziczenie polimorfizm i metody wirtualne Wzorce (szablony) funkcji Wzorce klas 2016-01-03 Bazy danych-1 W4 1

Dziedziczenie polimorfizm i metody wirtualne Dziedziczenie jest techniką, która pozwala na definiowanie nowej klasy przy wykorzystaniu klasy już istniejącej. Polimorfizm to najważniejsza cecha programowania obiektowego. Oznacza, że implementacja pewnych funkcji (metod) może przybierać wiele różnych form. Metody wirtualne słowo kluczowe virtual poprzedza te metody, które w klasach bazowych mają taką samą nazwę, ale inną niż w klasie bazowej implementację. Metody takie wywołane na rzecz obiektu klasy potomnej realizują swój algorytm specyficzny dla klasy potomnej. 2016-01-03 Bazy danych-1 W4 2

2016-01-03 Bazy danych-1 W4 3

2016-01-03 Bazy danych-1 W4 4

2016-01-03 Bazy danych-1 W4 5

2016-01-03 Bazy danych-1 W4 6

Uwagi i komentarze: 1. W klasie bazowej pola opatrzone modyfikatorem dostępu protected są dostępne z obiektów danej klasy i z obiektów klas potomnych. 2. Akcesory są niezbędne, aby można było odczytywać i modyfikować pola chronione 3. Klasa potomna "wyprowadzona" z klasy bazowej: nazwę klasy bazowej podaje się po znaku dwukropka 4. Pole z oznaczone jako chronione na wypadek, gdyby klasa PUNKT_3D była kiedyś klasą bazową dla kolejnych potomków. 5. Konstruktor klasy potomnej uwaga: nie ma dziedziczenia konstruktora domyślnego 6. Metody wyswietl i przesun w klasie potomnej mają takie same nazwy jak metody w klasie bazowej, spełniają taką samą rolę, ale ich implementacje różnią się ponieważ odnoszą się do obiektów różnych klas o różnych cechach, a więc obiektów, których zachowanie jest różne. 7. Niezbędne akcesory do pola chronionego 8. Definicja metody wyswietl klasy potomnej 9. Definicja metody przesun klasy potomnej 2016-01-03 Bazy danych-1 W4 7

10. Nie można np. zadeklarować obiektu D bez jawnego wywołania konstruktora w klasie potomnej, bowiem konstruktor domyślny z klasy bazowej nie podlega dziedziczeniu 11. A tutaj zadziała konstruktor domyślny obiektu klasy bazowej 12. Zmiana i odczyt wartości pól chronionych za pomocą akcesorów 13. Wywołanie metody wyswietl klasy potomnej 14. Wywołanie metody przesun klasy potomnej 15. Wywołanie metod wyswietl i przesun klasy bazowej 2016-01-03 Bazy danych-1 W4 8

2016-01-03 Bazy danych-1 W4 9

2016-01-03 Bazy danych-1 W4 10

2016-01-03 Bazy danych-1 W4 11

W przykładzie znajdują się deklaracje 3 klas: Figura, Kwadrat i Kolo. W klasie Figura została zadeklarowana metoda wirtualna float pole()(słowo kluczowe virtual). Każda z klas pochodnych od klasy Figura ma zaimplementowane swoje specyficzne metody obliczania pola powierzchni float pole(). Następnie (w funkcji main) znajdują się deklaracje obiektów każdej z klas i wskaźnika na obiekty klasy bazowej Figura. Wywołanie metod składowych dla każdego z obiektów powoduje wykonanie metody odpowiedniej dla klasy danego obiektu. Następnie wskaźnikowi wskjakasfigura zostaje przypisany adres obiektu jakasfigura i zostaje wywołana metoda float pole(). Wynikiem jest "-1" zgodnie z treścią metody float pole() w klasie Figura. Następnie przypisano wskaźnikowi adres obiektu klasy Kwadrat - możemy tak zrobić ponieważ klasa Kwadrat jest klasą pochodną od klasy Figura - jest to tzw. rzutowanie w górę. Wywołanie teraz metody float pole() dla wskaźnika nie spowoduje wykonania metody zgodnej z typem wskaźnika - który jest typu Figura* lecz zgodnie z aktualnie wskazywanym obiektem, a więc wykonana zostanie metoda float pole() z klasy Kwadrat (gdyż ostatnie przypisanie wskaźnikowi wartości przypisywało mu adres obiektu klasy Kwadrat). Analogiczna sytuacja ma miejsce, gdy przypiszemy wskaźnikowi adres obiektu klasy Kolo. 2016-01-03 Bazy danych-1 W4 12

Następnie zostaje wywołana funkcja void wyswietlpole(figura&) która przyjmuje jako parametr obiekt klasy Figura przez referencję. Tutaj również zostały wykonane odpowiednie metody dla obiektów klas pochodnych, a nie metoda zgodna z obiektem jaki zadeklarowano jako parametr funkcji czyli float Figura::pole(). Takie działanie jest spowodowane bo przyjęto obiekt klasy Figura przez referencję. Gdyby obiekty były przyjmowane przez wartość (parametr bez &) zostałaby wykonana trzykrotnie metoda float Figura::pole() i trzy krotnie wyświetlona wartość -1. Takie działanie spowodowało określenie metody w klasie bazowej jako wirtualnej. Gdyby zostało usunięto słowo kluczowe virtual w deklaracji metody w klasie bazowej, zostałyby wykonane metody zgodne z typem wskaźnika lub referencji, a więc za każdym razem wykonana metoda float pole() z klasy Figura. 2016-01-03 Bazy danych-1 W4 13

2016-01-03 Bazy danych-1 W4 14

2016-01-03 Bazy danych-1 W4 15

2016-01-03 Bazy danych-1 W4 16

2016-01-03 Bazy danych-1 W4 17

Uwagi i komentarze: 1. Metody wyswietl i przesun poprzedzone słowem virtual działają w różny sposób w zależności od klasy obiektu 2. Klasa potomna implementuje punkt w przestrzeni 3D 3. Klasa potomna dziedziczy z klasy bazowej składowe x oraz y i ma dodatkowo swoją specyficzną składową z; składowa z oznaczona jako chroniona na wypadek, gdyby klasa PUNKT_3D była kiedyś klasą bazową dla kolejnych potomków. 4. Metody wyswietl i przesun oznaczono jako wirtualne z powodu j.w. Metody wyswietl i przesun w klasie potomnej mają takie same nazwy jak metody w klasie bazowej, spełniają taką samą rolę, ale ich implementacje różnią się ponieważ odnoszą się do obiektów różnych klas o różnych cechach, a więc obiektów, których zachowanie jest różne. 5. Utworzono obiekty A, B i D klasy potomnej 6. Utworzono obiekt C klasy bazowej 7. Niezbędne akcesory aby udostępnić pola chronione 8. Wywołano metodę wyswietl na rzecz obiektów klasy potomnej 9. Wywołano metodę wyswietl na rzecz obiektu klasy bazowej 10. Przesuwam i wyświetlam obiekty klasy potomnej 11. Przesuwam i wyświetlam obiekt klasy bazowej 2016-01-03 Bazy danych-1 W4 18

Wzorce (szablony) funkcji Szablon jest mechanizmem, który służy do tworzenia "rodziny" podobnych funkcji/klas różniących się typem argumentów. Szablon funkcji ma postać ogólną: template <class typ> typ funkcja(typ arg1, typ arg2,, typ argn) { // ciało funkcji } gdzie: typ występujący po słowie kluczowym class jest "parametrem szablonu"; arg1,, argn argumenty "funkcji szablonowej" Parametr szablonu musi wystąpić jako typ argumentu funkcji definiowanej tym szablonem. 2016-01-03 Bazy danych-1 W4 19

2016-01-03 Bazy danych-1 W4 20

2016-01-03 Bazy danych-1 W4 21

Wzorce klas Podobną składnię i mechanizm działania posiadają wzorce (szablony) klas, które kompilator wykorzystuje do generowania określonych wyspecjalizowanych klas. Szablon klasy stanowi wówczas wzór, wg którego kompilator utworzy definicję w momencie pojawienia się deklaracji obiektu określonej szczególnej klasy. 2016-01-03 Bazy danych-1 W4 22

2016-01-03 Bazy danych-1 W4 23

2016-01-03 Bazy danych-1 W4 24

2016-01-03 Bazy danych-1 W4 25