Файл: Основные понятия объектно-ориентированного программирования (Анализ существующих объектно-ориентированных сред разработки программ).pdf
Добавлен: 03.04.2023
Просмотров: 349
Скачиваний: 3
СОДЕРЖАНИЕ
Глава 1. Теоретические аспекты объектно-ориентированного программирования
1.1 Понятие объектно-ориентированного программирования
1.2 Основные принципы объектно-ориентированного программирования
1.3 Преимущества и недостатки объектно-ориентированного подхода
Глава 2. Анализ современных подходов к объектно-ориентированному программированию
2.1 Анализ существующих объектно-ориентированных сред разработки программ
Глава 3. Сравнительный анализ современных объектно-ориентированных языков программирования
Введение
Объектно-ориентированная технология (парадигма) программирования наиболее распространена и востребована в настоящее время. При объектно-ориентированном подходе к программированию программа представляет собой совокупность взаимодействующих между собой данных – объектов. Функциональную возможность и структуру объектов задают классы – типы данных, определенные пользователем.
В данной работе рассматриваются основные аспекты объектно-ориентированного программирования.
Объектом исследования в работе является сравнительный анализ объектно-ориентированных сред разработки.
Предметом исследования является объектно-ориентированная технология программирования.
Цель исследования: изучить основные особенности объектно-ориентированного программирования, на основании этого провести сравнительный анализ объектно-ориентированных сред разработки.
Для выполнения цели исследования, необходимо выполнить следующие задачи исследования:
-
- Исследовать теоретические аспекты объектно-ориентированного программирования;
- Определить понятие объектно-ориентированного программирования;
- Определить основные преимущества и недостатки ООП;
- Проанализировать наиболее распространенные обьектно-ориентированные среды разработки;
- На основании этого выбрать среды для проведения сравнительного анализа;
- Провести сравнительный анализ различных сред разработки.
Работа состоит из трех глав, введения, заключения и списка литературы.
Глава 1. Теоретические аспекты объектно-ориентированного программирования
1.1 Понятие объектно-ориентированного программирования
Начало использования объектного подхода к созданию программ – это середины 80-х годов 20-го века. Объектно-ориентированное программирование (ООП) можно описать как технологию создания сложных программных продуктов, которая базируется на использовании в программе совокупности объектов, каждый из которых принадлежит определенному типу (классу). Классы, существующие в программе, образуют иерархию с возможностью наследования свойств от базового класса. Взаимодействие объектов в программе происходит за счет передачи между ними сообщений.
Основное достоинство объектно-ориентированного подхода по сравнению с модульным программированием – понятная декомпозиция программной системы на составляющие ее элементы, и, следовательно, облегчение ее разработки и тестирования. Главным преимуществом объектно-ориентированного подхода можно считать принципиально новые способы организации программ, которые базируются на наследовании и полиморфизме. Это дает возможность повторного использования кодов, а кроме того, позволяет создавать библиотеки классов для их дальнейшего применения.
Концепция объектно-ориентированного программирования (ООП) появилась более сорока лет назад, как развитие идей процедурного программирования. Идеология процедурного программирования, ничего особенного собой не представляет: все программы представлены набором процедур и функций, в то время как сами процедуры и функции – это последовательности операторов, выполняя которые компьютер модифицирует значения переменных в памяти. Основная программа в процедурном программировании также является процедурой (функцией), в теле которой могут быть вызовы других процедур и функций – подпрограмм. Суть процедурного программирования проста: данные отдельно, поведение отдельно. То из чего состоит процедурный язык программирования (какие конструкции в него входят), я постарался собрать в отдельном разделе. Разделение кода на подпрограммы, во-первых, позволяет выделить повторно используемые фрагменты кода, а во-вторых, делает код программы структурированным.
Идеология объектно-ориентированного программирования, как следует из самого названия, строится вокруг понятия объект. Объект объединяет в себе и данные и поведение. Объект – это любая сущность, с которой имеет дело программа, а именно: объекты предметной области, моделируемые программой; ресурсы операционной системы; сетевые протоколы и многое другое. По сути, объект – это та же структура (составной тип), но дополненная процедурами и функциями, управляющими элементами этой структуры. К примеру, для работы с файлом в процедурном языке программирования отдельно была бы создана переменная для хранения имени файла и отдельно – для хранения его дескриптора (уникальный идентификатор ресурса в операционной системе), а также ряд процедур работы с файлом: открыть файл, прочитать данные из файла и закрыть файл. Все бы эти процедуры, помимо обычных параметров и переменных для хранения результата, обязаны были бы принимать тот самый дескриптор, чтобы понять, о каком именно файле идет речь. В объектно-ориентированном языке для этих же целей был бы описан объект-файл, который также бы хранил внутри себя имя и дескриптор и предоставлял бы пользователю процедуры для открытия, чтения и закрытия себя самого (файла, ассоциированного с конкретным объектом). Разница была бы в том, что дескриптор был бы скрыт от остальной части программы, создавался бы в коде процедуры открытия файла и использовался бы неявно только самим объектом. Таким образом, пользователю объекта (программному коду внешней по отношению к объекту программы) не нужно было бы передавать дескриптор каждый раз в параметрах процедур. Объект – это комплект данных и методов работы с этими данными, часть из которых может быть скрыта от окружающего его мира, к которой и относятся детали реализации. Более подробно о терминологии объектно-ориентированного программирования будет рассказано далее.
Объектом в объектно-ориентированном языке программирования является практически все, за исключением операторов: и элементарные типы являются объектами, и описание ошибки является объектом и, наконец, основная программа также является объектом. Осталось понять, что такое объект с точки зрения самой программы, как он создается и используется. Вторым основополагающим понятием ООП является класс. Класс – это тот самый новый в сравнении с процедурным программированием тип данных, экземпляры которого и называются объектами. Класс, как уже было сказано, похож на составной тип данных или структуру, но дополненный процедурами и функциями (методами) для работы со своими данными. Теперь самое время описать основные термины объектно-ориентированного программирования.
Развитие систем управления сайтами, технологий настройки и управления серверами, опыт разработки динамичных сайтов сделали объектно-ориентированное программирование доступным каждому. Проблема в том, как изменить свое мышление и привыкнуть мыслить на уровне объектов, а не в контексте последовательно исполняемого кода. Обычно переход от классического программирования к объектно-ориентированному занимает два-три месяца, но затраты окупаются с лихвой. Потенциал современных языков программирования, в первую очередь PHP и JavaScript, удовлетворит самого искушенного разработчика. Современное ООП - полиморфизм, наследование и возможности формирования свойств объектов - удобны и практичны, синтаксис языков и вспомогательные инструменты обеспечивают комфорт в работе и эффективность кода.
Идеальная объектно-ориентированная концепция может манипулировать только объектами и системами объектов. В современных языках программирования под объектом (классом) обычно понимают описание объекта и экземпляр объекта, причем, чтобы воспользоваться описанием объекта, языки позволяют программисту работать со статическими объектами, в то время как динамический объект - это экземпляр описания, со своим уникальным содержанием и структурой, но использующий те же методы (свойства) описания.
Сколько продержится классическое программирование и как будет развиваться ООП - сказать достаточно сложно. Судя по всему, разработчики инструментальных средств не планируют рассматривать контекст потребителя (пользователя, заказчика). Инструментарий ООП - полиморфизм, наследование, инкапсуляция и абстракция - ориентируются на разработчика. Современные информационные системы и веб-ресурсы стремятся отражать реальную действительность, обеспечивать функционирование реальных объектов и создавать среду для их функционирования, настолько простую, что она будет доступна потребителю, далекому от программирования, полностью погруженному в сферу своей компетенции.
1.2 Основные принципы объектно-ориентированного программирования
Основными принципами объектно-ориентированного программирования являются:
Класс - это пользовательская структура данных, которая воедино объединяет данные и функции для работы с ними (поля класса и методы класса);
Объект - это конкретный экземпляр класса, полям которого заданы конкретные значения.
ООП включает три ключевых подхода: наследование, инкапсуляцию и полиморфизм.
Инкапсуляция — свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе. Некоторые языки (например, С++) отождествляют инкапсуляцию с сокрытием, но большинство (Smalltalk, Eiffel, OCaml) различают эти понятия.
Наследование — свойство системы, позволяющее описать новый класс на основе уже существующего с частично или полностью заимствующейся функциональностью. Класс, от которого производится наследование, называется базовым, родительским или суперклассом. Новый класс — потомком, наследником, дочерним или производным классом.
Рисунок 1 – Основные принципы объектно-ориентированного программирования
Класс - это такая структура данных, которую может формировать сам программист. В терминах ООП, класс состоит из полей (по-простому - переменных) и методов (по-простому - функций). И, как выяснилось, сочетание данных и функций работы над ними в одной структуре дает невообразимую мощь. Объект - это конкретный экземпляр класса. Придерживаясь аналогии класса со структурой данных, объект - это конкретная структура данных, у которой полям присвоены какие-то значения. Поясню на примере:
В классовом ООП классы являются чертежами для объектов. Объекты (или экземпляры) создаются на основе классов. Существует конструктор, который используется для создания экземпляра класса с заданными свойствами.
Проблема с наследованием заключается в том, что у потомков слишком высокий уровень доступа к деталям реализации каждого базового класса в иерархии и наоборот. После изменения требований рефакторинг иерархии классов настолько сложно провести, что она превращается в полную неразбериху со следами устаревших требований.
Классовое наследование построено на создании связей через зависимости. На основе базовых классов (или суперклассов) создаются производные классы. Классовое наследование хорошо подходит для небольших и простых приложений, которые редко меняются и у которых не более одного уровня наследования (неглубокие деревья наследования позволяют избежать проблемы хрупкого базового класса) или совершенно разные сценарии использования. Однако по мере расширения иерархии такое наследование со временем будет невозможно поддерживать.
В прототипном наследовании классы не используются совсем. Вместо этого объекты создаются из других объектов. Мы начинаем с обобщённого объекта — прототипа. Прототип можно использовать для создания других объектов путём его клонирования или расширять его разными функциями.
Важнейшие принципы ООП: полиморфизм и абстракция - определяют приоритетом начальный объект как систему объектов. Нет никаких сомнений в том, что всё должно начинаться с абстрактного объекта, а не с системы объектов. Но если учесть фактор времени и приложить его на уровне каждого объекта, начиная с самого первого абстрактного, то противоречивая мысль положить в начало решения и объект, и систему является единственно разумной. Если классическая концепция программирования в ходе решения задачи меняет данные, содержимое базы данных, изменяет файлы и пр., то в концепции ООП полиморфизм, инкапсуляция и фактор времени меняют содержание, структуру и свойства системы объектов решаемой задачи. Программиста в ООП меньше всего интересует понятие файл, база данных, алгоритм, - это частности, здесь программист мыслит объектами, но объекты существуют во времени и изменяются в ходе достижения желаемого.
Допустим, нам нужно написать программу, рассчитывающую периметр и площадь треугольника, который задан двумя сторонами и углом между ними. Для написания такой программы используя ООП, нам необходимо будет создать класс (то есть структуру) Треугольник. Класс Треугольник будет хранить три поля (три переменные): сторона А, сторона Б, угол между ними; и два метода (две функции): посчитать периметр, посчитать площадь. Данным классом мы можем описать любой треугольник и вычислить периметр и площадь. Так вот, конкретный треугольник с конкретными сторонами и углом между ними будет называться экземпляром класса Треугольник. Таким образом класс - это шаблон, а экземпляр - конкретная реализация шаблона. А вот уже экземпляры являются объектами, то есть конкретными элементами, хранящими конкретные значения.
Полиморфизм — свойство системы, позволяющее использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Основные принципы полиморфизма:
-
- Полиморфизм в программировании - это способность предоставлять один и тот же интерфейс для различных базовых форм (типов данных).
- Полиморфизм - возможность объектов иметь различную реализацию.
- Абстракция невозможна без инкапсуляции и наследования, как невозможен полиморфизм без наследования.