Przegląd
Programowanie zorientowane na obiekty (OOP) to paradygmat programowania oparty na koncepcji „obiektów”, które mogą zawierać dane, w postaci pól, często znanych jako atrybuty; i kod, w postaci procedur, często znanych jako metody. Cechą obiektów jest to, że procedury obiektu mogą mieć dostęp i często modyfikować pola danych obiektu, z którym są związane (obiekty mają pojęcie „tego” lub „siebie”). Istnieje znaczna różnorodność języków OOP, ale najpopularniejsze z nich są oparte na klasach, co oznacza, że obiekty są instancjami klas, które zazwyczaj określają również ich typ.
Dyskusja
Do tej pory skupialiśmy się na programowaniu proceduralnym. W oparciu o programowanie strukturalne, procedury (procedury, podprogramy lub funkcje) zawierają serię kroków obliczeniowych, które należy wykonać. Dana procedura może być wywołana w dowolnym momencie wykonywania programu, w tym przez inne procedury lub przez nią samą. Głównym celem programowania proceduralnego jest rozbicie zadania programistycznego na zbiór zmiennych, struktur danych i podprogramów. Małe programy i skrypty są zwykle łatwiejsze do opracowania przy użyciu prostego podejścia proceduralnego.
Programowanie zorientowane na obiekt zamiast tego rozbija zadanie programistyczne na obiekty, które ujawniają zachowanie (metody) i dane (członkowie lub atrybuty) za pomocą interfejsów. Najważniejszą różnicą jest to, że podczas gdy programowanie proceduralne używa procedur do operowania na oddzielnych strukturach danych, programowanie zorientowane obiektowo łączy te dwie rzeczy razem, więc „obiekt”, który jest instancją klasy, operuje na swojej „własnej” strukturze danych. Większe programy korzystają z lepszej izolacji kodu i danych oraz ponownego użycia zapewnionego przez podejście zorientowane obiektowo.
Obiekty i klasy są często zaprojektowane do reprezentowania obiektów świata rzeczywistego. Rozważmy drzwi jako przykład obiektu z prawdziwego świata. Większość drzwi ma ograniczoną funkcjonalność. Mogą być otwierane i zamykane, a także blokowane i odblokowywane. W programowaniu proceduralnym moglibyśmy zaprojektować funkcje do otwierania, zamykania, blokowania i odblokowywania drzwi, takie jak:
Procedural Programming - FunctionsOpenDoor(door)CloseDoor(door)LockDoor(door)UnlockDoor(door)
Programowanie zorientowane na obiekt łączy kod i dane, więc zamiast osobnych funkcji działających na drzwi, projektujemy drzwi, które mają metody, które mogą działać na siebie. Metody reprezentują coś, co obiekt może zrobić, i są zwykle definiowane za pomocą czasowników. Obiektowo zorientowany pseudokod drzwi może wyglądać tak:
Object-Oriented Programming - Methodsdoor.Open()door.Close()door.Lock()door.Unlock()
Obiekty mogą również posiadać atrybuty, coś czym obiekt jest lub co posiada, i są zazwyczaj definiowane za pomocą rzeczowników lub przymiotników. Atrybuty drzwi mogą zawierać:
Object-Oriented Programming - Attributesdoor.Heightdoor.Widthdoor.Colordoor.Closeddoor.Locked
Gdy piszemy kod definiujący generyczne drzwi, tworzymy klasę drzwi. Klasa drzwi zawierałaby wszystkie metody, które drzwi mogą wykonać i wszystkie atrybuty, które drzwi mogą mieć. Następnie stworzylibyśmy instancje klasy (obiekty) do reprezentowania konkretnych drzwi, takich jak drzwi wejściowe, drzwi tylne lub drzwi pokojowe w domu, lub lewe i prawe drzwi w samochodzie.
Key Terms
attribute Specyfikacja, która definiuje właściwość obiektu. class Rozszerzalny szablon kodu programu do tworzenia obiektów, dostarczający wartości początkowych dla stanu (zmienne członkowskie) i implementacji zachowania (funkcje członkowskie lub metody). instance :Konkretne wystąpienie obiektu. method Specyfikacja, która definiuje procedurę lub zachowanie obiektu. object Określona instancja klasy, gdzie obiekt może być kombinacją zmiennych, funkcji i struktur danych. this, self, lub Me Słowa kluczowe używane w niektórych językach programowania komputerowego w odniesieniu do obiektu, klasy lub innej jednostki, której częścią jest aktualnie uruchomiony kod.