Теория и практика объектно-ориентированного программирования. Ноткин А.М. - 20 стр.

UptoLike

Составители: 

21
Лабораторная работа 3
ИЕРАРХИЯ ОБЪЕКТОВ И ГРУППА. ИТЕРАТОРЫ
Цель. Получить практические навыки создания объектов-групп и
использования методов-итераторов.
Основные теоретические сведения.
Абстрактный класс. Класс, который представляет абстрактную
концепцию, для которой не могут существовать объекты. Абстрактный
класс используется не для создания экземпляров, а только как интерфейс и
в качестве базы для других классов. Абстрактный класс пишется в предпо-
ложении, что его конкретные подклассы дополняют его структуру и пове-
дение, скорее всего,
реализовав абстрактные методы.
Полезно, чтобы корневой класс в иерархии классов был абстрактным
классом. Он должен иметь основные общие свойства со своими производ-
ными классами так, чтобы эти свойства наследовались из него, но сам не
может использоваться для объявления объектов. Вместо этого он исполь-
зуется для объявления указателей, которые могут иметь
доступ к объектам
наследуемых классов.
Абстрактный класс также обеспечивает интерфейс для изменений в
иерархии классов в целом. Если добавляются некоторые новые свойства,
которые применяются ко всем объектам иерархии, то их можно просто до-
бавить к абстрактному классу.
Абстрактный метод. Объявленный, но не реализованный метод в
абстрактном классе. Абстрактный метод
может рассматриваться как обоб-
щение переопределения. В обоих случаях поведение родительского класса
изменяется для потомка. Для абстрактного метода, однако, поведение про-
сто не определено. Любое поведение задается в производном классе.
Одно из преимуществ абстрактного метода является чисто концепту-
альным: программист может мысленно наделить нужным действием абст-
ракцию сколь угодно высокого
уровня. Например, для геометрических фи-
гур мы можем определить метод Draw, который их рисует: треугольник
TTriangle, окружность TCircle, квадрат TSquare. Мы определим аналогич-
ный метод и для абстрактного родительского класса TGraphObject. Однако
такой метод не может выполнять полезную работу, поскольку в классе
TGraphObject просто нет достаточной информации для рисования чего бы
то ни было. Тем не менее присутствие метода Draw позволяет связать
функциональность (рисование) только один раз с классом TGraphObject, а
не вводить три независимые концепции для подклассов TTriangle, TCircle,
TSquare.
                                   21

                  Лабораторная работа № 3
         ИЕРАРХИЯ ОБЪЕКТОВ И ГРУППА. ИТЕРАТОРЫ

     Цель. Получить практические навыки создания объектов-групп и
использования методов-итераторов.

      Основные теоретические сведения.
      •Абстрактный класс. Класс, который представляет абстрактную
концепцию, для которой не могут существовать объекты. Абстрактный
класс используется не для создания экземпляров, а только как интерфейс и
в качестве базы для других классов. Абстрактный класс пишется в предпо-
ложении, что его конкретные подклассы дополняют его структуру и пове-
дение, скорее всего, реализовав абстрактные методы.
      Полезно, чтобы корневой класс в иерархии классов был абстрактным
классом. Он должен иметь основные общие свойства со своими производ-
ными классами так, чтобы эти свойства наследовались из него, но сам не
может использоваться для объявления объектов. Вместо этого он исполь-
зуется для объявления указателей, которые могут иметь доступ к объектам
наследуемых классов.
      Абстрактный класс также обеспечивает интерфейс для изменений в
иерархии классов в целом. Если добавляются некоторые новые свойства,
которые применяются ко всем объектам иерархии, то их можно просто до-
бавить к абстрактному классу.
      • Абстрактный метод. Объявленный, но не реализованный метод в
абстрактном классе. Абстрактный метод может рассматриваться как обоб-
щение переопределения. В обоих случаях поведение родительского класса
изменяется для потомка. Для абстрактного метода, однако, поведение про-
сто не определено. Любое поведение задается в производном классе.
      Одно из преимуществ абстрактного метода является чисто концепту-
альным: программист может мысленно наделить нужным действием абст-
ракцию сколь угодно высокого уровня. Например, для геометрических фи-
гур мы можем определить метод Draw, который их рисует: треугольник
TTriangle, окружность TCircle, квадрат TSquare. Мы определим аналогич-
ный метод и для абстрактного родительского класса TGraphObject. Однако
такой метод не может выполнять полезную работу, поскольку в классе
TGraphObject просто нет достаточной информации для рисования чего бы
то ни было. Тем не менее присутствие метода Draw позволяет связать
функциональность (рисование) только один раз с классом TGraphObject, а
не вводить три независимые концепции для подклассов TTriangle, TCircle,
TSquare.