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

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

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

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

Добавлен: 31.03.2023

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

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

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

Рис. 4. Архитектура программы, состоящей из модулей

Разделение на модули должно носить не механический характер, а исходить из логики программы [16, c. 367]:

  • размер модуля должен быть ограничен;
  • модуль должен выполнять логически целостное и завершенное действие;
  • модуль должен быть универсальным, т.е. по возможности параметризованным: все изменяемые характеристики выполняемого действия должны передаваться через параметры;
  • входные параметры и результат модуля желательно передавать не через глобальные переменные, а через формальные параметры и результат функции;
  • связь между модулями осуществляются через специальный интерфейс, в то время как доступ к реализации модуля (телам подпрограмм и некоторым «внутренним» переменным) запрещен.

Принцип модульности распространяется не только на программы, но и на данные: любой набор параметров, характеризующих логический или физический объект, должен быть представлен в программе в виде единой структуры данных (структурированной переменной) [16, c. 399].

Благодаря существованию модульного программирования стало возможным расширение библиотеки стандартных функций, которые обеспечивали полный набор параметризованных действий. Данные и процедуры (функции) объединялись в модули в соответствии с логикой проектировщиков программной системы [32, c. 200]. Определяющими факторами являлись свойства предметной области: данные и процедуры их обработки, соответствующие определенному классу сущностей предметной области, объединялись в модуль. Например, модуль обработки строк содержал процедуры и функции, выполняющие основные операции над строками: конкатенация, сравнение, копирование, нахождение подстроки, вычисление длины и т.п.

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

Однако узким местом модульного программирования является то, что ошибка в интерфейсе при вызове подпрограммы выявляется только при выполнении программы (из-за раздельной компиляции модулей обнаружить эти ошибки раньше невозможно).


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

Как отмечалось ранее, основные принципы ООП были сформулированы в середине 60-х гг. XX века при разработке языка Simula [6, c. 414], дальнейшее их развитие пришлось на 70-е годы, когда был создан язык Smalltalk. В середине 80-х годов интерес к этим технологиям повысился, и особую популярность завоевали такие языки, как C++ и Eiffel. Язык программирования С++ был разработан Бьерном Страуструпом, сотрудником компании AT&T. В августе 1998 г. был принят международный стандарт языка С++. ООП продолжало развиваться и в 90-е г. В это время появился язык Java. В 2002 году с выпуском версии Visual Studio.NET компания Microsoft представила на рынке компьютерных технологий новый язык ООП – С# – и модифицированную версию объектно-ориентированного языка программирования Visual Basic [6, c. 417].

Одновременно с развитием объектно-ориентированного программирования стали развиваться и объектно-ориентированные методы разработки программного обеспечения, охватывающие стадии анализа и проектирования. Среди общепризнанных объектно-ориентированных подходов к анализу и проектированию следует выделить методы Г. Буча, Д. Рамбо, А. Джекобсона, Шлеера-Меллора и Коуда-Йордона. В результате объединения усилий первых трех авторов появился на свет унифицированный язык моделирования UML, который в 1997 г. был принят в качестве стандарта консорциумом Object Management Group и получил широкое распространение в сфере производства программного обеспечения [16, c. 374].

Основные идеи объектно-ориентированного подхода опираются на следующие положения [17, c. 416]:

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

С точки зрения языка программирования класс объектов рассматривается как тип данных, а отдельные объекты – как данные этого типа [23, c. 101]. Определение программистом собственных классов объектов должно позволить описывать конкретную задачу в терминах ее предметной области (при соответствующем выборе имен типов и имен объектов, их атрибутов и выполняемых действий).

Среди важных преимуществ объектно-ориентированных систем являются [24, c. 315]:

1) концептуальная ясность в разработке системы;

2) надежность системы, вытекающая из простоты работы с ней;

3) повторное использование исходных текстов программ;

4) гибкость при модификации и расширении системы.

Систематическое применение объектно-ориентированного подхода позволяет разрабатывать хорошо структурированные, надежные в эксплуатации, достаточно просто модифицируемые программные системы, которые более адекватно описывают используемые объекты в терминах реального мира [25, c. 117]. Этим объясняется интерес программистов к объектно-ориентированному подходу и объектно-ориентированным языкам программирования по сравнению с другими технологиями программирования.

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

В теории программирования принято различать объектно-ориентированные и объектные языки программирования. Объектные языки отличаются от объектно-ориентированных языков программирования тем, что не поддерживают наследования свойств в иерархии абстракций. Так, например, Ада – объектный язык, а С++ и объектные версии Pascal являются объектно-ориентированными языками программирования [9, c. 56].

К объектно-ориентированным языкам программирования относятся также и Simula 67, Smalltalk, Eiffel, Java, C#, Visual Basic и др., об эволюции развития которых говорилось ранее.

Объектная модель, использованная при разработке Borland Pascal 7.0, была специально создана для облегчения перехода программистов на использование технологии ООП [11, c. 349]. Эта модель не поддерживает абстракции метаклассов, почти не содержит специальных средств сокрытия реализации объектов. Однако все перечисленные недостатки не влияют на создание более сложных систем.

Особое место занимают объектные модели Delphi и С++ Builder, которые обобщают опыт ООП для MS DOS и включают некоторые новые средства, обеспечивающие эффективное создание более сложных систем. Именно на базе этих моделей созданы визуальные среды для разработки приложений Windows [20, c. 554].


2. Объектно-ориентированное моделирование

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

Инкапсуляция – это процесс выделения элементов абстракции, образующих ее структуру и поведение; инкапсуляция позволяет отделить контрактный интерфейс абстракции от ее реализации.

Модульность – это свойство системы, разложенной на целостные и слабо связанные между собой модули.

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

Параллелизм – это свойство, отличающее активные объекты от пассивных.

Персистентность – это способность объекта преодолевать временные или пространственные пределы.

2.1. Объектная модель проектирования

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

– иерархия;

– контроль типов;

– инкапсуляция;

– параллелизм;

– абстракция;

– модульность;

– персистентность.

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

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


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

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

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

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

2.2. Объектно-ориентированное программирование

В основе любого языка программирования лежит определенная модель (виртуальная вычислительная машина), позволяющая максимально эффективно использовать возможности вычислительных средств. Программист пишет программу не для ЭВМ, а для определенной модели. Таким образом, сложность задач, которые можно решать с использованием языка программирования, определяется уровнем абстракции при постановке задачи и возможностями модели, на которой основан язык программирования.

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

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

Данное определение показывает важные аспекты:

1) в структурном программировании основными элементами выступают алгоритмы; в объектно-ориентированном программировании основным элементом структурирования программ является объект;

2) объект представляет собой конкретное воплощение определенного класса – его экземпляр (instance of class);