Na czym polega programowanie obiektowe?
Zatem od początku - jesteśmy ludźmi i normalne jest, że mamy skłonność do opisywania świata w postaci obiektów. Większych lub mniejszych - bez znaczenia, w każdym razie obiekty te mają swoje specyficzne, określone cechy. Przekładając to na język programistyczny - ten sposób postrzegania jest w wielu przypadkach również bardzo naturalnym i użytecznym podejściem do problemu projektowania architektury aplikacji. Wynika to z tego, że sposób, w jaki dzielimy aplikację na obiekty, odpowiednio i dość intuicyjnie odzwierciedla nasz naturalny tok myślenia. Brzmi prościej prawda? Ale wyjaśnimy to w jeszcze bardziej przyjazny sposób.
Programiście dużo łatwiej pisać aplikacje, gdy może działać na odpowiednio wysokim poziomie abstrakcji. Zamiast myśleć o bajtach, liczbach i słowach, wolałby myśleć o klientach, umowach, fakturach, towarach; to właśnie „obiekty”, które powinny mieć swoje odzwierciedlenie w programie. Programowanie obiektowe polega przede wszystkim na tym, że w działającej aplikacji istnieje wiele obiektów, które posiadają każdy swój stan i potrafią wykonywać pewne czynności.
Wracając do informatycznej teorii
Programowanie obiektowe to jeden z najbardziej popularnych paradygmatów programowania, czyli po prostu zbiór pojęć i teorii tworzących podstawę tego rodzaju podejścia do kodowania. Odpowiada on za odpowiednią organizację danego programu lub języka programowania. I tutaj ciekawostka - nie stawia jedynie na funkcjonalność i logikę, ale tworzy obiekty oraz mechanizmy umożliwiające komunikację pomiędzy obiektami. Mówiąc bardziej fachowo, programowanie obiektowe zakłada tworzenie tzw. stanów, czyli tych obiektów, które poosiadają swoje dane. Do tego dokładane są zachowania, czyli odpowiednie procesy i metody.
Programowanie obiektowe jest wygodne
Faktem jest, że wielu programistów przyznaje, że programowanie obiektowe jest wygodne ze względu na to, że jego zadaniem jest nie tylko odwzorowywanie w kodzie rzeczywistości w taki sposób, w jaki ludzki mózg przetwarza informacje. Trochę w tym filozofii, prawda? Tak, ale to ułatwia zrozumienie istoty tego niezmiernie ważnego i specjalistycznego podejścia do kodowania.
Programowanie obiektowe polega na tzw. modularyzacji kodu, czyli podzieleniu na mniejsze jednostki, które mają uniwersalne zastosowanie, dzięki czemu można je wielokrotnie wykorzystać w różnych miejscach programu. I tu kolejne ciekawostki, kodowanie tego typu pozwala na tzw. dziedziczenie. Mówiąc prościej, nie ma potrzeby powielania kodu, bowiem możliwe jest tworzenie bardziej zaawansowanych obiektów na podstawie wcześniej stworzonych obiektów ogólnych. Wracając do pojęcia paradygmatu programowania, warto zwrócić w tym miejscu uwagę, że dzięki wszystkim wymienionym zaletom pozwala on na sprawną pracę w zespole. Dzięki temu, pracując w takim systemie, możemy odpowiednio i efektywnie podzielić pracę. W praktyce wygląda to tak, że poszczególnym członkom zespołu można przydzielić napisanie konkretnych obiektów, a następnie połączyć je w większą całość. Daje nam to ogromną wygodę i swoistego rodzaju zabezpieczenie, bowiem w przypadku kiedy jeden element nie zadziałałby prawidłowo, można sprawnie wymienić go na inny.
Programowanie obiektowe jest wysokopoziomowe (i co to właściwie znaczy?)
Wspomnieliśmy już o tym krótko na początku artykułu, ale rozwińmy jeszcze tę myśl. Na poziomie fizycznym komputer operuje na liczbach zapisanych w rejestrach i - jedna za drugą - w pamięci. Myśląc o danych wyłącznie w ten sposób, jesteśmy zapewne w stanie napisać np. programik sumujący liczby z jakiegoś zakresu, czy liczący silnię (nawiasem mówiąc, nasi „przodkowie” napisali też programy wyliczające masę krytyczną w bombie atomowej czy kierujące rakietami…), ale zapewne trudno byłoby napisać aplikację biznesową typu ERP, sklep czy portal społecznościowy.
Programistom dużo łatwiej jest myśleć i pracować na co dzień na bardziej złożonych obiektach, czy też polegać na już dostarczonych przez środowisko częściowo gotowych funkcjonalnościach - zamiast musieć ciągle myśleć o tych "rejestrach i bajtach" i wszystkie funkcjonalności musieć kodować totalnie "od zera". Języki i środowiska, które zapewniają taką wygodę, nazywamy "wysokopoziomowymi". I tak, w programowaniu obiektowym, poza ukryciem przed programistą elementarnych kwestii dotyczących np. podstawowego zarządzania pamięcią (np. w Javie), poza samymi obiektami, zazwyczaj pojawiają się także klasy (wzorce obiektów) i wspomniane już dziedziczenie (tworzenie klas na bazie już istniejących). Programowanie obiektowe pozwala w aplikacji bezpośrednio odwoływać się do pojęć i intuicji ze świata rzeczywistego. Dobrze oddaje ludzki sposób myślenia. Wszystko to składa się na "wysokopoziomowość".
Jakiego języka używać w programowaniu obiektowym?
Tak naprawdę sam język kodowania to sprawa nieco drugorzędna, bowiem samo projektowanie obiektowe opiera się na pewnych regułach i zasadach (pamiętacie ten paradygmat). I to właśnie te reguły są najważniejsze. Są jednak na tyle uniwersalne, że mogą być stosowane w różnych językach programowania. Takie możliwości dają już najpopularniejsze z nich, takie, jak Python, Java, JavaScript czy C# i C++.Więcej o językach programowania i możliwościach skorzystania z wielu wariantów nauki znajdziecie na stronie alx.pl. W ALX Academy uczymy wszystkiego od podstaw, z pełną troską o Waszą dodatkową, samodzielną praktykę.
Bartosz Śmietański, Patryk Czarnik, październik 2022