background image

Prezentacja współfinansowana przez Unię Europejską ze środków Europejskiego Funduszu Społecznego 

w ramach projektu 

Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu przedmiotów ścisłych 

i propagowaniu wiedzy technicznej w regionie

 

Java Podstawy 

Michał Bereta 

www.michalbereta.pl

 

mbereta@pk.edu.pl 

 

background image

Klasy 

Klasa 
• Jest “przepisem” na tworzenie obiektów, które 

mają:  

– stan  
– zachowania 
– mogą komunikowad się ze sobą 

• Definiuje nowy typ 

background image

Klasy 

Najważniejsze pojęcia obiektowości: 
- Kompozycja (agregacja) 
- Enkapsulacja (hermetyzacja) 
- Dziedziczenie 
- Polimorfizm 

background image

Klasy 

background image

Klasy 

Każda publiczna klasa musi znajdowad się w 
pliku o nazwie identycznej z nazwą klasy. 

background image

Klasy 

unikalna referencja do obiektu 

background image

Klasy 

Każdy obiekt przechowuje swój stan. 
 
Osoba wie jakie ma imię i nazwisko. 

background image

Klasy 

background image

Klasy 

Ktoś może zmienid nazwisko danej osoby! 

background image

Klasy 

Enkapsulacja (hermetyzacja) 
• Stan obiektu powinien byd jego prywatną 

sprawą 

• Obiekt udostępnia publiczne metody do 

operowania na sobie 

background image

Klasy 

background image

Klasy 

Możemy zmienid imię znajomego, ale nie jego nazwisko! 

background image

Klasy 

Pola "imie" oraz "nazwisko" są teraz 
prywatne. 
 
Jedynie sam obiekt ma do nich dostęp 
 w swoich metodach. 

background image

Klasy 

Konstruktor pozwala stworzyd obiekt na 
podstawie przekazanych argumentów. 
 
Konstruktor to specjalna metoda, która ma 
taką samą nazwę jak klasa. 

background image

Klasy 

Klasa może posiadad kilka konstruktorów 
różniących się listą argumentów. 

background image

Klasy 

Błąd! Nie mamy dostępu do prywatnych 
stanów obiektów. 

background image

Klasy 

Należy użyd publicznych metod dostępu. 

background image

Klasy 

background image

Klasy 

• Metody 

background image

Klasy 

• Metody 

background image

Klasy 

• Metody 

w klasie Osoba 

w main 

background image

Klasy 

• Kompozycja 

– Obiekty mogą posiadad referencje do innych 

obiektów (nawet tego samego typu) 

background image

Klasy 

w klasie Osoba 

w main 

background image

Klasy 

w main 

background image

Klasy 

• Dziedziczenie 

background image

Klasy 

Pracownik jest osobą … 

background image

Klasy 

Pracownik jest osobą, która oprócz imienia i 
nazwiska ma swój numer pracownika. 

background image

Klasy 

Pracownik DZIEDZICZY imię i nazwisko z klasy 
Osoba, ale nie ma do nich dostępu gdyż są one 
prywatne w klasie Osoba. Można to zmienid 
zmieniając specyfikator dostępu z private na 
protected - wtedy imię i nazwisko są prywatne 
dla wszystkich ale nie dla klas dziedziczących z 
danej klasy. 

background image

Klasy 

Pracownik jest osobą, która oprócz imienia i 
nazwisko na swój numer pracownika. 

Brak odpowiedniego konstruktora. Podczas 
tworzenia pracownika, musi byd utworzony 
obiekt typu Osoba. 

background image

Klasy 

Wywołanie konstruktora 
klasy macierzystej (bazowej) 

background image

Klasy 

Błąd! Wywołanie konstruktora klasy 
macierzystej (bazowej) - musi byd wykonane 
jako pierwsza operacja. 

background image

Klasy 

Wywołanie konstruktora klasy macierzystej 
(bazowej) - nie może byd pominięte, jeśli klasa 
Osoba nie ma konstruktora domyślnego (bez 
argumentów), np. : 

background image

Klasy 

Metoda "przedstawSwojaOsobe" jest dostępna 
w klasie Pracownik, gdyż została odziedziczona 
z klasy Osoba. 

background image

Klasy 

• Polimorfizm – wywołanie metody (zachownaie 

obiektu) zależy od jego prawdziwego typu, 
nawet jeśli w danym miejscu programu w 
czasie kompilacji nie jest znany jego dokładny 
typ. 

background image

Klasy 

Metoda nadpisana (przeciążona) w klasie 
Pracownik. 

background image

Klasy 

background image

Klasy 

Pracownik JEST Osobą, więc obiekt Pracownik 
może byd wskazywany przez referencję typu 
Osoba. 

background image

Klasy 

Wygenerowana osoba nie jest znana aż do 
uruchomienia programu ... 

background image

Klasy 

Wygenerowana osoba nie jest znana aż do 
uruchomienia programu, mimo to za każdym 
razem, dzięki polimorfizmowi, wywoływana 
jest odpowiednia metoda 
"przedstawSwojaOsobe". 

czasami : 

a czasami : 

background image

Klasy 

operator instanceof 

background image

Klasy 

operator instanceof 

background image

Klasy 

Zadanie 
 
Stwórz klasę Silnik. Każdy obiekt typu Silnik ma daną moc ustawianą przez 
wartośd przekazaną w konstruktorze. Nie można zmienid mocy silnik po jego 
utworzeniu, ale można dowiedzied się od obiektu Silnik jaka jest jego moc. 
 
Dodaj klasę Kierownica, która może mied dany kolor. 
 
Dodaj klasę Koło, które może byd zimowe lub letnie.  
 
Następnie stwórz klasę Samochod. Każdy samochód ma silnik o danej mocy, 
cztery koła (zimowe lub letnie) i kierownicę o zadanym kolorze.  
 
Zaprojektuj klasę Samochod tak, by można było zmieniad w nim każdą oponę z 
osobna oraz wyświetlid informację o każdej z nich. 

background image

Klasy 

Zadanie   
 
W nowym projekcie stwórz klasę Zwierze. Każde zwierzę ma swoje imię i umie wydad z 
siebie odgłos charakterystyczny dla swego gatunku. Dodaj klasy Pies, Kot oraz Kon 
dziedziczące z klasy Zwierze. Zademonstruj działanie polimorfizmu przez 
implementację w każdej z tej klas właściwego sposobu wydawanie dźwięku. 

background image

Projekt 

Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu 

przedmiotów ścisłych i propagowaniu wiedzy technicznej w regionie 

współfinansowany przez Unię Europejską ze środków 

Europejskiego Funduszu Społecznego 

Instytut Fizyki Politechniki Krakowskiej 

pok. F206a, ul. Podchorążych 1, 30-084 Kraków 

tel.: +48 12 6370666 w. 28, faks: +48 12 6371446 

e-mail: 

wiedza@pk.edu.pl

 

www.wiedza.pk.edu.pl