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
mbereta@pk.edu.pl
Klasy
Klasa
• Jest “przepisem” na tworzenie obiektów, które
mają:
– stan
– zachowania
– mogą komunikowad się ze sobą
• Definiuje nowy typ
Klasy
Najważniejsze pojęcia obiektowości:
- Kompozycja (agregacja)
- Enkapsulacja (hermetyzacja)
- Dziedziczenie
- Polimorfizm
Klasy
Klasy
Każda publiczna klasa musi znajdowad się w
pliku o nazwie identycznej z nazwą klasy.
Klasy
unikalna referencja do obiektu
Klasy
Każdy obiekt przechowuje swój stan.
Osoba wie jakie ma imię i nazwisko.
Klasy
Klasy
Ktoś może zmienid nazwisko danej osoby!
Klasy
Enkapsulacja (hermetyzacja)
• Stan obiektu powinien byd jego prywatną
sprawą
• Obiekt udostępnia publiczne metody do
operowania na sobie
Klasy
Klasy
Możemy zmienid imię znajomego, ale nie jego nazwisko!
Klasy
Pola "imie" oraz "nazwisko" są teraz
prywatne.
Jedynie sam obiekt ma do nich dostęp
w swoich metodach.
Klasy
Konstruktor pozwala stworzyd obiekt na
podstawie przekazanych argumentów.
Konstruktor to specjalna metoda, która ma
taką samą nazwę jak klasa.
Klasy
Klasa może posiadad kilka konstruktorów
różniących się listą argumentów.
Klasy
Błąd! Nie mamy dostępu do prywatnych
stanów obiektów.
Klasy
Należy użyd publicznych metod dostępu.
Klasy
Klasy
• Metody
Klasy
• Metody
Klasy
• Metody
w klasie Osoba
w main
Klasy
• Kompozycja
– Obiekty mogą posiadad referencje do innych
obiektów (nawet tego samego typu)
Klasy
w klasie Osoba
w main
Klasy
w main
Klasy
• Dziedziczenie
Klasy
Pracownik jest osobą …
Klasy
Pracownik jest osobą, która oprócz imienia i
nazwiska ma swój numer pracownika.
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.
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.
Klasy
Wywołanie konstruktora
klasy macierzystej (bazowej)
Klasy
Błąd! Wywołanie konstruktora klasy
macierzystej (bazowej) - musi byd wykonane
jako pierwsza operacja.
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. :
Klasy
Metoda "przedstawSwojaOsobe" jest dostępna
w klasie Pracownik, gdyż została odziedziczona
z klasy Osoba.
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.
Klasy
Metoda nadpisana (przeciążona) w klasie
Pracownik.
Klasy
Klasy
Pracownik JEST Osobą, więc obiekt Pracownik
może byd wskazywany przez referencję typu
Osoba.
Klasy
Wygenerowana osoba nie jest znana aż do
uruchomienia programu ...
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 :
Klasy
operator instanceof
Klasy
operator instanceof
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.
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.
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
www.wiedza.pk.edu.pl