18 11 2009


Uwagi c.d: (4.11.2009 w. 5)

Domniemanie: Jeśli w definicji klasy pochodnej w liście pochodzenia przed nazwą klasy podstawowej nie ma słowa public, protected, private to przez domniemanie przyjęte

zostanie private np.: class rekin : ryba {...};

Jeśli przy def. kiasy pochodnej na liście pochodzenia będzie słowo public np.: class rekin : public ryba {...}; to składniki public i protected z klasy podstawowej są dostępne jako składniki typu odp. public i protected w

klasie pochodnej

Jeśli przy def. klasy pochodnej na liście pochodzenia będzie słowo protected np.: class rekin : protected ryba {...}; to składniki public i protected z klasy podstawowej są składnikami typu protected w klasie pochodnej Jeśli przy def. klasy pochodnej na liście pochodzenia będzie słowo private np.: class rekin : prlvate ryba {...}; to składniki public i protected z klasy podstawowej są / składnikami typu prlvate w klasie pochodnej

Uwagi c.d: się nie dziedzicz/? Konstruktorów. Powód jest prosty. Klasa pochodna zawiera elementy klasy podstawowej plus dodatkowe składowe z klasy pochodnej. Konstruktor z klasy podstawowej nie inicjuje składowych danych z obiektu pochodnego.

Destruktorów. Destruktor jest ściśle powiązany z konstruktorem. Dlatego ten z klasy podstawowej nie może być użyty w klasie pochodnej.

Uwagi c.d:

Rozróżniamy dziedziczenie:

1. pojedyncze

2. wielokrotne

W przypadku dziedziczenia pojedynczego klasa pochodna posiada dokładnie jedną klasę bazową (hierarchia klas dla tego dziedziczenia mają strukturę drzewiastą). Dotyczył tego powyższy przykład. W przypadku dziedziczenia wielokrotnego klasa pochodna ma więcej niż jedną klasę bazową (hierarchia klas dla tego dziedziczenia mają strukturę grafu). Np. kl. Amfibia Jest pochodną od klas: Pojazd I Statek.

Dziedziczenie .'podsumowanie

Dziedziczeniem nazywamy proces tworzenia nowych klas na podstawie klas już istniejących;

class nowy_punkt : public punkt {....}; class rekin : public ryba {....};

Klasa wykorzystywana jako podstawa w procesie

dziedziczenia jest klasą bazową,

Klasy dziedziczące po klasie bazowej są to klasy

pochodne;

Klasa pochodna dziedziczy wszystkie możliwości funkcjonalne klasy bazowej, poszerzone o nowe poła i funkcje;

Niemożliwe jest usunięcie jakichkolwiek elementów klasy bazowej. Można je tylko przesłonić.

| Przesłanianiem nazywamy predefiniowanie funkcji klasy bazowej w klasach pochodnych;

• Przesłanianie stosuje się w celu całkowitej zmiany działania funkcji klasy bazowej lub, znacznie częściej, jej uzupełnienia i rozszerzenia o dodatkowe operacje;

• Przesłaniając funkcje klasy bazowej musisz zapewnić Identyczność nagłówków funkcji;

• Istotne jest również aby funkcje z klasy bazowej były dostępna dla klas pochodnych. Zapewnia to operator zakresu: public, protected w definicji klasy.

class nowy_punkt : public punkt {....}; class nowy_punkt : protected punkt {....},*

Klasy abstrakcyjne

Klasa abstrakcyjna to klasa, która nie reprezentuje

Żadnego konkretnego obiektu

Np klasa ssak nie ma obiektów i istnieje tylko po to

by mieć klasy pochodne (człowiek psy, koty, konie,

świnia, baran)

Ssak jest zatem pojęciem abstrakcyjnym - klasą

Abstrakcyjną

Uwagi dotyczące destruktorów klas z funkcjami

wirtualnymi:

• Jeśli klasa deklaruje jedną z funkcji jako vlrtual, to wówczas jej destruktor również deklarujemy jako virtual

• Przypomnienie: destruktor to • nazwaJdasy() (funkcja bez argumentów i

nic nie zwracająca)

• Jeśli w klasie instrument była funkcja wirtualna vołd virtual wydaj_dzwiek(); to znaczy, że na obiekty klas pochodnych chcemy mówić czasem jak na obiekty klasy podstawowej (za pomocą wskaźników lub referenci do klasy instrument - tj. kl. bazowej). Np. zagraj na Instrumencie chcąc usłyszeć dźwięk fortepianu A jeśli chcemy zniszczyć ten instrument, to musimy uruchomić odpowiedni destruktor (do zniszczenia fortepianu). Któryż destruktorów wybrać do niszczenia obiektu klasy pochodnej (bazowej)? Pokazuje to mechanizm funkcji wirtualnej (tj. kompilator orientuje się po tym, na obiekt której klasy wskazuje wskaźnik lub przezwisko).

• Dlaczego przez domniemanie destruktor nie Jest wirtualny - ze względu na dłuższy czas wykonania 1 większą wielkość obiektu

Przykład;



Wyszukiwarka

Podobne podstrony:
wykład 6- 18.11.2009
dermatologia 18.11.2009, dermatologia(5)
zajęcia 4-18.11.2009, agroturystyka - notatki
skladniki surowcow kosmetycznych 18 11 2009
Projekt klimatyzacja Minikowski 18 11 2009 KOMENTARZE
TRENING 03 11 2009 DOLNOŚLĄSKI ZPN
GOSPODARKA ZAPASAMI I MAGAZYNEM 18 10 2009
5 Bankowość wykład 18.11.2008, STUDIA, Bankowość
10.11.2009, semestr 1, makro i mikro ekonomia
MPLP 267 12.11.2009, lp
Ergonomia i?zpieczenstwo pracy wyklad 6 11 2009
Wykład 7  11 2009
Kodeks cywilny 18 09 2009(2)
podst log 18 11
16.11.2009, kosmetologia licencjat, biofizyka
wykład 22.11.2009, NoR rok 1, Cywilne Prawo Rodzinne
Podstawy Marketingu 15.11.2009
czterolatek to dobry kolega tydz IV 23-27.11.2009 plan pracy listopad, przedszkole, 4-latki
MPLP 268 24.11.2009, lp

więcej podobnych podstron