С++ для начинающих



         

Композиция объектов - часть 3


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

    мы понимаем предоставление пользователю возможности выбрать один из подтипов DisplayManager в начале или в середине работы программы.

  • Конечно, маловероятно, что для каждого подобъекта ZooAnimal в нашем приложении будет нужен собственный подтип DisplayManager для отображения. Скорее всего мы ограничимся статическим членом в классе ZooAnimal, указывающим на объект DisplayManager.

    Упражнение 18.6

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

    (a) Queue : List              // очередь : список

    (b) EncryptedString : String  // зашифрованная строка : строка

    (c) Gif : FileFormat

    (d) Circle : Point            // окружность : точка

    (e) Dqueue : Queue, List

    (f) DrawableGeom : Geom, Canvas // рисуемая фигура : фигура, холст

    Упражнение 18.7

    Замените член IntArray в реализации PeekbackStack (см. раздел 18.3.1) на класс deque из стандартной библиотеки. Напишите небольшую программу для тестирования.

    Упражнение 18.8

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




    Содержание  Назад  Вперед