Оценка

Оценка

Прежде чем мы сведем воедино все, что узнали о ковариантности и скрытии потомком, вспомним еще раз о том, что нарушения корректности систем возникают действительно редко. Наиболее важные свойства статической ОО-типизации были обобщены в начале лекции. Этот впечатляющий ряд механизмов работы с типами совместно с проверкой классовой корректности, открывает дорогу к безопасному и гибкому методу конструирования ПО.

Мы видели три решения проблемы ковариантности, два из которых затронули и вопросы ограничения экспорта. Какое же из них правильное?

На этот вопрос нет окончательного ответа. Следствия коварного взаимодействия ОО-типизации и полиморфизма изучены не так хорошо, как вопросы, изложенные в предыдущих лекциях. В последние годы появились многочисленные публикации по этой теме, ссылки на которые приведены в библиографии в конце лекции. Кроме того, я надеюсь, что в настоящей лекции мне удалось представить элементы окончательного решения или хотя бы к нему приблизиться.

Глобальный анализ кажется непрактичным из-за полной проверки всей системы. Тем не менее, он помог нам лучше понять проблему.

Решение на основе Закрепления чрезвычайно привлекательно. Оно простое, интуитивно понятное, удобное в реализации. Тем сильнее мы должны сожалеть о невозможности поддержки в нем ряда ключевых требований ОО-метода, отраженных в принципе Открыт-Закрыт. Если бы мы и впрямь обладали прекрасной интуицией, то закрепление стало бы великолепным решением, но какой разработчик решится утверждать это, или, тем более, признать, что такой интуицией обладали авторы библиотечных классов, наследуемых в его проекте?

Это предположение сужает сферу применения многих опубликованных методов, в том числе, основанных на типовых переменных. Если бы мы были уверены в том, что разработчик всегда заранее знает о будущих изменениях типов, задача бы упростилась в теоретическом плане, но из-за ошибочности гипотезы она не имеет практической ценности.

Если от закрепления мы вынуждены отказаться, то наиболее подходящим кажется Кэтколл-решение, достаточно легко объяснимое и применимое на практике. Его пессимизм не должен исключать полезные комбинации операторов. В случае, когда полиморфный кэтколл порожден "легитимным" оператором, всегда можно безопасно допустить его, введением попытки присваивания. Тем самым ряд проверок можно перенести на время выполнения программы. Однако количество таких случаев должно быть предельно мало.

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Что такое «оценка»?

Из книги автора

Что такое «оценка»? Проблема в том, что оценки можно рассматривать по-разному. Бизнес любит рассматривать их как обязательства. Разработчики предпочитают рассматривать оценки как предположения. Между этими точками зрения существуют принципиальные


Оценка

Из книги автора

Оценка Оценка, прежде всего, является предположением. Она не подразумевает никаких обязательств. Вы ничего не обещаете. Нарушение оценки ни в коей мере не повредит вашей репутации. Мы выдаем оценки, прежде всего, потому, что мы не знаем, сколько времени займет работа.К


Аффинная оценка

Из книги автора

Аффинная оценка Несколько лет назад Лоуэлл Линдстром показал мне необычную разновидность широкополосного дельфийского метода. Я довольно успешно применял его с разными заказчиками и группами.Все задачи записываются на картах без каких-либо оценок. Экспертная группа


Оценка эха и шума

Из книги автора

Оценка эха и шума Разработчики Skype заинтересованы в оценке качества предоставляемых услуг связи. Поэтому при тест-звонке роботу Skype (более подробно тест-звонок описан в главе 4) предлагается ответить на вопросы по качеству связи и отправить соответствующее сообщение.Для


Оценка контента

Из книги автора

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


5.3.3.3 Оценка

Из книги автора

5.3.3.3 Оценка Оценка является последним этапом процесса оценивания программного обеспечения, на котором обобщается множество установленных уровней. Результатом является заключение о качестве программной продукции. Затем обобщенное качество сравнивается с другими


Оценка по физподготовке

Из книги автора

Оценка по физподготовке Олег Андреевич Волков - доктор физ.-мат. наук, специалист в области физики полупроводников. Он согласился поделиться мыслями о перспективах и возможных направлениях прогресса вычислительной техники.Нет ли у вас ощущения некоторого «застоя» в


ГЛАВА 2 Оценка ERP-систем

Из книги автора

ГЛАВА 2 Оценка ERP-систем В этой главе представлены критерии и концепции оценки ERP-системы, наиболее соответствующей требованиям компании. Сначала менеджеры должны принять продуманное решение по желаемым функциональным требованиям, а также по характерным особенностям и


Пакеты: оценка

Из книги автора

Пакеты: оценка По сравнению с подпрограммами, механизм пакетов приводит к существенному совершенствованию разбиения системы ПО на абстрактные модули. Собрать нужные компоненты "под одной крышей" крайне полезно как для поставщиков, так и для клиентов:[x]. Автор


Оценка

Из книги автора

Оценка Приведенные примеры наглядно проиллюстрировали мощь и силу механизма множественного наследования. Необходимость его применения подтверждена опытом построения универсальных библиотек [M 1994a].Как объединить две абстракции, если множественное наследование


Оценка

Из книги автора

Оценка Прежде чем мы сведем воедино все, что узнали о ковариантности и скрытии потомком, вспомним еще раз о том, что нарушения корректности систем возникают действительно редко. Наиболее важные свойства статической ОО-типизации были обобщены в начале лекции. Этот