Введение в объектно-ориентированное программирование
С введением понятия «объект» разработчики получили возможность описывать структуру программных систем, используя термины «реального мира», и поддерживать системы с миллионами строк кода, что было невозможно при использовании процедурной парадигмы. Процедурное программирование не могло обеспечить должный уровень развития и поддержки сложных программных систем в банковской, телекоммуникационной и других сферах деятельности, где требования к программам постоянно усложнялись. Стиль (парадигма) программирования, в основе которого лежит понятие класса и объекта, разрабатывался как развитие процедурной парадигмы, которая перестала быть эффективной по мере развития сложности программных проектов, и получил название «объектно-ориентированное программирование» (ООП).
История развития
Впервые объектно-ориентированное программирование начало применяться в языке Simula 67, который оказал большое влияние на развитие таких языков, как Lisp и Smalltalk. Но наибольшее развитие ООП получил в середине 90-х, когда был создан «классик ООП» C++, работу которого с объектами переняли популярные среды программирования Delphi и VisualFoxPro. ООП продолжает развиваться, и среди новых парадигм можно выделить аспектно-ориентированную и субъектно-ориентированную парадигму. Каждый объектно-ориентированный язык расширяет базовые понятия ООП уникальными дополнениями и расширениями, в зависимости от специфики использования. В этой статье мы рассмотрим реализацию ООП в среде программирования Delphi и языке веб-разработки PHP.
Основные концепции ООП
Парадигма ООП состоит из трех основных концепций: инкапсуляция, полиморфизм и наследование.
Инкапсуляция (encapsulation)
Механизм объединения кода и данных внутри объекта, а также их защиты от внешних изменений. Внутри объекта данные и код могут быть открытыми (public) для доступа и модификации другими объектами и закрытыми (private) для внешних изменений.
Полиморфизм (polymorphism)
Важнейший элемент концепции ООП, позволяющий использовать единое наименование для функций, выполняющих похожие действия. Вначале понять смысл полиморфизма сложно, поэтому приведем простой пример. В любом языке программирования для каждого типа чисел, например, в «классическом» 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.
Похожие статьи
- Современный язык программирования высокого уровня: примеры и сравнения
- Инкапсуляция – это упаковка данных и функций в единый компонент. Инкапсуляция, полиморфизм, наследование: особенности
- Объекты JavaScript в примерах
- Что такое программирование? Языки программирования. Компьютерное программирование
- Классификация языков программирования и их развитие
- UML-диаграмма. Виды диаграмм UML
- Eclipse - среда разработки Java