1. Treści programowe:
Programowanie obiektowe,
pojedyncze dziedziczenie klas, przesłanianie metod i konstruktorów, polecenie
super, specyfikator protected
2. Cel zajęć:
Opanowanie
umiejętności posługiwania się mechanizmami dziedziczenie klas w języku Java.
Rozumienie przesłaniania metod oraz posługiwania się poleceniem super.
3. Materiały
dydaktyczne:
Dziedziczenie polega
na przejmowaniu atrybutów i zachowań z klas
bazowych (nadrzędnych, bazowych, rodzicielskich, superklasach)
przez klasy potomne
(podrzędne, subklasy). W Javie występuje dziedziczenie
pojedyncze, tzn. że w jednej klasie podrzędnej możemy dziedziczyć tylko z
jednej klasy nadrzędnej (inaczej niż w C++). Klasę bazową możemy wykorzystywać
wielokrotnie w różnych klasach podrzędnych.
Aby dziedziczyć klasę
należy użyć polecenia extends po
nazwie klasy, a następnie podać klasę, którą chcemy dziedziczyć.

Przykład ukazujący
mechanizm dziedziczenia w Javie
Klasa bazowa (Nadrzędna)
Osoba:

Klasa podrzędna
(potomna) Student, która dziedziczy z klasy Osoba
przejmując jej dostępne zachowania i atrybuty:

Klasa główna Uczelnia, w której utworzone są obiekty
zarówno klasy Osoba
jak i klasy Student:

Specyfikator protected -
określa dostęp do składowej na poziomie pakietu oraz udostępnia ją dla klas
potomnych.
Pola i metody oznaczone jako protected
są dostępne dla wszystkich innych klas w tym samym pakiecie (ang. package). Oznacza to, że jeśli masz dwie klasy w tym
samym folderze projektu, jedna klasa może bez problemu odwoływać się do
chronionych pól drugiej klasy, nawet jeśli nie ma z nią relacji dziedziczenia.
Działa to podobnie do domyślnego dostępu (tzw. package-private).
To, co wyróżnia specyfikator protected,
to jego rola w dziedziczeniu. Klasa podrzędna (dziedzicząca) ma
dostęp do chronionych pól i metod klasy nadrzędnej, nawet jeśli znajduje
się w innym pakiecie. Dzięki temu, protected
zapewnia "rozszerzony" dostęp w hierarchii dziedziczenia, co jest
kluczowe dla obiektowości.
Specyfikator protected
jest
więc kompromisem między private a public. Chroni on dane przed dostępem z zewnątrz, ale
pozwala na ich modyfikację przez klasy potomne.
Pakiet jest elementem pozwalającym grupować klasy np.
tematycznie. W rzeczywistości jest to folder, w którym zapisane są klasy. Jeśli
klasa Osoba miałaby być w oddzielnym pakiecie o nazwie „nowypakiet”
to w klasie tej musi istnieć wpis package nowypakiet; Aby korzystać z zasobów klasy Osoba w klasie poza
pakietem „nowypakiet” należy zaimportować jedną
klasę impot nowypakiet.Osoba lub
cały pakiet import nowypakiet.*;

4. Zadania
Zadanie 1.
Zwierzęta na farmie
Stwórz prosty system
symulujący zwierzęta na farmie.
Zadanie 2. Sklep internetowy
Stwórz model
produktów w sklepie internetowym.
Zadanie 3. Pracownicy i menedżerowie
Zbuduj hierarchię
klas reprezentującą pracowników w firmie.
Zadanie 4. Tekst
Napisz program
składający się z trzech klas BuforTekstowy, BuforTekstowyPlus oraz Edytor.
Klasa BuforTekstowy (umieść w oddzielnym
pakiecie) zawiera następujące składowe:
Klasa BuforTekstowyPlus (umieść pakiecie
podrzędnym) dziedziczącą zachowania i atrybuty klasy “ BuforTekstowy” dodatkowo wyposażoną w:
W klasie “
Edytor” (głównej klasie programu) zadeklaruj:
Zadanie 5: Własny
Napisz program wg własnego
pomysłu przedstawiający dziedziczenie klas w języku Java.
Uwzględnij mechanizm przesłaniania metod oraz konstruktorów oraz pokaż
wykorzystanie specyfikatora protected oraz
rozmieszczenia klas w oddzielnych pakietach.