PGO - Projektowanie i implementacja pierwszych klas Michail Mokkas
Spis treści Pakiety w Javie Hermetyzacja Modyfikatory dostępu Atrybuty klasowe Metody klasowe Metody get (getters) Metody set (setters) Metoda toString Zadania
Pakiety w Javie Służą do grupowania klas w pewnej przestrzeni nazw każda z nazw musi być unikatowa np.: pakiet1.klasaA, pakiet2.klasaA Pakiety klas kompresowane są do plików formatu JAR Konwencja nazewnictwa pakietów: nazwa_organizacji.subdomena1.subdomenaX np.: pjatk.pgo.projekt2 Aby skorzystać z klas danego pakietu, musimy go zaimportować:
Hermetyzacja Polega na ukrywaniu implementacji elementów klas (metody, atrybuty) Jedynie własne metody obiektu mogą zmieniać jego stan (atrybuty) Podejście to lepiej odwzorowywuje rzeczywistość a także pozwala uniknąć wielu błędów projektowych
Modyfikatory dostępu Modyfikator – słowo przed typem atrybutu/metody Klasa Pakiet Podklasa Świat private TAK NIE (brak mod.) TAK/NIE* protected public Modyfikator – słowo przed typem atrybutu/metody np.: public int age; Klasa – dostępność z poziomu klasy Pakiet – dostępność z poziomu pakietu np.: package pakietA; Podklasa – dostępność z poziomu podklasy Świat – dostępność z poziomu dowolnego innego elementu *(NIE) - Jeżeli podklasa nie należy do pakietu
Atrybuty klasowe Atrybuty odnoszące się do klasy (nie danego obiektu) np.: private static String info_o_klasie; Dostęp: Klasa Person main() A co jeżeli mamy: ???
Metody klasowe Stosowane, kiedy wiemy, że metoda nie odnosi się do żadnego z poszczególnych obiektów klasy np.:
Metody get (getters) Służą do otrzymania wartości atrybutów obiektu
Metody set (setters) Służą do zmiany wartości atrybutów obiektu
Metoda toString Służy do wyświetlenia wartości, jakie dany obiekt reprezentuje
Przykład użycia
Przydatne metody klasy String substring() equals() charAt() length() https://docs.oracle.com/javase/7/docs/api/java/lang/String.html
Singleton Wzorzec projektowy, który zmusza daną klasę do posiadania tylko i wyłącznie jedną swoją instancję (jeden obiekt klasy).
Zadanie B1 Stwórz klasę reprezentującą książkę. Klasa powinna posiadać następujące atrybuty: tytuł imię i nazwisko autora wydawnictwo rok wydania ilość stron cena Utwórz metody potrzebne do tworzenia obiektu, edycji oraz wyświetlania jego atrybutów.
Zadanie B2 Stwórz klasę reprezentującą rower. Klasa powinna posiadać następujące atrybuty: nazwa producenta rozmiar kół numer seryjny cena ilość sprzedanych Utwórz metody odpowiedzialne za tworzenie obiektów, edycję i wyświetlanie jego atrybutów. Stwórz także metody „sprzedaj” i „wyswietl_liczbe_sprzedanych”
Zadanie B3 Stwórz pakiety: pakietA, pakietB W pakiecie A stwórz klasę zawierającą metodę main(). W pakiecie B stwórz klasę reprezentującą osobę. Klasa (Osoba) powinna zawierać atrybuty: imię nazwisko data urodzenia (skorzystaj z Calendar) PESEL adres zamieszkania Utwórz metody potrzebne do tworzenia obiektu, edycji oraz wyświetlania jego atrybutów. Utwórz metodę sprawdzającą poprawność numeru PESEL pesel = data urodzenia + 5 cyfr (format: RRMMDDXXXXX)
Zadanie B4 Stwórz klasę reprezentującą kalkulator. Atrybuty kalkulatora: Informacja o kalkulatorze Utwórz metody potrzebne do wykonywania operacji: dodawania odejmowania mnożenia dzielenia wyświetlania informacji o kalkulatorze Dodaj restrykcje tworzenia tylko jednego aktywnego kalkulatora (jedna instancja klasy/ jeden obiekt). Wzorzec projektowy „Singleton”