
Harry James
0
3037
735
Jeśli programowałeś dla początkujących lub nawet zacząłeś patrzeć na różne języki, prawdopodobnie spotkałeś się z tym wyrażeniem “programowanie obiektowe” (lub “OOP”).
Istnieje wiele technicznych wyjaśnień na temat 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 tak zwane proceduralnymi, 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 ciągu sekundy, 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ę przedmiotem.
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 także mieć metody lub funkcje.
Co sprawia, że jest to o wiele lepsze niż podejście proceduralne?
W skrócie, obiektowe języki programowania (takie jak Java) ułatwiają organizowanie danych i kodu w sposób bardziej uniwersalny dla 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ć, kiedy uderzasz “Na,” dostaniesz 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 został schwytany 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: kapsułkowanie
Hermetyzacja jest jednym ze sposobów, w jaki programowanie obiektowe tworzy abstrakcję. Każdy obiekt jest zbiorem danych, które są traktowane jako pojedynczy byt. A w tych obiektach znajdują się zarówno zmienne, jak i metody danych.
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 jako prywatną, a metodę move () publicznie, programista chroni zmienną move przed wpływem wszystkiego innego. A jeśli kolor jest zmienną prywatną, żaden obiekt nie może go zmienić, chyba że istnieje metoda, która pozwala 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 części, jeśli dotrą 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 zauważyć, że nadmierne poleganie na dziedziczeniu jest złe. 10 podstawowych zasad programowania Każdy programista musi przestrzegać 10 podstawowych zasad programowania każdy programista musi postępować Zawsze pisz kod, który może być utrzymywany przez każdego, kto może skończyć z pracą nad twoim oprogramowaniem. koniec, oto kilka zasad programowania, które pomogą ci oczyścić swój czyn.)
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 wiruje trochę po tych czterech ostatnich definicjach, nie przejmuj 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ę one wyraźniejsze.
Pamiętaj, że omawialiśmy tylko ogólne zasady w tym artykule. Różne języki zorientowane obiektowo będą miały własne dziwactwa i sposoby, aby coś się stało. Po wybraniu odpowiedniego języka Szukasz najlepszych języków programowania? Zacznij tutaj! 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?” , zaczniesz się uczyć, w jaki sposób stosuje zasady OOP w praktyce.