Введення в об'єктно-орієнтоване програмування
З введенням поняття «об'єкт» розробники отримали можливість описувати структуру програмних систем, використовуючи терміни «реального світу», і підтримувати системи з мільйонами рядків коду, що було неможливо при використанні процедурної парадигми. Процедурне програмування не могло забезпечити належний рівень розвитку і підтримки складних програмних систем в банківській, телекомунікаційній та інших сферах діяльності, де вимоги до програм постійно ускладнювалися. Стиль (парадигма) програмування, в основі якого лежить поняття класу і об'єкта, розроблявся як розвиток процедурної парадигми, яка перестала бути ефективною у міру розвитку складності програмних проектів, і отримав назву «об'єктно-орієнтоване програмування (ООП).
Історія розвитку
Вперше об'єктно-орієнтоване програмування почало застосовуватися в мові Simula 67 який справив великий вплив на розвиток таких мов, як Lisp і Smalltalk. Але найбільший розвиток ООП отримав в середині 90-х, коли був створений «класик ООП» C++, роботу якого з об'єктами перейняли популярні середовища програмування Delphi і VisualFoxPro. ООП продовжує розвиватися, і серед нових парадигм можна виділити аспектно-орієнтовану і суб'єктно-орієнтовану парадигму. Кожен об'єктно-орієнтована мова розширює базові поняття ООП унікальними доповненнями і розширеннями, в залежності від специфіки використання. У цій статті ми розглянемо реалізацію ООП в середовищі програмування Delphi і мовою веб-розробки PHP.Основні концепції ООП
Парадигма ООП складається з трьох основних концепцій: інкапсуляція, поліморфізм і наслідування.Інкапсуляція (encapsulation)
Механізм об'єднання коду і даних всередині об'єкта, а також їх захисту від зовнішніх змін. Всередині об'єкта дані і код можуть бути відкритими (public) для доступу і модифікації іншими об'єктами і закритими (private) для зовнішніх змін.Поліморфізм (polymorphіsm)
Найважливіший елемент концепції ООП, що дозволяє використовувати єдине найменування для функцій, що виконують схожі дії. Спочатку зрозуміти сенс поліморфізму складно, тому наведемо простий приклад. У будь-якій мові програмування для кожного типу чисел, наприклад, у «класичному» C для знаходження модуля числа, нам потрібно використовувати для цілих чисел функцію abs(), для довгих цілих labs(), для чисел з плаваючою точкою fabs(). Це призводить до необхідності пам'ятати синтаксис безлічі функцій і додаткового навантаження на пам'ять і процесор комп'ютера. Об'єктно-орієнтоване програмування, використовуючи механізм поліморфізму, дозволяє написати свою функцію визначення модуля modul() і використовувати її в арифметичних обчисленнях, не замислюючись про тип чисел. Просто пишемо у вираженні modul() і отримуємо правильну відповідь. Плюс скорочення коду програми і навантаження системи. Ще один приклад поліморфізму представлений на малюнку - загальний клас «Крива» (Shape) є «батьком» для кола, прямокутника і зірки.Успадкування (inheritance)
Механізм ООП, що дозволяє об'єкту мати (наслідувати) методи іншого об'єкта. Точніше, об'єкт отримує (успадковує) всі основні властивості свого «предка» та додає до них методи, властиві тільки йому. «Спадкоємець» об'єкта отримає в «спадщину» методи вже двох об'єктів і т. д. Спадкування ще називають ієрархією класів. Використання успадкування дозволяє просто управляти великими обсягами інформації та програмного коду. Далі ви можете побачити, як об'єкти успадковують загальні властивості від батьківського класу «Автомобіль».Основні елементи класів і об'єктів в ООП
Всі мови, підтримують об'єктно-орієнтоване програмування, мають однакове трактування поняття класу та об'єкта. Клас - тип даних для опису властивостей і роботи «реального» об'єкта, такого як банківський рахунок. Об'єкт - окремий екземпляр класу. Метод - програмний код, що змінює поведінку об'єкта або його стан в залежності від значення його властивостей. Модифікатор доступу - метод, що розділяє елементи класу на відкриті і закриті поля. Конструктор - метод, що виконується першим після ініціалізації об'єкта і приводить його в початковий стан. Деструктор - метод, що викликається при видаленні об'єкта. На схемі показано взаємодію елементів класу.Реалізація ООП в Delphi
В основі середовища розробки лежить підмножина мови Pascal з елементами ООП - Object Pascal. Середовище і мова Delphi були першою графічною середовищем розробки програм для MS Windows. Об'єктно-орієнтоване програмування delphi є набір стандартних абстрактних класів, инкапсулирующих в собі певні елементи Windows-програми, такі як графічний інтерфейс, робота з оперативною пам'яттю і т. д. Delphi справив значний вплив на розвиток усіх об'єктно-орієнтованих мов, особливо на мову C# для середовища розробки .NET компанії Microsoft. Остання версія Delphi 8 працює тільки з .NET.Ієрархія стандартних класів Delphi
TObject - «батько» всіх класів Delphi. Клас забезпечує всіх своїх «нащадків» підтримкою функцій об'єктно-орієнтованого програмування, і його конструктор забезпечує запуск і коректну роботу програми в Windows. TPersistent - забезпечує об'єктів взаємодія на рівні потоків передачі даних. Він передає потоки даних і забезпечує доступ до Інспектора об'єктів. TComponent - дозволяє створювати будь-які невізуальні об'єкти і забезпечує їх взаємодію з усією середовищем розробки. Саме він дає можливість роботи з об'єктами і компонентами програми в візуальному середовищі розробки. Його нащадок TGraphicControl створює різні неоконние елементи інтерфейсу, наприклад, графічні фони і т. д. TControl - всі об'єкти, які відображаються на екрані (вікна, списки, кнопки, форми тощо) є його нащадками. Інкапсулює в собі роботу з функціями графічного інтерфейсу Windows. TWinControl - забезпечує роботу з вікнами програми. Його нащадок TCustomControl дає можливість створювати такі елементи управління, як текстові редактори, списки вибору.Реалізація ООП в PHP
PHP є однією з найпопулярніших мов для веб-розробки і спочатку представляв собою повністю процедурний мову програмування. Тому об'єктно-орієнтоване програмування на php з'явилося пізніше, починаючи з четвертої версії. Необхідність підтримувати обидва стилю програмування - процедурного та об'єктно-орієнтований - призвела до того, що елементи ООП досі є доповненням, а не основою мови. Але ситуація стрімко змінюється в бік об'єктного PHP. Версія PHP 5 повністю підтримує всі елементи ООП, і розробник має повну свободу у створенні власних класів і об'єктів, на відміну від Delhi, де розробник так чи інакше повинен використовувати стандартні класи з усіма їх можливими недоліками. Синтаксис об'єктних елементів PHP не представляє складності програмістам, раніше працюючим на C++/# і Delphi.Розвиток ООП
Об'єктно-орієнтована парадигма програмування продовжує розвиватися і використовується в багатьох елементах програмних систем, наприклад, у спеціалізованих базах даних, які підтримують об'єктну модель даних, і при розробці додатків для планшетів і мобільних телефонів. Серед нових об'єктних мов можна виділити Python, що широко використовується для розробки інтернет-систем, і Go - багатофункціональний мова програмування від компанії Google.Схожі добрі поради по темі
ООП - це що таке? Основні принципи об'єктно-орієнтованого програмування
Чому об'єктно-орієнтованого програмування віддається перевага у більшості проектів? ООП пропонує ефективний спосіб боротьби з їх складністю. Замість
Сучасна мова програмування високого рівня: приклади та порівняння
Написання більшості сучасних комп'ютерних програм здійснюється при залученні мов високого рівня. Примітно, що багато з них були розроблені ще в 60 і
Класифікація мов програмування та їх розвиток
Що таке мова програмування? Це сукупність символів для написання вихідного коду для ЕОМ. З поширенням інформаційних технологій відбувалося і розвиток
Структурне програмування: основні принципи
На початку 70-х років 20 століття попит на результати програмування зріс настільки, що існуючі засоби реалізації перестали справлятися. Тоді на
Введення в динамічне програмування
В математичному програмуванні існує окремий клас задач, в яких необхідно домогтися оптимізації багатоетапних (багатокрокових) процесів, таких як
Як записати образ на флешку: корисні поради і покрокова інструкція
Буває так, що який-небудь файл занадто великий для того, щоб записати його на диск. У цьому випадку більшість людей користуються флешками, так як їх