Wprowadzenie do programowania obiektowego

01.03.2020

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).

Historia rozwoju

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.

Podstawowe pojęcia OOP

Paradygmat OOP składa się z trzech podstawowych pojęć: enkapsulacji, polimorfizmu i dziedziczenia.

programowanie obiektowe

Enkapsulacja

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.

programowanie obiektowe delphi

Polimorfizm (polimorfizm)

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.

obiektowe programowanie php

Dziedziczenie

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".

Programowanie obiektowe - dziedziczenie

Główne elementy klas i obiektów w OOP

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.

Interakcja z elementami klasowymi

Implementacja OOP w Delphi

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.

Hierarchia klas standardowych Delphi

Hierarchia klas w Delphi

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.

Implementacja OOP w PHP

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.

Rozwój OOP

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.