Файл: История и развитие методологии объектно-ориентированного программирования..pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 16.05.2023

Просмотров: 333

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

Современный уровень развития различных программных и аппаратно-программных систем, и в первую очередь систем управления, связан со значительным повышением их сложности из-за присущих им требований к гибкости, открытости, эргономичности и перенастраиваемости.

Проектирование таких сложных систем с трудом укладывается в рамки традиционного подхода разработки, когда процесс создания системы рассматривается как последовательность отдельных завершенных этапов и считается, что работа имеет однонаправленный характер. К серьезным недостаткам этой модели в современных условиях можно отнести:

  1. Подход не применим к разработке сложных программных систем, состоящих из большого числа автономных модулей, в том числе и из-за сложности внесения в систему последующих изменений.
  2. Невозможности распараллеливания разработки.
  3. Ограниченность, мешающая возможностям автоматического программирования и модификации программ, и применения вспомогательных средств, основанных на базах знаний (САSЕ технологии).

Все вышеизложенное требует новых подходов к проектированию. На данный момент наиболее перспективным можно считать объектно-ориентированный подход проектирования (ОПП).

Объектно-ориентированная технология покоится на солидной технической основе, элементы которой образуют так называемую объектную модель проектирования (object model of development), или просто объектную модель.

Не подлежит никакому сомнению, что объектно-ориентированный анализ и проектирование в корне отличаются от традиционных методов структурного проектирования: они требуют совершенно иного подхода к декомпозиции и порождают архитектуру программного обеспечения, намного превосходящую возможности структурного программирования. В настоящее время объектно-ориентированный подход общепризнан.

Актуальность темы исследования заключается в том, что ООП является востребованной парадигмой программирования при разработке программного обеспечения, что обусловливает необходимость понимания ООП.

Целью работы выступает изучение истории и развития методологии объектно-ориентированного программирования, сферы его применения.

Задачи работы:

  1. Изучить основные понятия объектно-ориентированного программирования.
  2. Выявить основные свойства объектно-ориентированного программирования.
  3. Рассмотреть поколения языков программирования.
  4. Изучить зарождение и развитие объектной модели.
  5. Охарактеризовать преимущества применения объектно-ориентированного программирования.
  6. Рассмотреть примеры применения объектно-ориентированного программирования.

Объект исследования – объектно-ориентированное программирование.

Предмет исследования - история и развитие методологии объектно-ориентированного программирования, сферы его применения.

При написании работы были использованы учебные пособия, монографии, статьи и электронные ресурсы по теме исследования.

Большинство источников изданы в известных вузах страны (КГПИ, МГУ, Высшая школа экономики, Волгоградский государственный технический университет, ЮУрГУ и др.), являются пособиями для студентов, данные источники можно считать надежными. Остальные издания выпущены также известными издательствами, такими как «Питер», «Вильямс», «Бином», «Академия» и др., и также могут считаться достоверными.

При написании работы также использованы статьи в периодической печати. Журнал «Перспективы развития информационных технологий» выпускается с 2009 г., в него входят рубрики по информатике, кибернетике, связи и вычислительной технике. Выпускает журнал ООО «Центр развития научного сотрудничества» (г. Новосибирск). «Таврический научный обозреватель» — электронный журнал (сетевое интернет-издание), для публикаций результатов исследований научных и научно-педагогических работников, аспирантов, докторантов, соискателей. Издание цитируемое. Данные источники также можно считать надежными.

Наименее достоверными являются электронные ресурсы. Однако в основном использован такой ресурс, как сайт Интернет-университета информационных технологий — ИНТУИТ.ру. Также использован материал с сайта Федерального Государственного Бюджетного Образовательного Учреждения Высшего Образования «МГТУ «СТАНКИН» и ряда специализированных сайтов по программированию.

В целом, источники, использованные в работе можно считать надежными.

1. СУЩНОСТЬ ПАРАДИГМЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

1.1. Основные понятия объектно-ориентированного программирования

В соответствии с концепцией фон-Неймана — основателя теоретической концепции компьютерной техники, процессор обрабатывает данные, выполняя инструкции (команды), которые находятся в той же оперативной памяти, что и данные [3, с. 5]. Таким образом, можно выделить две основные сущности процесса обработки информации: код, как совокупность инструкций, и данные. Все программы в соответствии с выбранной технологией программирования концептуально организованы вокруг своего кода или вокруг своих данных.


Рассмотрим основные на сегодняшний день парадигмы программирования:

1. Процессно-ориентированная парадигма, при которой программа представляет собой ряд последовательно выполняемых операций — модель фон-Неймана. При этом код воздействует на данные. Языки, реализующие эту парадигму, называются процедурными или императивными. Такими языками являются, например, C, Pascal и др.

2. Объектно-ориентированная парадигма, при которой программа рассматривается как совокупность фрагментов кода, обрабатывающих отдельные совокупности данных — объекты. Эти объекты взаимодействуют друг с другом посредством так называемых интерфейсов. При этом данные управляют доступом к коду [7, с. 9].

При повышении сложности алгоритма процессно-ориентированная парадигма сталкивается с существенными проблемами. Переход к объектным принципам программирования позволяет значительно улучшить внутреннюю организацию программы, в результате чего повышается производительность при разработке программных комплексов [6, с. 11].

Автор [12, с. 160] отмечает, что под ООП понимается технология, появившаяся как реакция на очередную фазу кризиса программного обеспечения, когда методы структурного программирования уже не позволяли справляться с растущей сложностью промышленных программных продуктов.

Предлагаем следующее определение термина «объектно-ориентированное программирование»:

Согласно [23], «ООП — это методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного класса (типа особого вида), а классы образуют иерархию на принципах наследуемости».

В данном определении можно выделить три части:

1. ООП использует в качестве базовых элементов объекты, а не алгоритмы;

2. Каждый объект является экземпляром какого-либо определенного класса;

3. Классы организованы иерархически.

Программа будет объектно-ориентированной только при соблюдении всех трех указанных условий. Для разработки объектно-ориентированных программ используются объектно-ориентированные языки программирования [9, с. 5].

При разработке приложений с использованием ООП может применяться объектно-ориентированная декомпозиция, тогда как прежде, в случае применения процедурного подхода к программированию, имела место алгоритмическая декомпозиция.

Первым бросающимся в глаза отличием ООП от структурного программирования является использование классов. Класс — это тип, определяемый программистом, в котором объединяются структуры данных и функции их обработки. Конкретные переменные типа данных «класс» называются экземплярами класса, или объектами [12, с. 162].


Класс содержит константы и переменные, называемые полями, а также выполняемые над ними операции и функции. Функции класса называются методами (другое название — функции-члены). Предполагается, что доступ к полям класса возможен только через вызов соответствующих методов. Поля и методы являются элементами (членами) класса.

Методы, расположенные в открытой части, формируют интерфейс класса и могут свободно вызываться клиентом через соответствующий объект класса. Доступ к закрытой секции класса возможен только из его собственных методов, а к защищенной — из его собственных методов, а также из методов классов-потомков.

Класс - это «Совокупность свойств, методов и событий». При этом «совокупность» означает, что функционирование класса обеспечивается в совокупности методами, свойствами и событиями [19, с. 43].

Под объектом, согласно [19; 21], понимается экземпляр класса. Объект функционирует как единое целое, реагируя соответствующими методами на соответствующие события класса. Разница между понятиями объекта и класса заключается в том, что посредством класса осуществляется описание какой-либо сущности, что работает как шаблон, основа. Например, в случае с Delphi, для того, чтобы добавить на форму кнопку, следует объявить класс, описать свойства, методы и события, и, при переносе кнопки на форму, создается экземпляр этой кнопки, т.е. объект.

Немаловажно, что каждый класс должен включать в себя два обязательных метода: создать объект (конструктор), уничтожить объект (деструктор), а процесс создания объекта именуется инициализацией [19, с. 45]. Эти методы выделяют под свойства объекта память и освобождают ее, а также заполняют свойства значениями по умолчанию.

Существует так называемые права доступа, в зависимости от которых методы и классы видны другим классам. В Delphi, например, это public, private, protected, published [19, с. 51]. Открытыми для доступа должны быть лишь некоторые возможности класса.

Роль классов в ООП заключается в том, что они выполняют две функции, всегда разделенные до появления объектно-ориентированных технологий: класс — это одновременно и модуль и тип [21].

Под модулями понимаются структурные единицы, из которых состоит программа. Поскольку модуль всегда рассматривается как синтаксическая концепция, то разбиение на них влияет только на форму записи исходных кодов, не определяя их функциональность. Тип — это статистическое описание определенных динамических объектов — элементов данных, обрабатываемых в процессе выполнения программы.


Одним из важнейших достижений в области ООП является методология паттернов проектирования, иногда называемых шаблонами проектирования [12, с. 202]. Паттерн — это описание взаимодействия объектов и классов, адаптированных для решения общей задачи проектирования в конкретном контексте. Паттерны выявляются по мере накопления опыта разработок, когда программист использует одну и ту же схему организации и взаимодействия объектов в разных контекстах. Паттерны предназначены, прежде всего, для инкапсуляции изменений.

Итак, при объектно-ориентированном подходе к программированию программа представляет собой совокупность взаимодействующих между собой данных — объектов. Функциональную возможность и структуру объектов задают классы — типы данных, определенные пользователем.

1.2. Основные свойства объектно-ориентированного программирования

К основным принципам ООП относятся [23]: пакетирование или инкапсуляция; наследование; полиморфизм; передача сообщений.

Наследование (или наследственность) — определение объекта и его дальнейшее использование для построения иерархии порожденных объектов с возможностью для каждого порожденного объекта, относящегося к иерархии, доступа к коду и данным всех порождающих объектов [24].

В работе [12] представлено несколько иное определение данного термина: «Наследование — механизм получения нового класса из существующего путем его дополнения или изменения».

Как структурная, так и объектно-ориентированная методологии ставят перед собой цель построения дерева иерархии взаимосвязей между объектами. При этом структурная иерархия формируется по простому принципу разделения целого на составляющие, тогда как в случае объектно-ориентированной иерархии отражается наследование свойств вышележащих типов объектов нижележащим типам объектов [23].

Абстрактными типами называют типы верхних уровней иерархии, которые, как правило, не имеют экземпляров. Конкретными экземплярами зачастую обладают типы нижних уровней иерархии.

Наследственность в ООП — это его основа, как отмечает автор [19, с. 49]. Следует понимать, что потомок — класс, от которого происходят другие классы, наследует свойства предка — класса, который происходит либо порожден из другого класса. Следовательно, потомок всегда «знает», какими он обладает свойствами, а предок не может «знать» свойства своего потомка, поскольку не может «знать» те свойства, которые будут добавлены в новый класс. Данный метод наследования и принят в объектно-ориентированных языках, согласно [19, с. 50].