Poznaj C++ w$ godziny0243

Poznaj C++ w$ godziny0243



Dziedziczenie 235

Ten program nie wypisuje nic na ekranie, gdyż jest jedynie zbiorem deklaracji klas

z pominięciem implementacji.

W liniach 6-27 deklarujemy klasę Ssak. W tym przykładzie klasa Ssak nie jest pochodną żadnej innej klasy. W świecie rzeczywistym ssaki są pochodną zwierząt. W programie w C++ jesteś w stanie przedstawić jedynie część posiadanych informacji o danym obiekcie. Rzeczywistość jest zbyt kompleksowa i nie można uwzględnić wszystkich jej aspektów. Każda hierarchia w C++ jest jedynie odzwierciedleniem fragmentu posiadanych informacji. Sztuka dobrego projektowania polega na przedstawieniu ważnych obszarów w taki sposób, aby całość maksymalnie przystawała do rzeczywistości.

Hierarchia musi mieć swój początek. W przykładowym programie zaczęliśmy jej tworzenie od klasy Ssak. Powoduje to, że niektóre zmienne wewnętrzne, które teoretycznie powinny znaleźć się w jakiejś „wyższej” klasie są reprezentowane tutaj. Np. każde zwierzę ma swój wiek i wagę dlatego jeśli klasa Ssak byłaby pochodną klasy Zwierze, to dziedziczyłaby z niej te atrybuty. Aktualnie znajdują się one wewnątrz klasy Ssak.

Dla uproszczenia programu, w klasie Ssak zadeklarowaliśmy jedynie sześć metod -cztery funkcje dostępu, Mow () i Spij ().

Klasa Pies dziedziczy z klasy Ssak (patrz linia 29). Każdy obiekt klasy Pies będzie posiadał trzy zmienne wewnętrzne: jegoWiek, jegoWaga i jegoRasa. Zauważ, że deklaracja klasy Pies nie zawiera deklaracji zmiennych jegoWiek i jegoWaga. Zmienne te są dziedziczone z klasy Ssak podobnie jak metody tej klasy, z wyjątkiem konstruktorów i destruktora.

Private czy Protected

Zapewne zauważyłeś, że w liniach 24 i 25 wykorzystaliśmy nowe słowo kluczowe protected. W poprzednich programach, zmienne wewnętrzne klasy były deklarowane po słowie kluczowym private. Jednak zmienne deklarowane jako private nie byłyby widoczne w klasie pochodnej. Oczywiście można również zadeklarować zmienne jegoWiek i jegoWaga jako public, ale jest to niewskazane, gdyż umożliwiłoby bezpośredni dostęp do nich innym klasom.

To co jest nam w tej chwili potrzebne, to udostępnienie tych zmiennych nie tylko klasie aktualnej ale i wszystkim klasom pochodnym. Gwarantuje to słowo kluczowe protected. Funkcje i zmienne zadeklarowane jako protected są dostępne we wszystkich klasach pochodnych (i są w nich prywatne).

Generalnie istnieją trzy typy dostępności elementu klasy: public, protected

i private. Jeśli funkcja ma dostęp do obiektu danej klasy to ma również bezpośredni dostęp do wszystkich jej zmiennych i funkcji zadeklarowanych jako public. Do zmiennych i funkcji zadeklarowanych jako private mają dostęp tylko funkcje wewnętrzne danej klasy. Zmienne i funkcje zadeklarowane jako protected są widoczne dla wszystkich funkcji danej klasy i jej klas pochodnych.

Ten program nie wypisuje nic na ekranie, gdyż jest jedynie zbiorem deklaracji klas z pominięciem implementacji.

ANALIZA:


W liniach 6-27 deklarujemy klasę Ssak. W tym przykładzie klasa Ssak nie jest pochodną żadnej innej klasy. W świecie rzeczywistym ssaki są pochodną zwierząt. W programie w C++ jesteś w stanie przedstawić jedynie część posiadanych informacji o danym obiekcie. Rzeczywistość jest zbyt kompleksowa i nie można uwzględnić wszystkich jej aspektów. Każda hierarchia w C++ jest jedynie odzwierciedleniem fragmentu posiadanych informacji. Sztuka dobrego projektowania polega na przedstawieniu ważnych obszarów w taki sposób, aby całość maksymalnie przystawała do rzeczywistości.

Hierarchia musi mieć swój początek. W przykładowym programie zaczęliśmy jej tworzenie od klasy Ssak. Powoduje to, że niektóre zmienne wewnętrzne, które teoretycznie powinny znaleźć się w jakiejś „wyższej” klasie są reprezentowane tutaj. Np. każde zwierzę ma swój wiek i wagę dlatego jeśli klasa Ssak byłaby pochodną klasy Zwierze, to dziedziczyłaby z niej te atrybuty. Aktualnie znajdują się one wewnątrz klasy Ssak.

Dla uproszczenia programu, w klasie Ssak zadeklarowaliśmy jedynie sześć metod -cztery funkcje dostępu, Mow () i Spi j ().

Klasa Pies dziedziczy z klasy Ssak (patrz linia 29). Każdy obiekt klasy Pies będzie posiadał trzy zmienne wewnętrzne: jegoWiek, jegoWaga i jegoRasa Zauważ, że deklaracja klasy Pies nie zawiera deklaracji zmiennych jegoWiek i jegoWaga. Zmienne te są dziedziczone z klasy Ssak podobnie jak metody tej klasy, z wyjątkiem konstruktorów i destruktora.

Private czy Protected

Zapewne zauważyłeś, że w liniach 24 i 25 wykorzystaliśmy nowe słowo kluczowe protected. W poprzednich programach, zmienne wewnętrzne klasy były deklarowane po słowie kluczowym private. Jednak zmienne deklarowane jako private nie byłyby widoczne w klasie pochodnej. Oczywiście można również zadeklarować zmienne jegoWiek i jegoWaga jako public, ale jest to niewskazane, gdyż umożliwiłoby bezpośredni dostęp do nich innym klasom.

To co jest nam w tej chwili potrzebne, to udostępnienie tych zmiennych nie tylko klasie aktualnej ale i wszystkim klasom pochodnym. Gwarantuje to słowo kluczowe protected. Funkcje i zmienne zadeklarowane jako protected są dostępne we wszystkich klasach pochodnych (i są w nich prywatne).

Generalnie istnieją trzy typy dostępności elementu klasy: public, protected i private. Jeśli funkcja ma dostęp do obiektu danej klasy to ma również bezpośredni dostęp do wszystkich jej zmiennych i funkcji zadeklarowanych jako public. Do zmiennych i funkcji zadeklarowanych jako private mają dostęp tylko funkcje wewnętrzne danej klasy. Zmienne i funkcje zadeklarowane jako protected są widoczne dla wszystkich funkcji danej klasy i jej klas pochodnych.


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0029 Zaczynamy 13 Skompiluj program ponownie. Na ekranie powinieneś zobaczyć ko
Poznaj C++ w$ godziny0041 Zmienne i stałe 25 Program 3.1. pomoże Ci w zobaczeniu ile dokładnie pamię
Poznaj C++ w$ godziny0150 Wskaźniki 139 Jeśli new nie może zarezerwować miejsca na stercie (bądź co
Poznaj C++ w$ godziny0174 Referencje 163 Linie 24-26 zamieniają wartości. Efekt zamiany wypisywany j
Poznaj C++ w$ godziny0238 Dziedziczenie i polimorfizmGodzina 16    Dziedziczenie 17 &
Poznaj C++ w$ godziny0241 Dziedziczenie 233 Dziedziczenie 233 Rysunek 16.1 Hierarchia zwierzątKróles
Poznaj C++ w$ godziny0245 Dziedziczenie 237 43:    void ProsOJedzenie() { cout « &quo
Poznaj C++ w$ godziny0247 Dziedziczenie 239 60: 61:    Pies::Pies () : 62:
Poznaj C++ w$ godziny0251 Dziedziczenie 243 Zauważ, że w linii 74, domyślny konstruktor klasy Pies w
Poznaj C++ w$ godziny0253 Dziedziczenie 245 Dziedziczenie 245 destruktor Psa. . destruktor Ssaka des
Poznaj C++ w$ godziny0255 Dziedziczenie 247 Tak wygląda bezpośrednie wywołanie metody klasy Ssak. Li
Kolendowicz3 „Nie jest architektem ten, kto nie zna podstawowych praw mechaniki budowli. Jest to ty
numanitaryzacja konfliktów zbrojnych na morzu Ten Podręcznik nie rozstrzyga więc, czy państwo w ogól
zainstalowany na jego komputerze program antywirusowy. Ponieważ jednak na ekranie nic więcej nie poj
DSCN3851 no Wariowanie i projektowanie programów szkoleńiowo-rozwojowych rialów, nie może nic na to
s035 (2) Wprowadzaniu puleccń 35 Strumień błędów został skierowany do pliku, nie ujrzeliśmy więc na
skanuj0121 (14) 250 pogodzić się z nadzorem reżysera. Sama Berillat znana jest z tego, że nie znosi
page0231 231 której nie ośmielam się nawet obliczać, gdyż jest tak niezmiernie wielką. Otóż wszystko

więcej podobnych podstron