Wykład_4

Transkrypt

Wykład_4
Naszym mózgom. Za to, że
zawsze są na swoim miejscu.
Paweł Gmys
W mniejszym lub większym
stopniu
Dziedziczenie i polimorfizm
Obiektowość
1
Obiekty
Paweł Gmys



Zachowanie obiektu – co można zrobić
dzięki temu obiektowi i jakie metody
można wywołać
Stan obiektu – jak obiekt reaguje na
działanie metod
Tożsamość obiektu – w jaki sposób
możesz odróżnić ten obiekt od innych
2
Relacje między klasami

Paweł Gmys


Zależność „używa”
Suma „posiada”
dziedziczenie „jest”
3
Paweł Gmys
Problem
W jaki sposób korzystając z dziedziczenia
przedstawić domowego kotka i tygrysa.
Czy domowy kotek to wyspecjalizowana
wersja tygrysa?
Jakie cechy są wspólne?
4
Dziedziczenie
Superbohater
kostium
rajtuzy
supermoc
Klasa
podstawowa
Paweł Gmys
uzyj_supermocy()
zaloz_kostium()
Czlowiek_pantera
czlowiek_blyskawica
supermoc (przesłania dziedziczoną
metodę)
uzyj_supermocy()
5
Paweł Gmys
Przykład
Zaprojektuj drzewo dziedziczenia dla
programu symulacji zwierząt (lew,
hipopotam, tygrys, pies, kot, wilk)
Dodatkowo chcemy mieć możliwość
dodawania nowych zwierząt.
6
Wspólne atrybuty i zachowania
Paweł Gmys
zdjęcie, pożywienie
terytorium, położenie
Metody
halasuj(), jedz(),
spij(), wedruj().
7
Czy wszystkie metody są wspólne?
Paweł Gmys
jedz() – przesłaniamy
halasuj() - przesłaniamy
8
Zalety dziedziczenia
Gwarancja, że wszystkie klasy potomne
będą mieć wszystkie metody klasy
bazowej np..
Zwierze (halasuj, jedz, spij, wedruj)
Paweł Gmys

9
Deklaracja i przypisanie obiektu
Paweł Gmys
Etapy
deklaracja
zmiennej
referencyjnej
Pies mojPies
tworzenie
obiektu
Połaczenie
=
Pies()
10
Przykład
Paweł Gmys
Zastosowanie klasy GregorianCalendar
Zalety:
Więcej metod od klasy Date;
poszerza klasę Calendar, która opisuje
metody wspólne dla różnych kalendarzy
11
java.util.GregorianCalendar
Paweł Gmys
Tworzy kalendarz reprezentujący aktualny
czas w domyślnej strefie czasowej
pobieranie wartości (wybrane)
int get (int pole) gdzie pole to:
12
Wartości „pole”

Paweł Gmys






Calendar.ERA
Calendar.Year
Calendar.Month
Calendar.WEEK_OF_YEAR
Calendar.WEEK_OF_MONTH
Calendar.DAY_OF_YEAR
Calendar.DAY_OF_MONTH
13
Wartości pole

Paweł Gmys




Calendar.AM_PM
Calendar.HOUR_OF_DAY
Calendar.HOUR
Calendar.MINUTE
Calendar.SECOND
14
Zmiana wartości pola
Paweł Gmys
void set(int pole, int wartość)
parametry
pole – zmienna akceptowana przez get
wartość – nowa wartość
15
Arytmetyczne dodawanie dat
Paweł Gmys
void add(int pole, int ilość)
pole – wartośc metody get
ilość – wartość dodawana
np.:
k.add(Calendar.DAY_OF_MONTH, 7)
dodaje do aktualnej daty 7 dni
16
GregorianCalendar
Paweł Gmys
Przykład działania kalendarza
(testkalendarza.java)
jdkcom\JDKcommander.exe
17
Paweł Gmys
Tworzenie własnych klas
class NazwaKlasy
{
konstruktor1
konstruktor1
……………….
metoda1
metoda2
……………….
pole1
pole2
……………….
}
18
Przykład
Paweł Gmys
TestPracownika
jdkcom\JDKcommander.exe
19
Paweł Gmys
Program zawiera dwie klasy i stąd po
kompilacji mamy dwa pliki class
W rzeczywistości każdą klasę umieszcza się
w osobnych plikach
20
Konstruktory


Paweł Gmys



konstruktor nosi tę samą nazwę co klasa
klasa może posiadać kilka konstruktorów
konstruktor może pobierać zero, jeden lub więcej
parametrów
konstruktor nie zwraca wartości
konstruktora zawsze wywołujemy przez parametr
new
21
java.util.Random
Paweł Gmys


Random() tworzy generator liczb
losowych
int nextInt(int n) zwraca losową liczbę z
przedziału <0, n-1>
22
Pakiety
Paweł Gmys
klasy grupowane w zbiory.
Inaczej mówiąc biblioteki
np.: java.lang, java.net, java.util
Wszystkie standardowe pakiety javy
znajdują się wewnątrz hierarchii
java i javax
23
Paweł Gmys
Zadanie 1 - 5 pkt
Napisać program, który wypisze aktualną
datę (dzień, miesiąc, rok, godzina, minuta,
sekunda)
Dodatkowo program powinien wyświetlić
który to kolejny dzień roku oraz tydzień
24
Paweł Gmys
Zadanie 2 - 5 pkt
Korzystając z funkcji losowej wylosuj dwie
grupy po 6 cyfr. Określ ile cyfr z jednej
grupy powtórzyło się w grupie drugiej
Wynikiem powinien być komuikat o
wylosowanych liczbach oraz informacja
o „trafieniach”
25

Podobne dokumenty