Klasy i obiekty. Programowanie zorientowane obiektowo. Case study: Filmoteka Case study: Klasa Akademik
Załóżmy, że mamy napisać program o następującej specyfikacji: 1. Program wyświetla kwadrat, okrąg i trójkąt. 2. Gdy użytkownik kliknie na jakiś kształt tenże zaczyna świecić na niebiesko. 3. Jednocześnie odgrywana jest muzyczka w.mp3, specyficzna do każdego z kształtów.
Kwadrat Trójkąt odtwórzdźwięk() { /* odegraj dźwięk*/ Okrąg odtwórzdźwięk() // { tu będzie kod do zmiany /* odegraj dźwięk*/ Proceduralnie Obiektowo /* odegraj dźwięk*/
Dodajemy nowy kształt: Dodamy nowy kształt, ale tenże będzie odgrywał muzyczkę.wav
Zmieniamy przetestowany już kod i być może coś się zepsuje Proceduralnie Kwadrat /* odegraj dźwięk mp3*/ Okrąg /* odegraj dźwięk mp3*/ Obiektowo Trójkąt /* odegraj dźwięk mp3*/ Dziwnokształtny /* odegraj plik.wav*/
Kształt ma mieć inny kolor po kliknięciu: A do tego kolor ten ma być zmienny, podawany w parametrze i do tego gradientowy
Kwadrat /* odegraj dźwięk mp3*/ Okrąg Trójkąt /* odegraj dźwięk mp3*/ Dziwnokształtny kolor1; kolor2; Proceduralnie Zmieniamy przetestowany kod Kolejne if-y /* odegraj dźwięk mp3*/ Obiektowo z gradientem /* odegraj plik.wav*/
Kwadrat Okrąg Trójkąt Dziwnokształtny /* odegraj dźwięk mp3*/ /* odegraj dźwięk mp3*/ /* odegraj dźwięk mp3*/ kolor1; kolor2; z gradientem /* odegraj plik.wav*/
Kwadrat Okrąg Trójkąt Dziwnokształtny Kształt /* odegraj dźwięk*/
Kwadrat Okrąg Trójkąt Dziwnokształtny kolor1; kolor2; z gradientem /* odegraj plik.wav*/ Kształt /* odegraj dźwięk*/
Nazwa klasy To co obiekt wie To co obiekt potrafi Klasa będzie swoistym projektem obiektów tworzonych na jej podstawie. To co obiekt wie = atrybuty To co obiekt potrafi = metody
Pies To co obiekt wie Telewizor To co obiekt wie To co obiekt potrafi To co obiekt potrafi
1. Na kartce (lub w Paincie, Visio, czy innym podobnym) zaprojektuj hierarchię klas opisującą ludzi na uczelni. 2. Pomyśl o klasach abstrakcyjnych, atrybutach, metodach. 3. Które z metod będą dziedziczone, a które muszą być zredefiniowane? 4. Wykonaj je w Javie wraz z przykładowymi metodami: 1. wyliczśrednią() 2. idźnauczelnię() 3. wypiszinformacjęoosobie() oraz atrybutami 1. Imię 2. Nazwisko 3. Nr albumu / nr pracownika 4. Oceny Nie poprzestań na tych, dodaj swoje
Programowanie zorientowane obiektowo pozwala na dodawanie funkcjonalności bez zmiany uprzednio przetestowanego kodu. Wszystko w Javie jest obiektem (znajduje się wewnątrz klasy) Klasa opisuje sposób na stworzenie obiektu danego typu. Taki schemat. Obiekt potrafi robić różne rzeczy. Niekoniecznie interesuje nas w jaki sposób to robi. Obiekt wie o niektórych rzeczach i robi specyficzne rzeczy Rzeczy które obiekt wie o sobie nazywane atrybutami. Reprezentują stan obiektu. Rzeczy które obiekt robi nazywane są metodami. Reprezentują zachowanie obiektu. Gdy tworzysz klasę, zwykle powinieneś też stworzyć oddzielną klasę do testowania w której stworzysz obiekty poprzedniej klasy. Klasa może dziedziczyć atrybuty i metody z superklas (bardziej ogólnych klas) Programy w Javie to po prostu gadanie obiektów do siebie
Napisz grę w zgadywanie, ale w pełni automatyczną. Będziesz miał trzy klasy: Gracz, GraWZgadywanie oraz GameLauncher. Klasa GameLauncher będzie najprostsza. W jej metodzie main() zawrzesz powołanie do życia obiektu klasy GraWZgadywanie (pomyśl o całej grze jako obiekcie). Resztą zajmie się klasa GraWZgadywania: w jej wnętrzu powołasz do życia trzy obiekty klasy Gracz. Metoda rozpocznijgrę() rozpocznie grę w zgadywanie: zostanie wylosowana liczba z zakresu 0 9. Wyświetlisz ją na ekran. każdy z graczy (obiektów klasy Gracz) będzie zgadywał liczbę z tego zakresu. Zgadywane liczby zostaną wyświetlone na ekran. gra będzie się toczyć, dopóki któryś z graczy nie trafi. Wtedy ma nastąpić wyświetlenie który z graczy wygrał