Wraz z wprowadzeniem pojęcia "obiektu" programiści mogli opisać strukturę systemów oprogramowania z wykorzystaniem terminów "realnego świata" i utrzymywać systemy z milionami linii kodu, co było niemożliwe przy zastosowaniu paradygmatu proceduralnego. Programowanie proceduralne nie może zapewnić odpowiedniego poziomu rozwoju i wsparcia złożonych systemów oprogramowania w bankowości, telekomunikacji i innych obszary działalności gdzie wymagania dotyczące programów stają się coraz bardziej złożone. Styl (paradygmat) programowania, który opiera się na koncepcji klasy i obiektu, został opracowany jako rozwinięcie paradygmatu proceduralnego, który przestał być skuteczny, jako złożoność opracowywanych projektów oprogramowania i był nazywany "programowaniem obiektowym" (OOP).
Po raz pierwszy zaczęto stosować programowanie obiektowe w języku Simula 67, co miało ogromny wpływ na rozwój języków takich jak Lisp i Smalltalk. Ale największy rozwój OOP nastąpił w połowie lat 90., kiedy powstał C ++ "OOP classic", którego praca z obiektami została zaadoptowana przez popularne środowiska programistyczne Delphi i VisualFoxPro. OWP rozwija się, a wśród nowych paradygmatów można wyróżnić aspektowy i zorientowany na podmiot paradygmat. Każdy obiektowy język rozszerza podstawowe pojęcia OOP o unikalne dodatki i rozszerzenia, w zależności od konkretnego zastosowania. W tym artykule przyjrzymy się implementacji OOP w środowisku programistycznym Delphi i języku programowania PHP.
Paradygmat OOP składa się z trzech podstawowych pojęć: enkapsulacji, polimorfizmu i dziedziczenia.
Mechanizm łączenia kodu i danych w obiekcie, a także ich ochrona przed zmianami zewnętrznymi. Wewnątrz obiektu dane i kod mogą być otwarte (publiczne) dla dostępu i modyfikacji przez inne obiekty i zamknięte (prywatne) dla zewnętrznych zmian.
Najważniejszy element koncepcji OOP, pozwalający na użycie jednej nazwy dla funkcji wykonujących podobne akcje. Na początku trudno jest zrozumieć znaczenie polimorfizmu, dlatego podajemy prosty przykład. W dowolnym języku programowania dla każdego rodzaju liczb, na przykład w "klasycznym" C, aby znaleźć moduł liczby, musimy użyć funkcji abs () dla liczb całkowitych, dla długich laboratoriów całkowitych (), dla liczb zmiennoprzecinkowych fabs (). Prowadzi to do zapamiętywania składni zestawu funkcji i dodatkowego obciążenia pamięci i procesora komputera. Programowanie obiektowe, wykorzystujące mechanizm polimorfizmu, pozwala napisać swoją funkcję, aby określić moduł modulowy () i użyć go w obliczeniach arytmetycznych, bez myślenia o typie liczb. Po prostu napisz wyrażenie modul () i uzyskaj poprawną odpowiedź. Plus zmniejszenie kodu programu i obciążenia systemu. Inny przykład polimorfizmu pokazano na rysunku - ogólna klasa "Krzywa" (Kształt) jest "rodzajem" dla koła, prostokąta i gwiazdy.
Mechanizm OOP, który pozwala obiektowi posiadać (dziedziczyć) metody innego obiektu. Dokładniej rzecz ujmując, obiekt otrzymuje (dziedziczy) wszystkie podstawowe właściwości swojego "przodka" i dodaje do nich metody właściwe tylko temu. "Dziedzic" obiektu odziedziczy już metody dwóch obiektów, itd. Dziedziczność jest również nazywana hierarchią klas. Korzystanie z dziedziczenia ułatwia zarządzanie dużymi ilościami informacji i kodu programu. Następnie możesz zobaczyć, jak obiekty dziedziczą wspólne właściwości z klasy macierzystej "Samochód".
Wszystkie języki obsługujące programowanie obiektowe mają taką samą interpretację pojęcia klasy i obiektu. Klasa - typ danych do opisu właściwości i działania "prawdziwego" obiektu, takiego jak konto bankowe. Obiekt jest oddzielną instancją klasy. Metoda - kod oprogramowania, który zmienia zachowanie obiektu lub jego stanu w zależności od wartości jego właściwości. Modyfikator dostępu - metoda oddzielająca elementy klasy od otwartych i zamkniętych. Konstruktor jest metodą, która jest wykonywana najpierw po zainicjowaniu obiektu i przywraca jego pierwotny stan. Destruktor to metoda wywoływana, gdy obiekt jest usuwany. Diagram pokazuje interakcję elementów klas.
Sercem środowiska programistycznego jest podzbiór języka Pascal z elementami OOP - Object Pascal. Środowisko i język Delphi były pierwszym graficznym środowiskiem programistycznym dla MS Windows. Programowanie obiektowe delphi to zestaw standardowych klas abstrakcyjnych, które zawierają pewne elementy programu Windows, takie jak interfejs graficzny, praca z pamięcią RAM itp. Delphi wywarło znaczący wpływ na rozwój wszystkich języków obiektowych, zwłaszcza C #. dla środowiska programistycznego Microsoft .NET. Najnowsza wersja Delphi 8 działa tylko z .NET.
TObject jest "rodzicem" wszystkich klas Delphi. Klasa zapewnia wszystkim swoim "potomkom" wsparcie funkcji programowania obiektowego, a jej konstruktor zapewnia, że program uruchamia się i działa poprawnie w systemie Windows. TPersistent - zapewnia obiektom interakcję na poziomie strumieni transferu danych. Przesyła strumienie danych i zapewnia dostęp do Inspektora obiektów. TComponent - umożliwia tworzenie dowolnych obiektów niewizualnych i zapewnia ich interakcję z całym środowiskiem programistycznym. Umożliwia on pracę z obiektami i komponentami programu w wizualnym środowisku programistycznym. Jego potomek TGraphicControl tworzy różne nie-okienkowe elementy interfejsu, na przykład tła graficzne itp. TControl - wszystkie obiekty wyświetlane na ekranie (okna, listy, przyciski, formularze itp.) Są jego potomkami. Enkapsuluje pracę z funkcjami GUI Windows TWinControl - zapewnia pracę z oknami programu. Jego potomek TCustomControl pozwala na tworzenie formantów, takich jak edytory tekstu, listy wyboru.
PHP jest jednym z najpopularniejszych języków programowania i początkowo był w pełni proceduralnym językiem programowania. Dlatego programowanie obiektowe w php pojawiło się później, począwszy od czwartej wersji. Potrzeba wspierania obu stylów programowania - proceduralnego i obiektowego - doprowadziła do tego, że elementy OOP są nadal dodatkiem, a nie podstawą języka. Ale sytuacja szybko zmienia się w kierunku obiektu PHP. Wersja PHP 5 w pełni obsługuje wszystkie elementy OOP, a deweloper ma pełną swobodę tworzenia własnych klas i obiektów, w przeciwieństwie do Delhi, gdzie deweloper musi używać standardowych klas w taki czy inny sposób, z wszystkimi ich ewentualnymi wadami. Składnia elementów obiektu PHP nie jest trudna dla programistów, którzy wcześniej pracowali nad C ++ / # i Delphi.
Zorientowany obiektowo paradygmat programowania ewoluuje i jest wykorzystywany w wielu elementach systemów oprogramowania, na przykład w wyspecjalizowanych bazach danych obsługujących obiektowy model danych oraz w tworzeniu aplikacji na tablety i telefony komórkowe. Wśród nowych języków obiektowych możemy rozróżnić język Python, który jest powszechnie używany do tworzenia systemów internetowych, oraz Go, wielofunkcyjny język programowania od Google.