- •1.Предпосылки возникновения объектно-ориентированного подхода
- •2.Жизненный цикл программного обеспечения
- •2.1.Стандартные модели жизненного цикла
- •2.1.1.Этапы жизненного цикла
- •2.1.2.Модели жизненного цикла
- •2.2.Объектно-ориентированные модели жизненного цикла
- •2.3.Жизненный цикл uml ( Rational Objectory Process )
- •3.Концепции объектно-ориентированного подхода к разработке больших программных систем.
- •3.1.Инкапсуляция
- •3.2.Наследование
- •3.3.Полиморфизм
- •Вариант 1:
- •Вариант 2:
- •3.4.Объекты и экземпляры объектов
- •3.5.Варианты наследования
- •4.Достоинства и недостатки объектно-ориентированного подхода
- •4.1.Преимущества объектно-ориентированного подхода
- •4.2.Недостатки объектно-ориентированного подхода
- •5.Объектно-ориентированный анализ
- •Ооа состоит из пяти главных шагов:
- •5.1.Схема предметной области
- •5.2.Схема объектов
- •5.3.Схема структуры
- •5.4.Схема атрибутов
- •5.5.Схема методов
- •5.6.Контроль корректности
- •Для каждого объекта в схеме объектов:
- •Для структуры:
- •6.Объектно-ориентированное проектирование
- •6.1.Диаграмма классов
- •6.2.Категории классов
- •6.3.Шаблоны для диаграммы классов
- •6.4.Диаграмма объектов
- •6.5.Диаграмма переходов
- •7.Универсальный язык моделирования ( Unified Modeling Language uml )
- •7.1.Пакеты, как средство работы с большими проектами
- •7.2.Диаграммы классов и объектов
- •7.2.1.Классы
- •7.2.2.Интерфейсы
- •7.2.3.Отношения между классами Двухместная связь ( Binary Association )
- •Класс, описывающий связь
- •Композиция, Сборка.
- •Обобщение
- •Зависимость ( Dependency )
- •7.2.4.Пример диаграммы классов
- •7.3.Диаграммы использования
- •Диаграмма состоит из следующих элементов:
- •Выделены следующие виды связей:
- •7.4.Диаграммы последовательностей
- •7.5.Диаграммы сотрудничества
- •7.6.Диаграммы состояний
- •7.6.1.Состояния
- •7.6.2.События
- •7.6.3.Простые переходы между состояниями
- •7.6.4.Составные переходы между состояниями
- •7.6.5.Вложенные автоматы
- •7.7.Диаграммы действий
- •7.7.5.Отношения между действиями и объектами
- •7.7.6.Специальные символы
- •7.8.Диаграммы реализации
- •7.8.1.Диаграммы компонентов
- •7.8.2.Диаграммы развертывания
- •8.Стиль разработки объектно-ориентированных проектов
- •8.1.Общие правила оформления классов
- •8.1.1.Составление атрибутов
- •8.1.2.Необходимое и достаточное количество свойств
- •8.1.3.Конструкторы
- •8.1.4.Независимость от системных библиотек и реализации
- •8.2.Наследование
- •8.2.1.Наследование атрибутов
- •8.2.2.Наследование методов поведения
- •8.3.Необходимые и достаточные свойства классов
- •8.4.Наследование и использование
- •9.Инструментальные средства объектно-ориентированной разработки программных систем
- •9.1.Обзор объектно-ориентированных инструментальных средств
- •9.2.Объектно-ориентированное case средство Rational Rose
- •9.2.1.Принципы разработки программных систем в Rational Rose
- •9.2.2.Проектирование программных средств
- •9.2.3.Построение и сопровождение системы
- •9.2.4.Поддержка этапов разработки
- •9.2.5.Достоинства и недостатки Rational Rose
- •10.Тестирование объектно-ориентированных программных систем
- •10.1.Особенности тестирования объектно-ориентированных программных систем
- •10.2.Методы тестирования объектно-ориентированных систем
4.Достоинства и недостатки объектно-ориентированного подхода
Необходимо явно разделять две категории объектно-ориентированного подхода: объектно-ориентированное программирование (т.е. методика составления текстов программ на объектно-ориентированном языке ) и объектно-ориентированный анализ и проектирование (т.е. создание проектов систем и описание предметной области в терминах объектно-ориентированного подхода - классов, атрибутов, методов ).
Сегодня ни у кого не возникает сомнения в том, что объектно-ориентированное программирование является наиболее прогрессивной технологией разработки программных систем. Преимущества этого подхода рассматриваются ниже.
Объектно-ориентированный анализ, как средство описания предметной области и объектно-ориентированное проектирование как способ создания высокоуровневых проектов сегодня подвергается критике. Одним из результатов этой критики является создание Универсального Языка Моделирования - UML ( Unified Modeling Language ), который подробно рассматривается в данном пособии. В рамках данного пособия, которое посвящено в основном методам проектирования объектно-ориентированных систем рассматриваются именно достоинства таких систем, т.е. проекты являются уже техническими, они описывают не структуру предметной области, а структуру объектно-ориентированной программы. Опыт авторов данного пособия показывает, что создание крупных проектов (таких для которых важнейшей задачей является описание предметной области, и для которых невозможно найти человека, понимающего эту предметную область в целом ) требует использования традиционных технологий, т.к. они более понятны большому кругу неспециалистов и они более адекватно рассматривают именно проблемы предметной области.
4.1.Преимущества объектно-ориентированного подхода
Сокращение числа возможных ошибок. Типичные ошибки при решении различных задач
Несогласованные параметры подпрограмм
Часто может наблюдаться передача в подпрограмму разных параметров, несогласованных друг с другом. Пусть есть подпрограмма, выводящая на экран матрицу А размером N x M. Ее заголовок может быть таким:
procedure ShowMatrix( A : TMatrix; N,M : integer );
при вызове подпрограммы, за счет ошибки программиста, N и M могут не соответствовать реальному размеру матрицы. Эта задача решается за счет инкапсуляции, когда N и M включаются в качестве атрибутов в матрицу.
Несогласованное изменение атрибутов
Пусть у матрицы есть поля данных, характеризующих текущий размер матрицы. Если метод вставки элемента не учитывает возможное изменение размера матрицы, то может сложиться такая ситуация, когда содержимое матрицы и поля данных N M не будут соответствовать друг другу.
Повторное использование. Предполагается какой-либо вариант многократного использования уже существующего проекта или его части в новом проекте. Повторное использование можно разделить на две категории:
повторного использования существующего кода для решения модифицированной задачи
повторное использование и для решения других задач в данной предметной области
В обоих случаях объектно-ориентированный подход дает преимущества. За счет использования классов легко модифицировать существующие элементы без изменения уже готовых.
