Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лек_1_слайды_об_ор_проект.doc
Скачиваний:
1
Добавлен:
17.11.2019
Размер:
124.93 Кб
Скачать

Полиморфизм

    Полиморфизм предполагает возможность одинакового именования разных действий.Эта особенность имеет два аспекта:

 возможность одинакового именования статических методов

 возможность одинакового именования динамических методов.

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

    Геометрическая фигура. нарисовать или

    Прямоугольник. нарисовать.

   Это пример статического полиморфизма. Его реализовать и осмыслить легко за счет того, что вызов каждого метода предваряется именем объекта.

    Рассмотрим теперь метод переместить для геометрической фигуры. Предположим, что этот метод должен выполнять перемещение изображения объекта по плоскости. Его реализация на смысловом уровне может быть такой:

    1. стереть объект в текущей позиции,

    2. изменить позицию объекта,

    3. нарисовать объект в текущей позиции.

    Действия 1 и 3 реализуются с помощью методов стереть и нарисовать, а действие 2 - с помощью присвоения нового значения.

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

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

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

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

Объекты и экземпляры объектов

    Под объектами понимают некоторую абстрактную сущность, заданную набором имен атрибутов и имен методов поведения.

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

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

    а) объект не может иметь экземпляров (имеет 0 экземпляров)

    б) объект может иметь только один экземпляр в рамках данной задачи

    в) объект может иметь много экземпляров

    Примером отношений являются:

    а) объект млекопитающее не может иметь экземпляров, т.к. любое реальное млекопитающее является экземпляром объекта-потомка от млекопитающего.

    б) объект "президент России" может иметь только один экземпляр в течение некоторого периода времени.

    в) объект ястерб-тетеревятник имеет множество экземпляров.

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

 Варианты наследования

    Использование наследования обычно вызвано необходимостью достичь одну из следующих целей:

  1. Построение принципиально нового объекта, базирующегося на свойствах существующего.

  2. Расширение и изменение функциональности имеющегося объекта.

    В первом случае, примером может являться построения объектов "Прямоугольник", "Ромб", "Ёллипс", на основе объекта "Геометрическая фигура", а иллюстрацией для второго пункта является создание объекта "Прямоугольник с утолщенной линией", путем модификации объекта "Прямоугольник".

Достоинства и недостатки объектно-ориентированного подхода

 Преимущества объектно-ориентированного подхода :Сокращение числа возможных ошибок.    Несогласованные параметры подпрограмм; передача в подпрограмму разных параметров, несогласованных друг с другом; несогласованное изменение атрибутов; Повторное использование. 

Недостатки объектно-ориентированного подхода:  Усложнение методологии. Сложность реализации. 

 Объектно-ориентированный анализ

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

    ООА состоит из пяти главных шагов:

1. определение предметной области,

2. определение объектов предметной области,

3. определение структуры объектов за счет создания отношений "состоит-из" и "является",

4. определение атрибутов объектов,

5. определение сервиса объектов (методов поведения) и взаимодействий

Объектно-ориентированное проектирование

    В процессе объектно-ориентированного проектирования решаются следующие задачи:

  • выбор классов и определение взаимосвязей между ними,

  • определение механизмов взаимодействия объектов,

  • выбор места объявления классов и объектов,

  • распределение вычислительных процессов между исполнителями (процессорами) и методы управления процессами.

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

  • диаграмма классов,

  • диаграмма объектов,

  •  диаграмма модулей,

  •  диаграмма процессов,

  •  диаграмма переходов,

  • временная диаграмма.

Диаграмма классов

    Диаграмма классов включает следующие виды компонентов:

  • классы,

  • иерархия наследования классов,

  • утилиты классов.

    Классы понимаются так, как указано выше. Графическое обозначения класса содержит его имя и имеет вид, представленный на рис.

   Рис. Графическое обозначения класса.

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

    Таблица 6.2. Отношения между классами в ООП

    Отношение наследования в ООП - это отношение вида "является", в то время как отношение вида "состоит-из" описывается отношениями

    а) использование в интерфейсной части класса.

    б) использование в реализации класса.

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

    Для каждого вида отношений может быть построена собственная диаграмма.

    Рассмотрим пример проектирования классов для описания геометрических фигур.

    Диаграмма наследования для геометрических фигур.

    Рис.Диаграмма классов для геометрических фигур.