![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Ключевые концепции. [x]. К инварианту класса автоматически добавляются инварианты его родителей.
[x]. К инварианту класса автоматически добавляются инварианты его родителей. [x]. В подходе Проектирования по Контракту наследование, переопределение и динамическое связывание приводят к идее субподрядов. [x]. Повторное объявление подпрограммы (переопределение или создание реализации) может сохранить или ослабить предусловие, сохранить или усилить постусловие. [x]. Повторное объявление утверждений может использовать только require else (при объединении с предусловием связкой " или") и ensure then (при объединении с постусловием связкой " и"). Применение require/ensure запрещено. В отсутствие названных предложений подпрограмма сохраняет исходные утверждения. [x]. Универсальный класс GENERAL и допускающий настройку его наследник обеспечивают переопределяемые компоненты, представляющие общий интерес для всех создаваемых разработчиком классов. Класс NONE замыкает решетку наследования снизу. [x]. Заморозив компонент, можно гарантировать его вечную семантическую уникальность. [x]. Ограниченная универсальность дает возможность использовать только родовые параметры со специфическими свойствами. [x]. Попытка присваивания позволяет динамически проверить, принадлежит ли объект ожидаемому типу. Эта операция не должна использоваться как замена динамического связывания. [x]. Потомок вправе переопределять тип любой сущности (атрибута, результата функции, формального параметра подпрограммы). Повторное определение должно быть ковариантным - заменять исходные типы соответствующими, согласуясь с требованиями потомка. [x]. Закрепленные объявления (like anchor) - это важная часть системы типов, облегчающая применение ковариантной типизации и позволяющая отказаться от избыточных повторных объявлений. [x]. Наследование и скрытие информации - это независимые механизмы. Потомки могут скрывать экспортированные компоненты и экспортировать скрытые компоненты. [x]. Компонент, доступный самому классу, доступен и его потомкам.
Библиографические замечания
Иную точку зрения на взаимосвязь наследования и скрытия информации см. в [Snyder 1986].
Упражнения
У16.1 Наследование: простота и эффективность
Перепишите и упростите ранее созданную реализацию защищенного стека, сделав класс STACK3 потомком, а не клиентом STACK, чтобы избежать излишних обходных путей. (Подсказка: см. правила взаимодействия наследования и скрытия информации.)
|