The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

8.6 Выводы

8.6 Выводы

Предыдущая  Содержание  Следующая V*D*V

void * очень много позволяющий тип, к которому мы вынуждены прибегать, чтобы создать полиморфные методы и, в частности, наш механизм выбора динамически компонуемых методов. Из-за полиморфизма типы объектов должны проверяться во времени выполнения, то есть когда объект появляется как параметр метода.

Объекты указывают на уникальные описания классов; поэтому их типы могут быть проверены сравнением их указателей описаний классов с описаниями классов, известных в проекте. Для этого мы предоставили три новых метода: isA() проверяет, что объект принадлежит определённому классу, isOf() истина, если объект принадлежит классу или одному из его подклассов, а cast() останавливает работу вызывающей программы, если объект не может быть обработан как элемент определённого класса.

В качестве стандарта кодирования мы требуем, чтобы cast() использовался каждый раз, когда объектный указатель должен быть разыменован. В частности, методы со статической компоновкой должны использовать cast() для всех их объектных параметров, селекторы используют его для всех объектных параметрах не из их собственного класса, а методы с динамической компоновкой используют его для всех объектных параметров, которые утверждают, что находятся в их собственном классе. Значения результатов не должны проверяться их поставщиками, потому что потребитель может разыменовать их снова только при помощи cast().

ooc обеспечивает значительную помощь в осуществлении этого стандарта кодирования, потому что генерирует селекторы и предоставляет оператор %casts для импорта параметров. %casts генерирует необходимые вызовы к cast() и должен использоваться последним в декларациях локальных переменных метода.

cast() не может подтвердить корректность данных. Однако, мы пытаемся сделать так, чтобы cast() было довольно трудно или невозможно обмануть. Весь смысл безопасного программирования состоит в том, чтобы признать, что программисты могут допускать ошибки и ограничить период в течение которого ошибка может оставаться нераспознанной. cast() разработан, чтобы установить равновесие между эффективностью для корректных программ и (ранним) обнаружением ошибок.

 

 

Предыдущая  Содержание  Следующая