Dziedziczenie wielobazoweuzupełnienie

Podobne dokumenty
Dziedziczenie jednobazowe, poliformizm, tablice wskaźników na obiekty

Dziedziczenie jednobazowe, poliformizm

Szablony klas, zastosowanie szablonów w programach

Dziedziczenie. Ogólna postać dziedziczenia klas:

Wykład 5 Okna MDI i SDI, dziedziczenie

Programowanie obiektowe i zdarzeniowe

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

Wprowadzenie do programowanie obiektowego w języku C++

Zofia Kruczkiewicz, ETE8305_2 1

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

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.

Klasa dziedzicząca posiada wszystkie cechy klasy bazowej (plus swoje własne) dodawanie nowego kodu bez edycji (i ewentualnego wprowadzania

Programowanie obiektowe

Programowanie obiektowe

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

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

Język C++ Programowanie obiektowe

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

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

.NET Klasy, obiekty. ciąg dalszy

Dziedziczenie & W slajdach są materiały zapożyczone z

Języki i techniki programowania Ćwiczenia 3 Dziedziczenie

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Programowanie w Internecie. Java

Programowanie obiektowe

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

dr inż. Jarosław Forenc

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

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

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

Zaawansowane programowanie w C++ (PCP)

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

> C++ dziedziczenie. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

PARADYGMATY PROGRAMOWANIA Wykład 4

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

Abstrakcyjny typ danych

Enkapsulacja, dziedziczenie, polimorfizm

Programowanie obiektowe - 1.

Podstawy Programowania semestr drugi. Wykład czternasty

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

Obiekty: co i jak. Wykonał: Piotr Pięda dla koła naukowego KNI

Modelowanie i analiza. warstwy biznesowej aplikacji

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

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

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Dziedziczenie Dana jest klasa Punkt w pliku o nazwie Punkt.java:

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

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

DOSTĘP DO METOD I ZMIENNYCH, TABLICE. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla kaŝdego, Helion 2001)

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

Programowanie obiektowe w języku

Zaawansowane programowanie w C++ (PCP)

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Aplikacje w środowisku Java

Programowanie obiektowe. Wprowadzenie

Mechanizm dziedziczenia

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. Metody stałe w klasie

EGZAMIN PROGRAMOWANIE II (10 czerwca 2010) pytania i odpowiedzi

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

Diagramy stanów tworzenie modeli analizy i projektowania Na podstawie UML 2.0 Tutorial

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

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

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

Problemy projektowania obiektowego. Czy podobne problemy można rozwiązywac w podobny sposób?

Dziedziczenie. Tomasz Borzyszkowski

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

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

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

DOSTĘP DO METOD I ZMIENNYCH. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla każdego, Helion 2001)

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

Wskaznik. Przekazywanie wyniku funkcji przez return. Typy i zmienne wskaznikowe. Zmienna wskazywana. typ * nazwa_wkaznika

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

Podstawy Programowania Obiektowego

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Materiały do zajęć VII

TEMAT : KLASY DZIEDZICZENIE

hierarchie klas i wielodziedziczenie

Zaawansowane programowanie w C++ (PCP)

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

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Podstawy programowania obiektowego

Funkcje wirtualne. Wskaźniki do klas pochodnych są podstawą dla funkcji wirtualnych i polimorfizmu dynamicznego.

Programowanie, część I

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

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

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

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

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Listy powiązane zorientowane obiektowo

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

Wstęp do programowania obiektowego, wykład 7

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

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

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

Języki i metody programowania Java. Wykład 2 (część 2)

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

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

Transkrypt:

Dziedziczenie wielobazoweuzupełnienie 1. Dziedziczenie wielobazowe z powtórzeniami z klasą wirtualną, listy konstruktorów listy argumentów konstruktorów 2. Dziedziczenie wielobazowe z powtórzeniami bez klasy wirtualnej, listy konstruktorów problemy z polimorfizmem związanym z klasą TProdukt1 dziedziczoną dwukrotnie 3. Dziedziczenie wielobazowe bez powtórzeń 4. Wzorzec fasady klasa TAplikacja hermetyzująca dostęp do kolekcji produktów i rachunków Zofia Kruczkiewicz, ETE8305_12 1

Dziedziczenie wielobazoweuzupełnienie 1. Dziedziczenie wielobazowe z powtórzeniami z klasą wirtualną, listy konstruktorów listy argumentów konstruktorów Zofia Kruczkiewicz, ETE8305_12 2

Dziedziczenie wielobazowe z powtórzeniami TProdukt1 Klasa wirtualna TProdukt2 TProdukt3 TProdukt4 Zofia Kruczkiewicz, ETE8305_12 3

Konstruktory klas dziedziczących wielobazowo z klasą wirtualną TProdukt4::TProdukt4(string nazwa_, float cena_, float podatek_, float promocja_): TProdukt1(nazwa_, cena_), TProdukt2(nazwa_,cena_,podatek_), TProdukt3(nazwa_,cena_,promocja_) { } TProdukt4::TProdukt4(TProdukt4& p): TProdukt1(p), TProdukt2(p), TProdukt3(p) { } Zofia Kruczkiewicz, ETE8305_12 4

Deklaracje klas dziedziczących wielobazowo z klasą wirtualną np. class TProdukt1 {...}; class TProdukt2 : public virtual TProdukt1 {...}; class TProdukt3 : public virtual TProdukt1 {...}; class TProdukt4 : public TProdukt2, public TProdukt3 {...}; Zofia Kruczkiewicz, ETE8305_12 5

Zofia Kruczkiewicz, ETE8305_12 6

Zofia Kruczkiewicz, ETE8305_12 7

TProdukt4 dziedziczy od dwóch klas TProdukt2, TProdukt2 i pośrednio od TProdukt1 Zofia Kruczkiewicz, ETE8305_12 8

Brak w liście argumentów konstruktora klasy TProdukt4 konstruktora klasy wirtualnej TProdukt1 oznacza wywołanie i wykonanie konstruktora tej klasy z domniemaną listą parametrów. Konstruktor klasy wirtualnej jest wywołany i wykonany jako pierwszy. Następnie wywoływane i wykonywane są konstruktory w kolejności (od lewej do prawej) umieszczenia ich klas w liście dziedziczenia klasy dziedziczącej wielobazowo (TProdukt2) Zofia Kruczkiewicz, ETE8305_12 9

Zofia Kruczkiewicz, ETE8305_12 10

Zofia Kruczkiewicz, ETE8305_12 11

Dziedziczenie wielobazoweuzupełnienie 1. Dziedziczenie wielobazowe z powtórzeniami z klasą wirtualną, listy konstruktorów listy argumentów konstruktora 2. Dziedziczenie wielobazowe z powtórzeniami bez klasy wirtualnej, listy konstruktorów problemy z polimorfizmem związanym z klasą TProdukt1 dziedziczoną dwukrotnie Zofia Kruczkiewicz, ETE8305_12 12

Dziedziczenie wielobazowe z powtórzeniami TProdukt1 TProdukt1 TProdukt2 TProdukt3 TProdukt4 Zofia Kruczkiewicz, ETE8305_12 13

Deklaracje klas dziedziczących wielobazowo bez klasy wirtualnej np. class TProdukt1 {...}; class TProdukt2 : public TProdukt1 {...}; class TProdukt3 : public TProdukt1 {...}; class TProdukt4 : public TProdukt2, public TProdukt3 {...}; Zofia Kruczkiewicz, ETE8305_12 14

Konstruktory klas dziedziczących wielobazowo bez klasy wirtualnej TProdukt4::TProdukt4(string nazwa_, float cena_, float podatek_, float promocja_): TProdukt2(nazwa_,cena_,podatek_), TProdukt3(nazwa_,cena_,promocja_) { } TProdukt4::TProdukt4(TProdukt4& p): TProdukt2(p), TProdukt3(p) { } Zofia Kruczkiewicz, ETE8305_12 15

Zofia Kruczkiewicz, ETE8305_12 16

Zofia Kruczkiewicz, ETE8305_12 17

TProdukt4 dziedziczy od dwóch klas TProdukt2, TProdukt2 i podwójnie od TProdukt1 Zofia Kruczkiewicz, ETE8305_12 18

Zofia Kruczkiewicz, ETE8305_12 19

Zofia Kruczkiewicz, ETE8305_12 20

Przykład 1 Zofia Kruczkiewicz, ETE8305_12 21

Zofia Kruczkiewicz, ETE8305_12 22

Przykład 2 Zofia Kruczkiewicz, ETE8305_12 23

Zofia Kruczkiewicz, ETE8305_12 24

Zofia Kruczkiewicz, ETE8305_12 25

Dziedziczenie wielobazoweuzupełnienie 1. Dziedziczenie wielobazowe z powtórzeniami z klasą wirtualną, listy konstruktorów listy argumentów konstruktorów 2. Dziedziczenie wielobazowe z powtórzeniami bez klasy wirtualnej, listy konstruktorów problemy z polimorfizmem związanym z klasą TProdukt1 dziedziczoną dwukrotnie 3. Dziedziczenie wielobazowe bez powtórzeń Zofia Kruczkiewicz, ETE8305_12 26

Dziedziczenie wielobazowe bez powtórzeń klasa TProdukt1 bez zmian, natomiast TProdukt2 w liście dziedziczenia ma klasę TProdukt1, która nie jest już klasą wirtualną. Klasa TProdukt3 dostarcza jedynie promocję i nie jest stosowana do tworzenia samodzielnych obiektów TProdukt1 TProdukt2 TProdukt3 TProdukt4 Zofia Kruczkiewicz, ETE8305_12 27

Zofia Kruczkiewicz, ETE8305_12 28

Zofia Kruczkiewicz, ETE8305_12 29

Zofia Kruczkiewicz, ETE8305_12 30

Zofia Kruczkiewicz, ETE8305_12 31

Metoda wirtualna przesłaniająca metodę wirtualną Podaj_promocje() z klasy TProdukt1 Zofia Kruczkiewicz, ETE8305_12 32

Zależnie od kolejności umieszczenia klas w liście argumentów (od lewej do prawej), w takiej kolejności wywołane i wykonane są konstruktory tych klas. Oznacza to, że pierwszy jest wywołany konstruktor TProdukt2, a wykonane są: TAbstrakcyjny, TProdukt1, a na końcu TProdukt2. Następnie wykonany jest konstruktor TProdukt3. Nie można wywołać konstruktora klasy TProdukt1, ponieważ jest dziczenie tej klasy odbywa się za pośrednictwem klasy TProdukt2 Zofia Kruczkiewicz, ETE8305_12 33

Wskazanie, która z dziedziczonych metod powinna być wywołana Zofia Kruczkiewicz, ETE8305_12 34

Nie korzysta się z obiektów typu TProdukt3 Zofia Kruczkiewicz, ETE8305_12 35

Nie korzysta się z obiektów typu TProdukt3 Zofia Kruczkiewicz, ETE8305_12 36

Zofia Kruczkiewicz, ETE8305_12 37

Zofia Kruczkiewicz, ETE8305_12 38

Zofia Kruczkiewicz, ETE8305_12 39

Dziedziczenie wielobazoweuzupełnienie 1. Dziedziczenie wielobazowe z powtórzeniami z klasą wirtualną, listy konstruktorów listy argumentów konstruktorów 2. Dziedziczenie wielobazowe z powtórzeniami bez klasy wirtualnej, listy konstruktorów problemy z polimorfizmem związanym z klasą TProdukt1 dziedziczoną dwukrotnie 3. Dziedziczenie wielobazowe bez powtórzeń 4. Wzorzec fasady klasa TAplikacja hermetyzująca dostęp do kolekcji produktów i rachunków Zofia Kruczkiewicz, ETE8305_12 40

Dziedziczenie wielobazowe z powtórzeniami TProdukt1 Klasa wirtualna TProdukt2 TProdukt3 TProdukt4 Zofia Kruczkiewicz, ETE8305_12 41

Zofia Kruczkiewicz, ETE8305_12 42

Zofia Kruczkiewicz, ETE8305_12 43

TProdukt4 dziedziczy od dwóch klas TProdukt2, TProdukt2 i pośrednio od TProdukt1 Zofia Kruczkiewicz, ETE8305_12 44

Metody klasy TAplikacja hermetyzują operacje na kolekcji produktów i kolekcji zakupów Zofia Kruczkiewicz, ETE8305_12 45

Zofia Kruczkiewicz, ETE8305_12 46

Zofia Kruczkiewicz, ETE8305_12 47

Zofia Kruczkiewicz, ETE8305_12 48

Zofia Kruczkiewicz, ETE8305_12 49

Zofia Kruczkiewicz, ETE8305_12 50

Zofia Kruczkiewicz, ETE8305_12 51

Zofia Kruczkiewicz, ETE8305_12 52