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

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

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

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

Добавлен: 30.03.2023

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

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

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

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. ИСТОРИЧЕСКИЕ АСПЕКТЫ ВОЗНИКНОВЕНИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

1.1 Исторические предпосылки создания объектно-ориентированного программирования

1.2 Классификация объектно-ориентированных языков программирования высокого уровня

2. СПЕЦИФИКА МЕТОДОЛОГИИ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ В СОВРЕМЕННЫХ ЯЗЫКАХ ПРОГРАММИРОВАНИЯ

2.1 Сущность методологии объектно-ориентированного программирования

2.2 Основные методы и концепции объектно-ориентированного программирования

2.3 Синтаксис и семантика объектно-ориентированных языков программирования

2.4 Анализ объектно-ориентированных языков программирования высокого уровня, сфера их применения

3. РАЗРАБОТКА ПРОГРАММНОЙ ПЛАТФОРМЫ С ИСПОЛЬЗОВАНИЕМ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПОДХОДА

3.1 Постановка задачи и обоснование выбора среды разработки

3.2 Разработка проекта программной платформы и ее основных классов

3.3 Разработка интерфейса программной платформы

ЗАКЛЮЧЕНИЕ

БИБЛИОГРАФИЯ

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

  1. Абстрагирование - это выделение таких существенных характеристик объектов, которые отличает его от всех других объектов и которые четко определяют особенности этого объекта с точки зрения дальнейшего рассмотрения и анализа. Только для этой задачи и ничего более. Минимальная единица абстракции в объектно-ориентированной методологии - это класс.
  2. Ограничение доступа - это процесс защиты отдельных элементов объекта, который не влияет на основные характеристики объекта в целом.
  3. Модульность - Это свойство системы связано с возможностью разложения (декомпозиции) на ряд тесно связанных частей (модулей). Модульность основана на дискретном программировании объектов, которые можно модернизировать или заменить, не затрагивая другие объекты и систему в целом.
  4. Существование иерархий - это ранжирование, упорядочивание по некоторым правилам системных объектов [4].

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

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

2.2 Основные методы и концепции объектно-ориентированного программирования

Выделяют такие основные методы объектно-ориентированного программирования:

  1. Метод объектно-ориентированной декомпозиции - заключается в процессе выделении объектов и связей между ними. Метод поддерживается концепциями инкапсуляции, наследования и полиморфизма [2].
  2. Метод абстрактных типов данных – метод, лежащий в основе инкапсуляции. Поддерживается концепцией абстрактных типов данных.
  3. Метод пересылки сообщений - заключается в описании поведения системы в терминах обмена сообщениями между объектами. Поддерживается концепцией сообщения [9].

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

2.3 Синтаксис и семантика объектно-ориентированных языков программирования

В синтаксисе чистых объектно-ориентированных языков все может быть записано в виде отправки сообщений объектам. Класс в объектно-ориентированных языках описывает структуру и работу набора объектов со схожими атрибутами, характеристиками и поведением. Объект принадлежит определенному классу и имеет собственное внутреннее состояние. Методы - функциональные свойства, которые могут быть активированы [6].

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

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

Все объектно-ориентированное программирование основано на трех фундаментальных принципах, придающих объектам новые свойства [6].

К этим методам относятся:

  1. Инкапсуляция - объединение в единое целое данных и алгоритмов их обработки. При этом включенные в объект подпрограммы (методы) напрямую работают с данными этого объекта, обращаются к другим методам этого объекта или методам объектов-предков. Данные здесь - поля объекта, а алгоритмы - объектные методы. Инкапсуляция является важнейшим свойством объектов, на котором строится объектно-ориентированное программирование.

Инкапсуляция позволяет во многом изолировать класс от остальных частей программы, сделать его «самодостаточным» для решения конкретной задачи. В результате класс всегда несет в себе некоторую функциональность [5]. Например, класс TForm в Delphi содержит (инкапсулирует в себе) все необходимое для создания Windows-окна, класс TTimer обеспечивает работу таймера. Единицей инкапсуляции в объектно-ориентированном программирование является объект.

  1. Наследование - это свойство объектов порождать своих потомков. Объект-потомок автоматически наследует все поля и методы, может дополнять объекты новыми полями, заменять и дополнять методы [9].

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

Принцип наследования приводит к созданию постоянно разрастающегося ветвящегося дерева классов. Каждый потомок дополняет возможности своего родителя новыми и передает их своим потомкам [2].

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

Для различных родственных классов возможно задать единый образ действия. Например, вывод на экран любой геометрической фигуры. Затем для каждого конкретного класса составляется своя подпрограмма, выполняющая это действие непосредственно для него. Например, отображение точки отличается от отображения линии. Причем все эти подпрограммы должны иметь одно имя. Когда потребуется отобразить конкретную фигуру, будет выбрана из всего множества одноименных подпрограмм та, которая соответствует типу конкретного объекта [6]. Другими словами, полиморфизм реализует идею «один интерфейс – множество методов». А выбор конкретного действия зависит от ситуации.

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


2.4 Анализ объектно-ориентированных языков программирования высокого уровня, сфера их применения

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

Первый объектно-ориентированный язык программирования Simula 67 был разработан в Норвегии в конце 1960-х годов. Авторы данного языка очень точно предугадали перспективы развития программирования. Данный язык намного опередил свое время. Однако программисты 60-х годов не смогли воспринять ценности языка Simula 67, и он не выдержал конкуренции с другими языками программирования (в основном, с языком Fortran). Не популярности языку Simula 67 способствовало, что он был реализован как интерпретируемый, а не компилируемый язык. Данный факт был абсолютно неприемлемым в 1960-е годы, так как интерпретация была связана со снижением скорости выполнения(эффективности) программ [9].

Но достоинства языка Simula 67 все же были замечены некоторыми программистами. Поэтому в 1970-е годы было разработано множество экспериментальных объектно-ориентированных языков программирования: CLU, Alphard, Concurrent Pascal. Данные языки так и остались экспериментальными, но после их исследования были разработаны существующие объектно-ориентированные языки программирования [2].

В 1972 году командой Xerox Palo Alto Research Center Learning Research Group был разработан язык Smalltalk как программная часть Dynabook - фантастического проекта Алана Кея. В основу нового языка были положены идеи Simula. Smalltalk являлся одновременно и языком программирования, и средой разработки программ.

Smalltalk - это чисто объектно-ориентированный язык, в котором абсолютно все рассматривается как объекты. Даже целые числа - это классы. Smalltalk оказал существенное влияние на последующие поколения языков программирования. Так же Smalltalk стал основой для современного графического интерфейса пользователя, на которых базируются интерфейсы Windows, Macintosh, и Motif [4].


Известны пять выпусков языка Smalltalk, которые обозначаемы по году их появления: Smalltalk-72, -74. -76, -78, -80. Реализации 1972 и 1974 годов заложили данного основу языка. Была заложена идея передачи сообщений и полиморфизм, несмотря на то, что механизм наследования еще не появился. В последующих версиях за основу были взяты классы.

Smalltalk-80 был перенесен на многие компьютерные платформы. В основу языка положены две простые идеи: все является объектами и объекты взаимодействуют, обмениваясь сообщениями [9].

В таблице 1 приведены характеристики языка Smalltalk с точки зрения основных элементов объектного подхода.

Таблица 1

Характеристика языка программирования Smalltalk [9]

Абстракции

Переменные экземпляра

Да

Методы экземпляра

Да

Переменные класса

Да

Методы класса

Да

Инкапсуляция

Переменных

Закрытые

Методов

Открытые

Модульность

Разновидности модулей

Нет

Иерархии

Наследование

Одиночное

Шаблоны

Нет

Метаклассы

Да

Типизация

Сильная типизация

Нет

Полиморфизм

Да (одиночный)

Параллельность

Многозадачность

Непрямая (посредством классов)

Сохраняемость

Долгоживущие объекты

Нет

Большим недостатком Smalltalk являются низкая производительность полученных программ и большие требования к памяти. Это связано с не самой удачной реализацией объектно-ориентированных особенностей.

В 1983 году для Министерства Обороны США был создан язык Ada. Язык позволяет выявить очень много ошибок на этапе компиляции. Кроме того, поддерживаются многие аспекты программирования, которые часто отдаются на откуп операционной системе (параллелизм, обработка исключений). В 1995 году был принят стандарт языка Ada 95, который развил предыдущую версию и добавил в нее объектно-ориентированность и исправляя некоторые неточности. Оба этих языка не стали популярными и не получили распространения вне военных и прочих крупномасштабных проектов (авиация, железнодорожные перевозки). Основной причиной стало достаточно громоздкий синтаксис и сложность освоения языка [9].

Непосредственными предшественниками Ada являются Pascal и его производные, включая Euclid, Lis, Mesa, Modula и Sue. Были использованы некоторые концепции ALGOL-68, Simula, CLU и Alphard. В таблице 2 приведены основные характеристики языка Ada с точки зрения объектного подхода [4].