Kurs Java

Klasy i obiekty z życia wzięte

Zgodnie z tym co napisaliśmy w rozdziale Aplikacja Webowa - Dla początkujących każdy system informatyczny, w tym także aplikacje webowe, zawsze dotyczą czegoś co występuje w rzeczywistości. Programy odwzorowują rzeczywistość i pomagają nam ją uporządkować i nią zarządzać.

Przykładowo każdy kto interesuje się kinem wie, że w dzisiejszych czasach może wykupić dostęp do interesującego go filmu w "wypożyczalni" online (VOD). System taki przechowuje w swojej bazie filmy w różnych kategoriach i w różnych cenach, a często także udostępnia dodatkowe informacje takie jak recenzje, opinie, czy otrzymane nagrody.

Inny przykład to aplikacja do zarządzania obiegiem dokumentów w firmie. Dzięki temu, że firma dysponuje takim systemem, pracownicy mogą tworzyć, edytować i przetwarzać dokumenty. Co więcej ich działania mogą być powiązane z funkcjami pełnionymi w firmie, co bardzo często umożliwia automatyczne przesyłanie dokumentu do przełożonego w celu uzyskania akceptacji.

Łatwo można zauważyć, że każdy system informatyczny posiada zbiór nazwanych elementów, które razem tworzą domenę jego działań. I tak we wspomnianej aplikacji VOD (po lewej) i w systemie obiegu dokumentów (po prawej) najczęściej wyróżniamy:
  • film (tytuł, reżyser, scenarzysta, cena, status, ...)
  • wypożyczenie (tytuł, klient, data "od", data "do", ...)
  • kategoria filmu (nazwa, opis)
  • typ filmu (nazwa, opis)
  • klient (nr klienta, data rejestracji, imię, nazwisko, ...)
  • nagroda (nazwa, nazwa organizacji, data otrzymania, ...)
  • ...
  • dokument (tytuł, status, załączniki, data stworzenia, ...)
  • wersja (dokument, nr wersji, data stworzenia, ...)
  • kategoria dokumentu (nazwa, opis, ...)
  • typ dokumentu (nazwa, opis, ...)
  • twórca (imię, nazwisko, rola, ...)
  • załącznik (dokument, data stworzenia)
  • ...

Klasa (class)

Wszystkie te elementy to podmioty, które występują w rzeczywistości, a skoro tak, to muszą znaleźć się również w systemie. W tym celu dla każdego z nich przygotowujemy osobny plik java zawierający klasę, której znaczenie w systemie jest dokładnie takie samo jak znaczenie podmiotu w rzeczywistości. Tak więc dla podmiotu film utworzymy klasę (już po angielsku) - Movie, dla kategorii filmu - Category, dla dokumentu - Document, dla załącznika - Attachment itd.

Ciekawostka. Dlaczego klasy, pola i inne elementy kodu tworzymy w języku angielskim? A to dlatego, że dziś angielski to najpopularniejszy język, nie tylko w biznesie, ale również w samym programowaniu. W trakcie naszej kariery zawodowej zbudowaliśmy w sumie ponad 30 różnych systemów i tylko 2 (słownie dwa) z nich miały kod napisany po polsku. W sumie to nawet część z Was może się dziwić, że w ogóle jakieś były pisane w języku polskim. Cóż takie było wymaganie ze strony biznesu. Ale trzeba przyznać, że niektóre nazwy klas wyglądały zacnie, na przykład: PrzetwarzaczDanychZZewnetrznegoZrodla.

Pole (field)

Tak samo jak w prawdziwym życiu, tak samo w systemie wszystkie takie podmioty posiadają swoje cechy (atrybuty), a także wykonują określone działania. Na przykład atrybutem filmu jest jego tytuł, reżyser, czy też scenarzysta (także wiele innych jak choćby cena), a dla dokumentu będzie to tytuł, kategoria dokumentu, jego wielkość, czy lista załączników. Wszystkie takie atrybuty są częścią klas, a dokładniej są zdefiniowanymi polami w klasie. Więc jeśli mówimy na przykład o klasie Movie, to zgodnie z tym co przed chwilą napisaliśmy, będzie ona posiadała pola o nazwach: title (tytuł), director (reżyser), scenarist (scenarzysta) itd.

Metoda (method)

Natomiast działania będziemy definiować w postaci metod, najczęściej oznaczających konkretne czynności związane z danym podmiotem i operujące na jego atrybutach, na przykład addAttachment() - czyli metoda dodająca załącznik do dokumentu, albo changePrice() - metoda zmieniająca cenę danej rezerwacji (zakładając, że cena jest polem klasy Reservation).

Obiekt (object)

Klasa z polami i metodami będzie tylko szablonem, na bazie którego w trakcie działania programu będą tworzone obiekty. Tak wiec jeśli mamy klasę Movie, to klasa zdefiniowana w pliku jest jedna, ale na jej podstawie możemy tworzyć wiele różnych "żyjących" egzemplarzy tej klasy, które będziemy nazywać obiektami.

Klasy i obiekty - prawdziwa aplikacja

Nasza aplikacja StartAPPa jest klasycznym przykładem systemu informatycznego i dlatego także posiada swoją domenę. I tak jeśli wcześniej w przypadku VOD mówiliśmy o aplikacji webowej do przechowywania i wypożyczania filmów, to tak samo tutaj mamy do czynienia z aplikacją webową, tyle tylko że jej domena nie jest związana z konkretną branżą. Zaletą takiego podejścia jest, że w trakcie nauki nie przywiązujecie się za bardzo do konkretnego zbioru nazw. Uczycie się programowania w Javie, a nie programowania w jednej konkretnej domenie.

Jeśli przyjrzycie się naszej aplikacji to zobaczycie, że zawiera ona typowe elementy, zbieżne z tym co pokazaliśmy wyżej w tym rozdziale. Nasza domena to:
  • item (name, date "from", date "to", status, attributtes, ...)
  • item category (name, code)
  • item type (name, code)
  • user (first name, last name, profile, ...)
  • ...
W aplikacji StartAPPa, na formularzu zawansowanym (Create/Update Item), podczas tworzenia itemu warto zerknąć na zdefiniowane tam listy typów i kategorii. Każda z pozycji na tych listach to osobny obiekt!

A teraz pytanie...ile musieliśmy zdefiniować klas, aby móc stworzyć tyle obiektów?

Odpowiedź...dokładnie dwie: Type i Category. Obie klasy posiadają pola: name i code. Tworząc kolejne obiekty za każdym razem ustawiamy inne wartości w tych polach, stąd też każdy stworzony obiekt przechowuje inne dane. Ciekawe? Ciekawie dopiero będzie....zapraszamy do dalszej części kursu...
Klasa Type i jej obiekty w aplikacji StartAPPa
Masz pytanie dotyczące tego rozdziału? Zadaj je nam!
Masz pytanie dotyczące prezentowanego materiału?
Coś jest dla Ciebie niejasne i Twoje wątpliwości przeszkadzają Ci w pełnym zrozumieniu treści?
Napisz do nas maila, a my chętnie znajdziemy odpowiednie rozwiązanie.
Najciekawsze pytania wraz z odpowiedziami będziemy publikować pod rozdziałem.
Nie czekaj. Naucz się programować jeszcze lepiej.
kursjava@javappa.com

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy:
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .