Reklama
Jeśli coś zrobiłeś programowanie dla początkujących, a nawet zaczął patrzeć na różne języki, prawdopodobnie natrafiłeś na wyrażenie „programowanie obiektowe” (lub „OOP”).
Istnieje wiele technicznych wyjaśnień co do tego, co to jest, ale dzisiaj przyjrzymy się zdefiniowaniu programowania obiektowego w prosty sposób.
Zanim zaczniemy: języki proceduralne
Aby zrozumieć, czym jest obiektowy język programowania, musisz zrozumieć, co go zastąpił. Wczesne języki programowania były proceduralne - tak zwane, ponieważ programista zdefiniowałby bardzo konkretny zestaw procedur, które przeprowadziłby komputer.

W najwcześniejszych dniach procedury były zapisywane na kartach uderzeń. Kroki te obejmowały dane, wykonywały sekwencję działań na tych danych, a następnie generowały nowe dane.
Języki proceduralne działały dobrze przez pewien czas (a niektóre są nadal w użyciu). Ale jeśli chcesz zaprogramować coś poza podstawową sekwencją kroków, językami proceduralnymi może być trudno zarządzać. Właśnie tutaj pojawia się programowanie obiektowe.
Obiekt programowania obiektowego
Czym więc jest programowanie obiektowe?
Pierwszy język obiektowy (ogólnie uzgodniony jako Simula) wprowadził ten pomysł przedmioty. Obiekty to zbiory informacji, które są traktowane jako pojedyncza jednostka.
Zagłębimy się w to, co to właściwie oznacza w sekundę, z przykładem, ale najpierw musimy porozmawiać zajęcia. Klasy są czymś w rodzaju wstępnych obiektów. Zawierają listę atrybutów, które po zdefiniowaniu stają się obiektem.

Weźmy przykład programowania gry w szachy. Możemy mieć klasę o nazwie Piece. W Piece mamy listę atrybutów:
- Kolor
- Wysokość
- Kształt
- Ruch dozwolony
Obiekt po prostu definiuje jedno szczególne wystąpienie rzeczy należącej do tej klasy.
Moglibyśmy mieć obiekt o nazwie WhiteQueen. Obiekt ten miałby definicje dla wszystkich czterech atrybutów (biały, wysoki, cylindryczny z krenelacjami, dowolna liczba spacji w dowolnym kierunku). Może i mieć metody lub funkcje.
Co sprawia, że jest to o wiele lepsze niż podejście proceduralne?
W skrócie, zorientowane obiektowo języki programowania (jak Java) ułatwia porządkowanie danych i kodu w sposób bardziej uniwersalny w przypadku większych projektów.
Aby omówić to bardziej szczegółowo, porozmawiamy o czterech podstawach programowania obiektowego.
Programowanie obiektowe: abstrakcja
To, że chcesz czegoś użyć, nie oznacza, że musisz wiedzieć, jak to działa. Na przykład ekspres do kawy jest złożony. Ale nie musisz wiedzieć, jak to działa. Musisz tylko wiedzieć, że po naciśnięciu „On” otrzymasz espresso.

To samo dotyczy obiektów w programowaniu obiektowym. W naszym przykładzie szachowym możemy mieć metodę move (). Ta metoda może wymagać dużej ilości danych i innych metod. Może potrzebować zmiennych pozycji początkowej i końcowej. Mógłby użyć innej metody do ustalenia, czy schwytał kawałek.
Ale nie musisz tego wiedzieć. Wszystko, co musisz wiedzieć, to to, że kiedy mówisz elementowi, aby się poruszył, porusza się. To jest abstrakcja.
Programowanie obiektowe: enkapsulacja
Hermetyzacja jest jednym ze sposobów, w jaki programowanie obiektowe tworzy abstrakcję. Każdy obiekt to zbiór danych, który jest traktowany jako pojedynczy byt. A w tych obiektach znajdują się dane - zarówno zmienne, jak i metody.
Zmienne w obiekcie są na ogół utrzymywane jako prywatne, co oznacza, że inne obiekty i metody nie mają do nich dostępu. Na obiekty można wpływać tylko przy użyciu ich metod.
Obiekt Bishop może zawierać kilka informacji. Na przykład może mieć zmienną o nazwie „pozycja”. Ta zmienna jest niezbędna do użycia metody move (). I oczywiście ma kolor.
Ustawiając zmienną pozycji na prywatną, a metodę move () upublicznia, programista chroni zmienną move przed wpływem wszystkiego innego. A jeśli kolor jest zmienną prywatną, nie ma możliwości, aby inny obiekt go zmienił, chyba że istnieje metoda pozwalająca na zmianę. (Którego prawdopodobnie nie miałbyś, ponieważ kolor utworu powinien pozostać niezmienny).
Te zmienne i metody są przechowywane w obiekcie Bishop. Ponieważ są enkapsulowane, programista może dokonać zmiany struktury lub zawartości obiektu bez obawy o interfejs publiczny.
Programowanie obiektowe: dziedziczenie
Oprócz klas obiektowe języki programowania mają również podklasy. Zawierają one wszystkie atrybuty z klasy nadrzędnej, ale mogą także zawierać inne atrybuty.
W naszej grze w szachy pionki potrzebują metody, która może zamienić je w inne pionki, jeśli dotrą one do końca planszy. Nazwiemy to metodą transformPiece ().
Nie każdy kawałek wymaga metody transformPiece (). Nie chcielibyśmy więc umieszczać tego w klasie Piece. Zamiast tego możemy stworzyć podklasę o nazwie Pion. Ponieważ jest to podklasa, dziedziczy wszystkie atrybuty z Piece. Tak więc instancja podklasy Pion zawiera kolor, wysokość, kształt i ruch dozwolone.
Ale obejmuje także metodę transformPiece (). Teraz nigdy nie musimy się martwić przypadkowym użyciem tej funkcji na wieży. Oto wyjaśnienie techniczne:
Tworzenie podklas oszczędza również dużo czasu. Zamiast tworzyć nowe klasy do wszystkiego, programiści mogą utworzyć klasę podstawową, a następnie rozszerzyć ją na nowe podklasy, kiedy będą tego potrzebować. (Warto jednak to zauważyć nadmierne poleganie na dziedzictwie jest złe 10 podstawowych zasad programowania Każdy programista musi przestrzegaćZawsze pisz kod, który może obsługiwać każdy, kto może skończyć z oprogramowaniem. W tym celu podajemy kilka zasad programowania, które pomogą ci oczyścić swoje działania. Czytaj więcej .)
Programowanie obiektowe: polimorfizm
Polimorfizm jest wynikiem dziedziczenia. Pełne zrozumienie polimorfizmu wymaga pewnej wiedzy programistycznej, więc będziemy trzymać się podstaw. Krótko mówiąc, polimorfizm pozwala programistom używać metod o tej samej nazwie, ale z różne przedmioty.
Na przykład nasza klasa Piece może mieć metodę move (), która przesuwa element o jedno miejsce w dowolnym kierunku. Działa to na kawałek króla, ale nie na nic innego. Aby rozwiązać ten problem, możemy zdefiniować nową metodę move () w podklasie Wieży, która definiuje ruch jako nieograniczoną liczbę spacji do przodu, do tyłu, w lewo lub w prawo.
Teraz, gdy programista wywoła metodę move () i użyje elementu jako argumentu, program będzie dokładnie wiedział, jak element powinien się poruszać. Oszczędza to mnóstwo czasu, próbując dowiedzieć się, którą z wielu różnych metod należy użyć.
Programowanie obiektowe w pigułce
Jeśli twoja głowa kręci się trochę po tych czterech ostatnich definicjach, nie martw się zbytnio. Oto najważniejsze rzeczy, o których musisz pamiętać:
- Programowanie obiektowe zbiera informacje w pojedyncze podmioty zwane obiektami.
- Każdy obiekt jest pojedynczą instancją klasy.
- Abstrakcja ukrywa wewnętrzne działanie obiektu, gdy nie jest konieczne ich widzenie.
- Hermetyzacja przechowuje powiązane zmienne i metody w obiektach i chroni je.
- Dziedziczenie umożliwia podklasom korzystanie z atrybutów klas nadrzędnych.
- Polimorfizm pozwala obiektom i metodom radzić sobie z wieloma różnymi sytuacjami za pomocą jednego interfejsu.
Jeśli pamiętasz te punkty, dobrze zrozumiesz, czym jest programowanie obiektowe. Cztery podstawowe podstawy programowania obiektowego, jak wspomniałem, mogą być nieco trudne do opanowania. Ale kiedy zaczniesz programować, staną się bardziej przejrzyste.
Pamiętaj, że omówiliśmy tylko ogólne zasady w tym artykule. Różne języki zorientowane obiektowo będą miały swoje dziwactwa i sposoby, aby coś się stało. Kiedyś ty wybierz odpowiedni język dla siebie Szukasz najlepszych języków programowania? Zacznij tutaj!Niezależnie od tego, czy jesteś zupełnie nowy w programowaniu języków, czy chcesz wskoczyć na nowy rodzaj programowania, jednym z najważniejszych pytań jest: „Który język programowania jest dla mnie odpowiedni?” Czytaj więcej , zaczniesz się uczyć, jak wdraża zasady OOP w praktyce.
Dann jest konsultantem ds. Strategii i marketingu treści, który pomaga firmom generować popyt i potencjalnych klientów. Bloguje także na temat strategii i content marketingu na dannalbright.com.