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


C++ - часть 2


  • Скрытие информации, включая способность скрывать компоненты от собственных наследников.
  • Поддержка наследования. Первоначальные версии поддерживали только единичное наследование, но теперь язык включает множественное наследование. Дублируемое наследование не обладает покомпонентной гибкостью. (В лекции, посвященной множественному наследованию, отмечалась важность этого свойства.) Вместо этого, разделяется или дублируется весь набор методов дублируемых предков.
  • По умолчанию предлагается статическое связывание, для динамического связывания функция должна быть определена как виртуальная. Подход C++ к этому вопросу подробно обсуждался.
  • Понятие "чистой виртуальной функции" напоминает отложенные методы.
  • Введена более строгая типизация, чем в языке С, но все же разрешающая преобразования типа (кастинг).
  • Сборка мусора обычно отсутствует (из-за приведений типа и использования указателей для массивов и подобных структур), хотя доступны некоторые инструменты для надлежаще ограниченных программ.
  • Из-за отсутствия автоматического управления памятью введено понятие деструктора для явного удаления объектов (понятие, дополняющее понятие конструктора класса - процедуры создания).
  • Обработка исключений не входила в первоначальное определение, но теперь поддерживается большинством компиляторов.
  • Введена некоторая форма попытки присваивания - downcasting.
  • Введена универсальность - "шаблоны". У них два ограничения: отсутствует ограниченная универсальность, и при конкретизации шаблона велика нагрузка на работу во время компиляции (известная в С++ как проблема).
  • Разрешена перегрузка операторов (знаков операций).
  • Введена инструкция assert для отладки, но отсутствуют утверждения для поддержки Проектирования по Контракту (предусловия, постусловия, инварианты классов), соединенные с ОО-конструкциями.
  • Библиотеки, доступны от различных поставщиков, например библиотека MFC (Microsoft Foundation Classes).



Начало  Назад  Вперед



Книжный магазин