Uwaga! We wszystkich poleceniach nie używaj znacznika @Override
(o ile to możliwe).
- Stwórz nowy projekt. Wykonaj w nim następujące polecenia:
- Napisz w nim pustą klasę
Pojazd
oraz dwie dziedziczące po niej klasySamochod
iRower
. - Teraz utwórz interfejs
Jazda
, zawierający deklarację metodyJedz()
typuvoid
. - Podepnij interfejs do klas
Samochod
iRower
i zaimplementuj metodęJedz()
wyświetlając w konsoli komunikat"Jadę samochodem"
lub"Jadę rowerem"
. - Stwórz po jednym obiekcie typu
Samochod
iRower
. Dla nowo utworzonych obiektów wywołaj metodęJedz()
i zobacz co wyświetli się na ekranie. - Stwórz nowy interfejs
Muzyka
z metodąKlakson()
typuvoid
i podepnij go do klasyRower
. Następnie dodaj implementację, by ta metoda wyświetla łańcuch"dryń"
. Wywołaj metodę na obiekcie typuRower
. Czy wielodziedziczenie interfejsów w Java jest możliwe? - Narysuj diagram UML projektu.
- Skorzystaj z rzutowania w górę i stwórz obiekt
Rower
zrzutowany na typPojazd
(Pojazd rower2 = new Rower();
). Wywołaj na tym obiekcie metodęKlakson()
. Czy to jest możliwe?
- W nowym projekcie wykonaj poniższe czynności:
- Stwórz klasę
Osoba
- Stwórz interfejsy
Sport
iMuzyka
, dodaj w nich deklarację metodyGra()
zwracającej typString
- Oba interejsy podepnij pod klasę
Osoba
, dodaj implementację interfejsu tak by metoda zwracała string"gra"
. - w klasie
Main
i metodzieMain
stwórz trzy obiekty za pomocą poniższego kodu:
Osoba osoba1 = new Osoba();
Muzyka osoba2 = new Osoba();
Sport osoba3 = new Osoba();
- Na powyższych obiektach wywołaj metodę
Gra()
i sprawdź na konsoli co zwraca. - (zaawansowane) Czy jest możliwe zaimplementowanie metody
Gra()
tak, abyosoba1
,osoba2
iosoba3
zwracały po wywowłaniu tej metody coś innego? Podpowiedź: tzw. anonimowa implementacja https://stackoverflow.com/questions/573621/is-the-c-sharp-explicit-implementation-of-the-interface-present-in-java
- W nowym projekcie wykonaj poniższe czynności:
- Stwórz klasę
Owoc
i klasę potomnąGruszka
. - Stwórz interfejs
Jedzenie
i dodaj w nim deklarację metodyJedz()
typuvoid
. - Podepnij interfejs pod obie klasy stworzonę wyżej, dodaj w obu klasach implementację niejawną w postaci wyświetlania jakiegoś stringa na konsoli.
- W klasie
Main
i instrukcjiMain
dodaj kod.
Gruszka gruszka1 = new Gruszka();
Owoc gruszka2 = new Gruszka();
Jedzenie gruszka3 = new Gruszka();
Owoc gruszka4 = new Owoc();
Jedzenie gruszka5 = new Owoc();
gruszka1.Jedz();
((Owoc)gruszka1).Jedz();
((Gruszka)gruszka1).Jedz();
((Jedzenie)gruszka1).Jedz();
System.out.println("---");
gruszka2.Jedz();
((Owoc)gruszka2).Jedz();
((Gruszka)gruszka2).Jedz();
((Jedzenie)gruszka2).Jedz();
System.out.println("---");
gruszka3.Jedz();
((Owoc)gruszka3).Jedz();
((Gruszka)gruszka3).Jedz();
((Jedzenie)gruszka3).Jedz();
System.out.println("---");
gruszka4.Jedz();
((Owoc)gruszka4).Jedz();
//((Gruszka)gruszka4).Jedz();
((Jedzenie)gruszka4).Jedz();
System.out.println("---");
gruszka5.Jedz();
((Owoc)gruszka5).Jedz();
//((Gruszka)gruszka5).Jedz();
((Jedzenie)gruszka5).Jedz();
Przed uruchomieniem przeanalizuj co powinno się wyświetlić na konsoli.
- W nowym projekcie wykonaj czynności:
- Stwórz klasę
WlasnaKlasa
- Stwórz interfejs
Aaa
i dodaj w nim deklarację metodyLiczba()
zwracającej typint
. - Stwórz interfejs
Bbb
dziedziczący z interfejsuAaa
i dodaj w nim deklarację metodyWyraz()
zwracającej typString
. - Podejpnij interfejs
Bbb
pod klasęWlasnaKlasa
. Zastanów się, które metody musisz obowiązkowo zaimplementować. - Narysuj diagram UML projektu.
- W nowym projekcie wykonaj czynności:
- W klasie
Car
dodaj polayear
(rok produkcji) ibrand
(marka) oraz konstruktor z parametrami (year
,brand
). - W klasie
Main
stwórz kolekcjecars
i dodaj na nią kilka samochodów za pomocą konstruktora np.:
List<Car> cars = new ArrayList<Car>();
cars.add(new Car(2010, "Ford"));
cars.add(new Car(2016, "Fiat"));
cars.add(new Car(2012, "Skoda"));
cars.add(new Car(2010, "BMW"));
(dodaj brakujące biblioteki)
- Do klasy
Car
dodaj interfejsComparable<T>
i metodęCompareTo
. Następnie posortuj elementy na liście i wyświetl je kolejno na konsoli. Na koniec zmień kolejność sortowania.
- Stwórz nowy projekt - Zwierzaki:
- Stwórz klasę
Zwierze
, po której dziedziczyć będą następujące klasy:Pies
,Wilk
,Rekin
,Orzel
iKrokodyl
. - Stwórz interfejs zawierający dwie metody:
void JakSiePoruszam()
ivoid CoJem()
. - Obiekt każdej klasy powinien umieć wywołać powyższe metody i odpowiedzieć na nie w sensowny sposób (np. "poruszam się na czterech łapach")
- W każdej klasie potomnej po Zwierzaku dodaj pola: imię, waga, ilość nóg. Następnie
poćwiczyć użycie interfejsu
Comparable<T>
.
- Stwórz nowy projekt - Zbiór figur:
Zaimplementuj klasy, które pozwolą reprezentować obiekty w dwuwymiarowej przestrzeni.
Punkt – reprezentowany przez dwie zmienne typu rzeczywistego X i Y
Koło – reprezentowane przez środek koła (punkt), oraz promień.
Kwadrat – reprezentowany przez 4 punkty krawędziowe.
(Wszystkie powyższe klasy posiadają też pole nazwa typu string.)
Stwórz potrzebne konstruktory.
Dodaj interfejsy z metodami (podziel je pod względem odpowiedzialności):
- metoda LiczObwód (obwód punktu = 0)
- metoda PobierzDaneZKlawiatury
- metoda Wyświetl
Po zakończeniu implementacji stwórz kilka obiektów, policz ich obwód, a następnie je wyświetl. Na koniec stwórz kolekcję, posortuj obiekty.
Na przyszłe zajęcia:
A) zapoznaj się z podstawowymi metodami związane z obsługą plików, zapisem i odczytem plików tesktowych.
B) zbuduj artifeks, zastanów się jak go uruchomić pod Windowsem/Linuksem, jak przygotować plik .exe/setup.exe pod Windows?