Powrót do wiedza

Czym jest programowanie obiektowe

Programowanie obiektowe to tworzenie aplikacji w taki sposób, aby jak najlepiej odzwierciedlały rzeczywistość.

Spotkamy się z nim w takich językach jak Java, Python czy C#. Obiektowość polega na modularyzowaniu, czyli dzieleniu kodu na części. Dziś odpowiemy na pytanie, czy programowanie obiektowe jest łatwe i porównamy programowanie obiektowe z proceduralnym.

Z nauką programowania obiektowego nie należy czekać zbyt długo. Na naszym kursie programowania w Codecool wprowadzamy je zazwyczaj po 3 miesiącu nauki. Gdyby zwlekać dłużej, później trudno by było wyzbyć się nawyków i przyzwyczajeń, które są sprzeczne z programowaniem obiektowym. Niezbędnym elementem nauki programowania obiektowego jest oczywiście teoria - można ją wykładać, ale nie każdy ją zrozumie. Dlatego w Codecool udostępniamy materiały z przykładami w różnych językach programowania i siadamy do pracy - dopiero działając, młodzi programiści dochodzą do momentu, w którym coś zaskakuje, wiedza układa się w całość i zaczynają się dobrze odnajdywać w obiektowości. Istota programowania obiektowego może być trudna do pojęcia dla początkujących programistów. By ją zrozumieć, trzeba najpierw zderzyć się z większym programem. Gdy piszemy prosty program, taki jak kalkulator, programowanie obiektowe nie będzie użyteczne - w przypadku prostych konsolowych programów, mogłoby nawet dołożyć nam pracy.

Definicja programowania obiektowego

W większości publikacji przeczytać można, że programowanie obiektowe pomaga nam programować, ponieważ w naszym kodzie możemy odzwierciedlać prawdziwe obiekty, występujące w rzeczywistości. Jest to tylko częściowo prawda. Jak twierdzi Robert Martin (w Internecie znany jako Uncle Bob), mentor programowania obiektowego i czystego kodu, powyższa definicja programowania obiektowego została stworzona przez marketingowców. Gdy opracowywano pierwsze języki obiektowe, specjaliści od marketingu stanęli przed zadaniem zachęcenia przełożonych do wsparcia takich prac. Ideę programowania obiektowego najprościej było wytłumaczyć właśnie w taki sposób: mówiąc, że obiektowość to odzwierciedlenie rzeczywistych obiektów w kodzie, co pozwoli szybciej programować, ergo przyniesie większe zyski.

O co więc tak naprawdę chodzi w programowaniu obiektowym? Czas na bardziej adekwatną, choć mniej chwytliwą i marketingową definicję. Programowanie obiektowe służy do tego, żebyśmy mogli modularyzować swój kod. Ale co to znaczy modularyzować? Już wyjaśniamy!

Modularyzowanie najprościej wytłumaczyć jako dzielenie kodu na małe “klocki” - o uniwersalnym kształcie, które można użyć w różnych miejscach. Z takich klocków możemy ułożyć dom, zamek lub samolot - czyli dowolny program, jaki nam się zamarzy.

Gdzie wykorzystuje się programowanie obiektowe?

Programowanie obiektowe sprawdza się wówczas, gdy pracujemy nad dużym projektem, najczęściej w zespole. Programowanie obiektowe pozwala lepiej podzielić się pracą, zdelegować napisanie części obiektów poszczególnym osobom w zespole, a następnie połączyć wszystkie elementy. System pisany obiektowo będzie bardziej zmodularyzowany, czyli będzie się składał z części. Jeżeli jedna z nich nie będzie działała dobrze, możemy ją po prostu wymienić.

W jakich językach programowania mamy do czynienia z programowaniem obiektowym? Najpopularniejszym językiem obiektowym jest obecnie Java. Choć kojarzymy ją głównie z obiektowością, możemy także napisać w niej program proceduralnie. Również Python jest językiem obiektowym, choć można go pisać proceduralnie. Z kolei język C jest związany ściśle z programowaniem proceduralnym. Obiektowość pojawiła się dopiero wraz z wprowadzeniem języka C++.

Przeczytaj również: Popularne języki programowania

Java

Java jest językiem, który bardzo spopularyzował programowanie obiektowe. Konsekwentnie podchodzi do tematyki obiektowości i w pełni ją implementuje - odbywa się to w zgodzie z teorią. Z jednej strony pozwala nam to na uzyskanie czystego, poprawnego pod względem obiektowości kodu. Dla niektórych programistów jednak, staje się to uciążliwe. Silenie się na pełną zgodność z obiektowością spowalnia ich pracę, więc krystalicznie czysty kod uznają oni za sztukę dla sztuki.

PHP

PHP jest językiem obiektowym, bo jest obiektem żartów - ten kawał ma już długą brodę, ale wciąż krąży wśród programistów. My jednak nie możemy się z nim do końca zgodzić. Fakt, PHP miał trudne początki z obiektowością - najpierw był językiem skryptowym, do którego dopiero zaczęto wprowadzać obiektowość, wzorując się na tym, jak jest to zrealizowane w Javie.

Python

Rozpoczynając programowanie w Pythonie, nie mamy za bardzo do czynienia z obiektowością - często krótsze programy piszemy, w ogóle jej nie wykorzystując. Nasi studenci w trakcie pierwszego modułu kursu programowania (ProgBasics) nie korzystają z obiektowości w Pythonie. Dzięki temu początki stają się dużo prostsze do nauki, bo nie muszą od razu zapoznawać się z teorią stojącą za programowaniem obiektowym. Python pod względem obiektowości podobny jest do PHP, są jednak pewne kwestie, na które trzeba uważać, przesiadając się np. z Javy na Pythona.

Przeczytaj również: Funkcje w Pythonie

C#

Język C# powstał w mocnej inspiracji Javą. Programiści, którzy stworzyli C#, cenili Javę, ale chcieli napisać taki język, który nie będzie zawierał źle zaprojektowanych funkcjonalności. Trzon, związany z programowaniem obiektowym jest tu bardzo podobny jak Javie. Pewne rzeczy inaczej się nazywają, ale jest dużo części wspólnych.

Java Script

Historia Java Script podobna jest nieco do dziejów PHP - Java Script również jest językiem, który powoli dochodził do obiektowości. W poprzednich wersjach Java Script praktycznie jej nie było; długo zajęło jej rozwinięcie. Dopiero w 2015 roku wszedł standard ECMAScript, który na nowo zdefiniował język Java Script i wprowadził do niego notację stricte obiektową. Dopiero niedawno przeglądarki zaczęły wspierać ten standard. Programiści Java Script odczuwali brak obiektowości i już wcześniej zaczęli sobie z tym radzić - powstawały więc tzw. nadzbiory języka Java Script, takie jak stworzony przez Microsoft TapeScript, który wprowadził do Java Scriptu obiektowość podobną do tej znanej np. z C#.

Zainteresuje Cię również: JavaScript od podstaw

Programowanie obiektowe a strukturalne

Zanim powstało programowanie obiektowe, powszechnie funkcjonowało programowanie proceduralne (strukturalne). Programowanie często polegało wówczas na kopiowaniu i wklejaniu fragmentów kodu, przez co kod ten był dużo bardziej zagmatwany. Programowanie proceduralne występowało m.in. w języku C. W tym momencie, gdy programujemy obiektowo, fragmenty naszego systemu pakujemy w klocki, które spełniają takie funkcje, jakie powinny - nie musimy się w to zagłębiać. My tylko łączymy je w całość. Gdy jeden nam się nie sprawdzi, możemy wymienić go na inny. W programowaniu proceduralnym nie było to takie proste i przypominało operację na otwartym sercu.

Podsumowanie

Teoria programowania obiektowego jest uniwersalna dla wszystkich języków programowania. Paradygmat programowania obiektowego nie jest do końca związany z samym językiem - jak pokazaliśmy, programowanie proceduralne nadal występuje i to w największych językach, kojarzonych głównie z obiektowością. Nie da się więc pozostać przy nauce tylko jednego sposobu programowania - do prostych programów wybierzemy programowanie proceduralne, a do większych i bardziej skomplikowanych  projektów - obiektowe.

Udostępnij