Книга: Основы объектно-ориентированного программирования
Выяснение типа объекта в период выполнения
Выяснение типа объекта в период выполнения
Разработчики ОО-ПО вскоре вырабатывают здоровую неприязнь к любому стилю вычислений, основанному на явном выборе между различными типами объекта. Полиморфизм и динамическое связывание намного предпочтительнее. Однако в некоторых случаях объект приходит извне, так что автор ПО не имеет возможности с определенностью предсказать его тип. В частности, это случается, если объект извлекается из внешних хранилищ, получен по сети или передан некоторой другой системой.
Тогда ПО нуждается в механизме, обеспечивающем безопасный способ доступа к объекту без нарушения ограничений статической типизации. Такой механизм должен проектироваться с большой аккуратностью, так чтобы не утратить пользы от полиморфизма и динамического связывания.
Операция попытка присваивания (assignment attempt) удовлетворяет этим требованиям. Это условная операция: она пытается присоединить объект к сущности; если при выполнении операции тип объекта соответствует типу сущности, то она действует как нормальное присваивание; в противном случае сущность получает специальное значение void. Итак, можно управлять объектами, тип которых не известен наверняка, не нарушая безопасности системы типов.
Необходимо иметь возможность определять во время выполнения, соответствует ли тип объекта статически заданному типу.
- Бесшовность (seamlessness)
- Классы
- Утверждения (Assertions)
- Классы как модули
- Классы как типы
- Вычисления, основанные на компонентах
- Скрытие информации (information hiding)
- Обработка исключений (Exception handling)
- Статическая типизация (static typing)
- Универсальность (genericity)
- Единичное наследование (single inheritance)
- Множественное наследование (Multiple inheritance)
- Дублируемое наследование (Repeated inheritance)
- Ограниченная универсальность (Constrained genericity)
- Переопределение (redefinition)
- Полиморфизм
- Динамическое связывание
- Выяснение типа объекта в период выполнения
- Отложенные (deferred) свойства и классы
- Управление памятью (memory management) и сборка мусора (garbage collection)
- Права для выполнения резервного копирования
- Практическая работа 53. Запуск Access. Работа с объектами базы данных
- Упражнения для самостоятельного выполнения
- Использование CAST() с типами дата
- 1.4.1. Кодирование во время выполнения
- Перегрузка методов с несколькими параметрами типа
- Создание столбцов и работа с типами содержимого
- Основания для выполнения проекта
- Полиморфизм на этапе выполнения
- Пропуск параметров типа
- Запуск сценариев на удаленных машинах. Контроль за ходом выполнения таких сценариев
- 5.2.3. Действия с объектами Numbers