Obraz zawierający tekst, Czcionka, Grafika

Opis wygenerowany automatycznie 

Kierunek Informatyka

 

Instrukcja do ćwiczeń laboratoryjnych nr:

4

Nazwa przedmiotu:
Programowanie w języku Java

Temat: Dziedziczenie w języku Java

Tryb studiów: stacjonarne

Czas trwanie ćw.

2x45 min

Autor materiałów: dr Marcin Skuba

 

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ć.

 

Obraz zawierający tekst, Czcionka, zrzut ekranu

Zawartość wygenerowana przez AI może być niepoprawna.

Przykład ukazujący mechanizm dziedziczenia w Javie

Klasa bazowa (Nadrzędna) Osoba:

 

Obraz zawierający tekst, zrzut ekranu, Czcionka

Zawartość wygenerowana przez AI może być niepoprawna.

 

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:

 

Obraz zawierający tekst, zrzut ekranu, oprogramowanie

Zawartość wygenerowana przez AI może być niepoprawna.

 

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 nowypakietAby 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 BuforTekstowyBuforTekstowyPlus 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.