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

Основной методологией разработки программного обеспечения АС до начала 90-х годов являлась процедурно-ориентированная методология [Леоненков ]. При этом программный код организовывался в виде множества процедур или алгоритмов.

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

Разработка больших систем потребовала декомпозиции процедур на более мелкие фрагменты. Отдельные части крупных процедур, автономно оформленные как единицы компиляции, были названы модулями. Модули, в свою очередь, содержали более мелкие процедуры и функции – особого вида небольшие процедуры со своим способом вызова и обязательным возвратом значения (результата выполнения процедуры). Были разработаны методы структурного программирования, которые помогали в процедурно-ориентированной методологии осуществлять разбиение всей программы на модули и более мелкие фрагменты – процедуры и функции (70-80е годы).

Со временем ситуация существенно изменилась. Реальная трудоемкость начальных этапов проектирования и программирования стала все больше превосходить плановую. Сроки разработки всё более сложного программного обеспечения стали затягиваться. Коллективные разработки стали типовым и сложным процессом, возникли серьезные трудности управления проектами в условиях динамически меняющихся требований заказчиков. Приходилось часто и в больших объемах менять коды программ. Плохо накапливался и использовался опыт программистов. Языки спецификаций программ были сложны и мало понятны обычному заказчику непрограммисту. Возникла настоятельная необходимость в изменении самой методологии программирования и проектирования. Основные принципы нового подхода к разработке программного обеспечения были сформулированы в середине 80-х в виде объектно-ориентированного программирования (ООП) [ ].

Фундаментальными понятиями ООП являются понятия класса и объекта.

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

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

Наследование - принцип, в соответствии с которым родительский класс (предок) передает все свои наборы свойств и поведение дочерним классам (потомкам). Дочерние классы называются производными классами (рис.1).

 
  Методология объектно-ориентированного программирования - student2.ru

Рис.1. Иерархия классов, полученная операцией обобщения

Фрагмент иерархии классов библиотеки VCL среды программирования Borland Delphi представлен на рис.2.

 
  Методология объектно-ориентированного программирования - student2.ru

Рис.2. Фрагмент иерархии классов библиотеки VCL Borland Delphi

Класс является дальнейшим расширением понятий структура (structure) и запись (record).

Инкапсуляция - сокрытие деталей внутреннего устройства классов от внешних для него объектов или пользователей. В некоторых языках модули делятся на 2 группы: интерфейс и реализация.

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

Использование объектов заранее подготовленных библиотечных классов с определёнными свойствами и методами позволило решить многие кризисные вопросы создания программного и информационного обеспечения сложных АС.

1.2. Методология объектно-ориентированного анализа и проектирования

Уже давно стало ясно, что анализ предметной области очень важен для успешного проектирования АС. Прежде, чем непосредственно генерировать структуру БД, необходимо построить концептуальную модель хранения данных в виде ER- или SHM-модели [ ]. Эта работа проводится совместно с экспертами, хорошо знающими предметную область.

Здесь могут помочь так называемые CRC-карточки, предложенные Баддом [ ] (рис.3). (см. Бадд Т. Объектно-ориентированное программирование в действии: Перевод с английского. – Спб: Питер, 1997. – 464с.)

Компонента <название> Описание обязанностей, выполняемых данной компонентой СПИСОК   <всех взаимодействующих с ней компонент>

Рис.3. CRC-карточка

CRC расшифровывается как Component, Responsibility, Collaborator (компонента, обязанность, взаимодействие ). Под компонентой понимается функционально самостоятельная часть системы, решающая одну или несколько задач (например, отдел маркетинга, прокатный стан, отдельные сотрудники и т. д.). Многие компоненты естественным образом преобразуются в классы и объекты программного и информационного обеспечения.

Выделение компонент предметной области – искусство системного аналитика или архитектора системы.

Для АС, рассматриваемой в виде информационной системы запросно-ответного типа, прежде всего надо составить перечень запросов и отчетов с формами документов и требованиями пользователей к виду результата (числа, текст, графика, мультимедиа и т.д.). Для каждого запроса и отчёта (выходного воздействия) следует определиться с алгоритмом

получения результата, а также составом и структурами данных, которые должны поступать

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

.

Наши рекомендации