Здавалка
Главная | Обратная связь

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



Предпосылки возникновения объектно-ориентированного подхода

Рассмотрим тенденцию развития какого-либо программного продукта за последние 15 лет. примера, компиляторPascal фирмы Borland.

1984 г версии 3.0, дистрибутив 37 Кб вместе со всеми необходимыми библиотеками (включая возможность работы с графикой).

Delphi 3.0, дистрибутив 100 Мб.

Т.е. размер программы вырос примерно в 2700 раз за 15 лет.

особенности:

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

Сроки разработки сверхбольших программных систем сократились до одного года.

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

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

Этапы жизненного цикла ПО

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

 

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

объектно-ориентированный анализ - методология разработки систем, предложенная Йорденом,

объектно-ориентированное проектирование, объектно-ориентированное программирование, реализованное в многочисленных компиляторах C++, Object Pascal, Borland Pascal, Smalltalk.

Основополагающие принципы:

инкапсуляция - такое свойство при котором объекты содержат описание атрибутов и действий одновременно,

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

полиморфизм - такое свойство объектов при котором действие с одинаковыми именами вызывают различное поведение для различных объектов.

Инкапсуляция

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

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

Рассмотрим характерное описание объекта:

объект:

точка

атрибуты:

позиция на плоскости

методы:

создать

удалить

переместить в новую позицию

отобразить

стереть

объект:

прибор

атрибуты:

показания

методы:

снять показания

 

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

Мы не говорим "переместить (объект)", а говорим "объект переместись".

Наследование

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

Рис. Пример наследования свойств вида "является".

Наследование вида "является" предполагает, что объект-наследник полностью включает в себя все свойства объекта-родителя.

Другой вид наследования - сборочный, вида "состоит-из" можно продемонстрировать на примере автомобиля

Рис.Пример наследования свойств вида "состоит - из"

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

Пусть имеется два объекта:

объект:

геометрическая фигура

атрибуты:

позиция на плоскости

методы:

создать

удалить

переместить в новую позицию

отобразить

стереть

объект:

прямоугольник

атрибуты:

высота

ширина

методы:

создать

отобразить

Пусть объект прямоугольник является наследником объекта геометрическая фигура. Тогда прямоугольник имеет три атрибута: позиция, высота, ширина и пять методов поведения.

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

Полиморфизм

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.