Сибирский государственный университет путей сообщения
Теория Инструментарий технологии программирования Создание программного продукта18.3 Объектно-ориентированное проектирование

18.3. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОЕКТИРОВАНИЕ

ОСНОВНЫЕ ПОНЯТИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОЕКТИРОВАНИЯ

Метод объектно-ориентированного проектирования основывается на:

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

Объектно-ориентированный подход использует следующие базовые понятия:

  • объект;
  • свойство объекта;
  • метод обработки;
  • событие;
  • класс объектов.

Объект - совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств).

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

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

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

Например, объект можно представить перечислением присущих ему свойств:

ОБЪЕКТ_А (свойство-1, свойство-2,...., свойство-k).

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

ОБЪЕКТО_В (...свойство-n, свойство-m,...свойство-r,...) ОБЪЕКТ_С (...свойство-n,.., свойство-r,...).

Одним из свойств объекта являются метод его обработки.

Метод - программа действий над объектом или его свойствами.

Метод рассматривается как программный код, связанный с определенным объектом; осуществляет преобразование свойств, изменяет поведение объекта.

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

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

Событие - изменение состояния объекта.

Внешние события генерируются пользователем (например, клавиатурный ввод или нажатие кнопки мыши, выбор пункта меню, запуск макроса); внутренние события генерируются системой.

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

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

Один объект может выступать объединением вложенных в него по иерархии других объектов.

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

 

Рис. 18.5. Соотношение основных понятий объектно-ориентированного подхода

В объектно-ориентированном программировании используется следующий формат записи работы с объектами:

ОБЪЕКТ.МЕТОД ОБЪЕКТ.СВОЙСТВО.МЕТОД

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

МЕТОДИКА ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОЕКТИРОВАНИЯ

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

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

Инкапсуляция означает сочетание структур данных с методами их обработки в абстрактных типах данных - классах объектов.

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

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

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

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

В процессе объектно-ориентированного анализа :

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

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

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