javamPokaze || Podstawy programowania obiektowego
🛠️

javamPokaze || Podstawy programowania obiektowego

notion image

Wstęp


Dziś trochę dłuższy wywód, bo czeka nas istotny temat. Porozmawiamy o tym, co wszyscy lubią najbardziej w Javie, czyli jej obiektowości. Jak ja to rozumiem? Ok, so…

Wyobraź sobie, że zwiedzamy fabrykę samochodów. Niech to będzie fabryka Mustanga. A co, kto nam zabroni! Jest tam kilka linii montażowych. Każda odpowiedzialna za coś innego. My jednak przejdźmy najpierw do biura projektowego. Tam główny inżynier pokaże nam projekt samochodu.

 
notion image
 

Klasa


Jeśli fabryka chce wyprodukować auto, potrzebuje projektu. Takim projektem w Javie jest Klasa. Projekt uwzględnia cechy oraz funkcje samochodu. Klasa to szablon, służący to wykonania auta, zawierający informacje o maszynie.

W Klasie znajdziemy:

a) zmienne instancji (opis cech samochodu, np. rodzaj silnika, wyposażenie wewnętrzne, kolor, opony)

b) metody instancji (funkcjonalność, czyli to co samochód może robić, np. zapalić/gasić silnik, otwierać/zamykać drzwi, przyśpieszać/zwalniać)

 
notion image
 

Obiekt


Załóżmy, że 2 klientów złożyło zamówienia na Mustanga:

🚀 Klient A zamówił wersję Podstawową: silnik 2.3L, welurowe siedzenia, felgi srebrne, brak spoilera, manualne sterowane siedzeń, kolor srebrny

🚀 Klient B zamówił wersję Premium: silnik 5.0L V8 GT, skórzane siedzenia, felgi grafitowe, spoiler, elektrycznie sterowanie siedzeń, kolor czerwony

Te dwie różne wersje Mustanga w Javie nazwali byśmy Obiektami. Wykorzystujemy więc projekt (Klasę) jako szablon, aby stworzyć 2 specyficzne kopie (Obiekty) tego samego samochodu, jednak ze swoimi (spersonalizowanymi) cechami.

Powstają zatem Obiekty mustangBasic (wersja podstawowa) oraz mustangPremium (wersja rozszerzona).

 
notion image
 

Programowanie obiektowe


W dużym skrócie, OOP (objected-oriented programming) to tworzenie szablonów (Klas) zawierających:

🚀zmienne instancji - inaczej zmienne składowe/pola Klasy (cechy)

🚀metody instancji (funkcjonalość)

a na podstawie tych szablonów tworzenie Obiektów, czyli kopii tych Klas. Inaczej mówiąc Obiekt jest instancją Klasy, czyli jej egzemplarzem o swoich unikalnych cechach.

notion image
 

Zmienne i metody


W naszym przypadku Klasą jest Mustang, a Obiektami są poszczególne wersje tego samochodu, czyli Mustang Basic oraz Mustang Premium. Każdy Obiekt ma swoje cechy, które nadajemy przypisując konkretne wartości do zmiennej instancji dla tego Obiektu:

mustangPremium.sterowanieSiedzen = “Automatyczne”; // dostęp do zmiennej instancji sterowanieSiedzen uzystujemy poprzez operator kropki(.)

Dodatkowo na każdym Obiekcie (samochodzie) może być wywoływana metoda instancji, np. możemy odpalić lub zgasić silnik:

mustangBasic.odpalsilnik(); // dostęp do metody instancji odpalSilnik uzyskujemy poprzez operator kropki(.)

Wygodnym rozwiązaniem w programowaniu obiektowym jest możliwość rozwoju progamów poprzez modyfikowanie cech lub funckjonalności Obiektów, które potrzebujemy w tym momencie zmienić. Przykładem takiej sytuacji może być nieoczekiwana aktualizacja funkcjonalności programu, którą narzuci nam nagle klient.

Zmieniamy wtedy np. tylko parametry metody danego Obiektu, bez konieczności tworzenia dodatkowych rozwiązań, jak np. w języku C.

 
notion image
 

Podsumowanie


Najlepszym podsumowaniem może być poniższa analoagia do owoców.

Załóżmy że istnieje Klasa Owoce, która posiada jakieś zmienne instancji, np. kolor i składniki odżywcze. Wykorzystując szablon Owoce (Klasę) tworzymy Obiekty jabłko i pomarańcza, które są instancjami tej Klasy. Każdy owoc ma swój unikalny kolor i różni się od drugiego swoją wartością odżywczą. Obiekty te są zatem niezależnymi, unikalnymi bytami.

notion image

Powiązanie pomiędzy Klasą i Obiektem idealnie obrazuje cytat z książki “Head First Java 3rd Edition”:

When you design a class, think about the objects that
will be created from that class type. Think about:
- things the object knows
- things the object does”
 

Śledź mnie na LinkedIn


Newsletter


👋
Jeśli masz jakieś sugestie lub pytania, proszę napisz do mnie wiadomość: kuba@javampokaze.pl