Введення в об'єктно-орієнтоване програмування

З введенням поняття «об`єкт» розробники отримали можливість описувати структуру програмних систем, використовуючи терміни «реального світу», і підтримувати системи з мільйонами рядків коду, що було неможливо при використанні процедурної парадигми. Процедурне програмування не могло забезпечити належний рівень розвитку і підтримки складних програмних систем в банківській, телекомунікаційній та інших сферах діяльності, де вимоги до програм постійно ускладнювалися. Стиль (парадигма) програмування, в основі якого лежить поняття класу і об`єкту, розроблявся як розвиток процедурної парадигми, яка перестала бути ефективною в міру розвитку складності програмних проектів, і отримав назву «об`єктно-орієнтоване програмування» (ООП).

Історія розвитку

Вперше об`єктно-орієнтоване програмування почало застосовуватися в мові Simula 67, який справив великий вплив на розвиток таких мов, як Lisp і Smalltalk. Але найбільший розвиток ООП отримав в середині 90-х, коли був створений «класик ООП» C ++, роботу якого з об`єктами перейняли популярні середовища програмування Delphi і VisualFoxPro. ООП продовжує розвиватися, і серед нових парадигм можна виділити аспектно-орієнтовану і суб`єктно-орієнтовану парадигму. Кожен об`єктно-орієнтована мова розширює базові поняття ООП унікальними доповненнями і розширеннями, в залежності від специфіки використання. У цій статті ми розглянемо реалізацію ООП в середовищі програмування Delphi і мовою веб-розробки PHP.

Основні концепції ООП

Парадигма ООП складається з трьох основних концепцій: інкапсуляція, поліморфізм і успадкування.

об`єктно орієнтоване програмування

Інкапсуляція (encapsulation)

Механізм об`єднання коду і даних всередині об`єкта, а також їх захисту від зовнішніх змін. Усередині об`єкту дані і код можуть бути відкритими (public) для доступу і модифікації іншими об`єктами і закритими (private) для зовнішніх змін.

об`єктно орієнтоване програмування delphi

Поліморфізм (polymorphism)



Найважливіший елемент концепції ООП, що дозволяє використовувати єдине найменування для функцій, що виконують схожі дії. Спочатку зрозуміти сенс поліморфізму складно, тому наведемо простий приклад. У будь-якій мові програмування для кожного типу чисел, наприклад, в «класичному» C для знаходження модуля числа нам потрібно використовувати для цілих чисел функцію abs (), для довгих цілих labs (), для чисел з плаваючою точкою fabs (). Це призводить до необхідності пам`ятати синтаксис безлічі функцій і додаткового навантаження на пам`ять і процесор комп`ютера. Об`єктно-орієнтоване програмування, використовуючи механізм поліморфізму, дозволяє написати свою функцію визначення модуля modul () і використовувати її в арифметичних обчисленнях, не замислюючись про тип чисел. Просто пишемо в вираженні modul () і отримуємо правильну відповідь. Плюс скорочення коду програми і навантаження системи. Ще один приклад поліморфізму представлений на малюнку - загальний клас «Крива» (Shape) є «батьком» для кола, прямокутника і зірки.

об`єктно орієнтоване програмування на php

Спадкування (inheritance)

Механізм ООП, що дозволяє об`єкту мати (успадковувати) методи іншого об`єкта. Точніше, об`єкт отримує (успадковує) всі основні властивості свого «предка» і додає до них методи, властиві тільки йому. «Спадкоємець» об`єкта отримає в «спадок» методи вже двох об`єктів і т. Д. Спадкування ще називають ієрархією класів. Використання успадкування дозволяє просто управляти великими обсягами інформації та програмного коду. Далі ви можете побачити, як об`єкти успадковують загальні властивості від батьківського класу «Автомобіль».



Об`єктно-орієнтоване програмування - успадкування

Основні елементи класів і об`єктів в ООП

Всі мови, підтримують об`єктно-орієнтоване програмування, мають однакову трактування поняття класу і об`єкту. клас - тип даних для опису властивостей і роботи «реального» об`єкта, такого як банківський рахунок. об`єкт - окремий екземпляр класу. метод - програмний код, що змінює поведінку об`єкта або його стан в залежності від значення його властивостей. модифікатор доступу - метод, що розділяє елементи класу на відкриті і закриті поля. конструктор - метод, що виконується першим після ініціалізації об`єкта і приводить його в початковий стан. деструкція - метод, що викликається при видаленні об`єкта. На схемі показано взаємодію елементів класу.

Взаємодія елементів класу

Реалізація ООП в Delphi

В основі середовища розробки лежить підмножина мови Pascal з елементами ООП - Object Pascal. Середовище і мову Delphi були першою графічною середовищем розробки програм для MS Windows. Об`єктно-орієнтоване програмування delphi є набір стандартних абстрактних класів, інкапсулюючих в собі певні елементи Windows-програми, такі як графічний інтерфейс, робота з оперативною пам`яттю і т. д. Delphi справив значний вплив на розвиток всіх об`єктно-орієнтованих мов, особливо на мову C # для середовища розробки .NET компанії Microsoft. Остання версія Delphi 8 працює тільки з .NET.

Ієрархія стандартних класів Delphi

Ієрархія класів в Delphi

TObject - «батько» всіх класів Delphi. Клас забезпечує всіх своїх «нащадків» підтримкою функцій об`єктно-орієнтованого програмування, і його конструктор забезпечує запуск і коректну роботу програми в Windows. TPersistent - забезпечує об`єктів взаємодія на рівні потоків передачі даних. Він передає потоки даних і забезпечує доступ до Інспектора об`єктів. TComponent - дозволяє створювати будь-які невізуальні об`єкти і забезпечує їх взаємодію з усією середовищем розробки. Саме він дає можливість роботи з об`єктами і компонентами програми в візуальному середовищі розробки. Його нащадок TGraphicControl створює різні неоконів елементи інтерфейсу, наприклад, графічні фони і т. Д. TControl - всі об`єкти, які відображаються на екрані (вікна, списки, кнопки, форми т. Д.) Є його нащадками. Інкапсулює в собі роботу з функціями графічного інтерфейсу Windows. TWinControl - забезпечує роботу з вікнами програми. Його нащадок TCustomControl дає можливість створювати такі елементи управління, як текстові редактори, списки вибору.

Реалізація ООП в PHP

PHP є одним з найпопулярніших мов для веб-розробки і спочатку був повністю процедурний мову програмування. Тому об`єктно-орієнтоване програмування на php з`явилося пізніше, починаючи з четвертої версії. Необхідність підтримувати обидва стилю програмування - процедурний і об`єктно-орієнтована - привела до того, що елементи ООП досі є доповненням, а не основою мови. Але ситуація стрімко змінюється в бік об`єктного PHP. Версія PHP 5 повністю підтримує всі елементи ООП, і розробник має повну свободу у створенні власних класів та об`єктів, на відміну від Delhi, де розробник так чи інакше повинен використовувати стандартні класи з усіма їх можливими недоліками. Синтаксис об`єктних елементів PHP не представляє складності програмістам, раніше працюючим на C ++ / # і Delphi.

розвиток ООП

Об`єктно-орієнтована парадигма програмування продовжує розвиватися і використовується в багатьох елементах програмних систем, наприклад, в спеціалізованих базах даних, що підтримують об`єктну модель даних, і при розробці додатків для планшетів і мобільних телефонів. Серед нових об`єктних мов можна виділити Python, що широко використовується для розробки інтернет-систем, і Go- багатофункціональний мова програмування від компанії Google.



Увага, тільки СЬОГОДНІ!

Увага, тільки СЬОГОДНІ!