Основы объектно-ориентированного программирования
0e1cc9b4

Ключевые концепции


  • К инварианту класса автоматически добавляются инварианты его родителей.
  • В подходе Проектирования по Контракту наследование, переопределение и динамическое связывание приводят к идее субподрядов.
  • Повторное объявление подпрограммы (переопределение или создание реализации) может сохранить или ослабить предусловие, сохранить или усилить постусловие.
  • Повторное объявление утверждений может использовать только require else (при объединении с предусловием связкой "или") и ensure then (при объединении с постусловием связкой "и"). Применение require/ensure запрещено. В отсутствие названных предложений подпрограмма сохраняет исходные утверждения.
  • Универсальный класс GENERAL и допускающий настройку его наследник обеспечивают переопределяемые компоненты, представляющие общий интерес для всех создаваемых разработчиком классов. Класс NONE замыкает решетку наследования снизу.
  • Заморозив компонент, можно гарантировать его вечную семантическую уникальность.
  • Ограниченная универсальность дает возможность использовать только родовые параметры со специфическими свойствами.
  • Попытка присваивания позволяет динамически проверить, принадлежит ли объект ожидаемому типу. Эта операция не должна использоваться как замена динамического связывания.
  • Потомок вправе переопределять тип любой сущности (атрибута, результата функции, формального параметра подпрограммы). Повторное определение должно быть ковариантным - заменять исходные типы соответствующими, согласуясь с требованиями потомка.
  • Закрепленные объявления (like anchor) - это важная часть системы типов, облегчающая применение ковариантной типизации и позволяющая отказаться от избыточных повторных объявлений.
  • Наследование и скрытие информации - это независимые механизмы. Потомки могут скрывать экспортированные компоненты и экспортировать скрытые компоненты.
  • Компонент, доступный самому классу, доступен и его потомкам.



Содержание раздела