fbpx

Java – Od zera do aplikacji desktopowej. Część 4. Wprowadzenie do Klas

W poprzedniej części utworzyliśmy pierwszy projekt, bez zagłębiania się w to, co piszemy… teraz czas odrobinę rozjaśnić sprawę i wprowadzić pojęcie klasy.

UWAGA! Kurs darmowy, zaktualizowany na stan z roku 2020 dostępny na https://kursy.clockworkjava.pl/java-fundamenty-programowania/


Format wideo wpisu znajduję się na jego końcu.


Definiowanie nowej klasy

Nasz plik zaczyna od niepozornej linijki

public class Hello { 
  //...
}

public jest to modyfikator widoczności. Modyfikatorów owych jest cztery, jednak będziemy się nimi zajmować w miarę gdy będą się pojawiać. O public na razie wystarczy Ci wiedzieć, że oznacza, że każda inna klasa ma dostęp do tej klasy – cokolwiek miałby to znaczyć 🙂

Następnie mamy słowo kluczowe class .  Słowa kluczowe to takie wyrazy, które mają specjalne znaczenie i nie można ich używać jako np. nazw własnych elementów programu. To konkretne mówi tyle, że tworzymy właśnie nową klasę.

Nazywanie klas

Hello jest to nazwa własna klasy, może tu być dowolny ciąg liter – oczywiście najlepiej taki, który ma sens. Nazwy klasy zaczynamy wielkimi literami i nazywamy „z angielska”. Co więcej, jeśli wybrana przez nas nazwa składa się z dwóch, bądź więcej, słów tworzymy ich zlepek, np. jeśli chcemy nazwać klasę Person Data to nazywamy ją PersonData (jest to tak zwany format CamelCase).

public class PersonData {
 // ...
}

„Prawdziwe” programy składają się z dziesiątek klas. I tak na przykład klasa, która odpowiada za przechowywanie informacji o pokoju w systemie rezerwacji  mogłaby nazywać się Room albo RoomInfo albo RoomData. Klasa obsługująca hotelowych gości np. Guest.  Co ważne każda klasa musi znajdować się w osobnym pliku, a plik musi nazywać się tak samo jak klasa w nim zdefiniowana. Tak więc wspomniana klasa PersonData musi znajdować się w nowym pliku PersonData.java

PersonData

Do czego nam klasy?

Każdy program jest pisany w jakimś celu, zazwyczaj ułatwienia komuś innemu pracy i/bądź zaoszczędzenia pieniędzy. Celem programu, który będziemy tworzyć w tym kursie jest ułatwienie pracy obsłudze hotelu.

Czyli musi on robić pewne rzeczy.

Na przykład:

  • wyszukiwanie wolnych pokoi w danym przedziale czasowym
  • rezerwacja i zwalnianie pokoi
  • ustalanie grafiku pracy recepcji

Każda z tych operacji ma jednego (bądź więcej) uczestnika – „aktora”, który w danej czynności będzie występował. Dla pierwszych dwóch głównym aktorem jest pokój, który będzie wyszukiwany bądź rezerwowany przez obsługę hotelu – i pracownik hotelu jest tutaj drugim aktorem.

Dla trzeciego głównym aktorem jest pracownik recepcji, dla którego to grafik będzie ustalany przez kogoś ten grafik ustalającego. Uprośćmy sytuację i przyjmijmy, że w tym przypadku aktorami jest dwóch pracowników hotelu.

Tak więc z tych trzech historyjek pojawia nam się dwóch aktorów – pracownik oraz pokój. To przekłada nam się na dwie klasy (i co za tym idzie – pliki) – Room (Room.java) oraz Employee (Employee.java).

Do czego więc są nam klasy? Do podziału „wielkiego” programu na mniejsze kawałki, które będą ze sobą współpracować przy wykonywaniu zadań, jakie nasz program ma wykonywać. Dzięki czemu o wiele łatwiej będzie nam nad całością panować, bo przy pracy nad rezerwacją pokoi będziemy musieli mieć na uwadze tylko ograniczony wycinek całości systemu.

Zadanie domowe:

  1. Zmieniło nam się wymaganie numer dwa – 'rezerwacja i zwalnienie pokoi’, zostało rozbite na dwa 'rezerwacja pokoju dla konkretnego gościa’ i 'zwalnianie pokoju przez konkretnego gościa’. Jaki wpływ ma to na naszą historię? Czy potrzebne są zmiany w aktorach? Jeśli tak to jakie?
  2. Utwórz w projekcie RoomReservationSystem trzy dodatkowe klasy – Employee, Room oraz Guest.

Słowniczek

  1. Klasa (class) – pliki, z których składa się program w języku Java. Jeden plik odpowiada jednej klasie. Definiują one aktorów, którzy będą wykonywać zadania w obrębie programu.

Poprzednia część kursu.


3 komentarze do “Java – Od zera do aplikacji desktopowej. Część 4. Wprowadzenie do Klas”

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *