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