Зачем нужна такая гибкость?
Зачем нужна такая гибкость?
Стратегия экспорта, согласно которой каждый потомок класса имеет свою политику, хотя и усложняет проверку типов, но придает необходимую гибкость действиям разработчика.
Предпринимались и иные попытки. Так, отдельные объектные языки определяют не только то, будет ли компонент экспортирован клиентам класса, но и то, будет ли он доступен его потомкам. Преимущества этого подхода неочевидны. В частности:
[x]. мне не известно о публикации рекомендаций по применению этой возможности, неясно, когда компонент должен передаваться потомкам, а когда быть скрытым. Конструкции языка, за которыми нет ни малейшей теории, имеют весьма сомнительную ценность. (Для сравнения: правило, посвященное методологии скрытия информации, совершенно прозрачно: то, что принадлежит АТД, и надлежит экспортировать; прочее следует скрыть.)
[x]. механизмы ограничения порожденных классов, введенные в языке Simula и др., редко используются разработчиками.
При близком рассмотрении отсутствие ясных методологических установок не удивляет. Наследование является воплощением принципа Открыт-Закрыт: позволяя выбрать готовый класс, написанный вами или другим программистом вчера или 20 лет назад, и обнаружить, что с ним можно делать нечто полезное, что даже не предполагалось при его проектировании.
Позволить создателю класса определять, что могут и что не могут использовать потомки класса, - значит лишиться основного свойства наследования.
Пример классов CELL и TREE характерен: при разработке CELL его целью была лишь поддержка работоспособности LIST, а потому right и put_right служили в нем исключительно внутренним целям. И лишь позднее этим компонентам нашли новое применение в классе-потомке TREE. Не будь этой открытости, наследование почти полностью утратило бы свой шарм.
Если нет основы для принятия решения об экспорте компонентов потомкам, то еще более абсурдно пытаться догадаться, что потомки могут экспортировать своим клиентам. Единственная задача разработчика порожденного класса - предоставление своим клиентам как можно более удобного для них класса. Наследование - это лишь средство, которое позволяет быстрее добиться желаемого результата. Все правила ОО-игры определяются утверждениями и ограничениями типизации, - не более того. Найти полезный для клиентов потомка компонент предка - это большая удача, ну а то, как поступал предок с этим компонентом, - экспортировал ли он его, это дело предка и волнует потомка меньше всего.
В итоге, единственной стратегией, сочетающейся с принципиальной открытостью наследования, нам кажется та, что была описана выше: предоставить каждому разработчику возможность самостоятельно решать, что делать с компонентами предка, выбирая собственную политику экспорта в интересах своих клиентов.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Зачем нужна защита
Зачем нужна защита Для лучшего понимания того, к чему может привести состояние конкуренции, давайте рассмотрим примеры повсеместно встречающихся критических участков.В качестве первого примера рассмотрим ситуацию из реальной жизни; банкомат (который еще называют ATM,
Зачем нужна библиотека Ext Core
Зачем нужна библиотека Ext Core Но зачем нужна эта библиотека? Почему бы нам не работать напрямую с объектами Web-обозревателя, обращаясь к их свойствам и вызывая их методы? Почему, чтобы управлять содержимым Web-страницы, нужны дополнительные инструменты и дополнительные
Что такое сеть и зачем она нужна
Что такое сеть и зачем она нужна Еще десяток-другой лет назад никто даже понятия не имел, что такое сеть и зачем она нужна. Люди приобретали персональные компьютеры с одной целью – автоматизировать и ускорить требуемые вычисления. Таковыми считались различные операции:
Зачем нужна библиотека Ext Core
Зачем нужна библиотека Ext Core Но зачем нужна эта библиотека? Почему бы нам не работать напрямую с объектами Web-обозревателя, обращаясь к их свойствам и вызывая их методы? Почему, чтобы управлять содержимым Web-страницы, нужны дополнительные инструменты и дополнительные
Как посетить сайт конкурента анонимно и зачем нужна такая анонимность
Как посетить сайт конкурента анонимно и зачем нужна такая анонимность Конкурентная разведка, как мы уже говорили, требует соблюдения конфиденциальности во многих случаях работы с открытой информацией, в том числе при посещении сайта компании-противника.Грамотный
2.2.3. Зачем нужна контекстная реклама
2.2.3. Зачем нужна контекстная реклама В первую очередь, контекстная реклама призвана приводить целевых покупателей на сайты рекламодателей. Это может быть и продвижение товаров, услуг, повышение продаж, вывод нового продукта, и дополнение к офлайновым рекламным
Что же такое Excel и зачем нужна эта программа
Что же такое Excel и зачем нужна эта программа Excel – это мощнейший вычислительный инструмент, хранилище упорядоченных данных, средство для создания различных графиков, расписаний, диаграмм и т. д. Программа Excel может частично или даже полностью автоматизировать многие
Зачем Вам нужна PGP?
Зачем Вам нужна PGP? Вы можете планировать политическую кампанию, обсуждать ваши налоги, или заниматься разными незаконными делами. Или вы можете делать что-либо, чувствуя, что это не должно быть запрещено, однако является таковым. Что бы это ни было, вы не желаете, чтобы
2.10.1. Веб-камера — нужна иль не нужна?
2.10.1. Веб-камера — нужна иль не нужна? Сейчас много ноутбуков поставляются со встроенными веб-камерами. Зачем они? Веб-камеры полезны при организации видеоконференций — вы сможете видеть своего собеседника. Например, в той же Skype можно настроить веб-камеру и видеть друг
11.1. Что такое сеть и зачем она нужна
11.1. Что такое сеть и зачем она нужна Компьютер приобретается с определенной целью – производить необходимые вычисления. Вычисления – это различные операции, выполняемые комплектующими компьютера по желанию пользователя. Это может быть работа с офисными программами,
Зачем нужна система восстановления
Зачем нужна система восстановления Так уж получается, что Windows «глючит» чаще, чем выходят из строя комплектующие компьютера, поэтому вы чаще будете сталкиваться с программными ошибками, нежели с аппаратными. В этой главе мы поговорим о восстановлении Windows, рассмотрим
Зачем нужна фотокамера: конфликт реальности и магии на мегапиксельном поле боя Василий Щепетнёв
Зачем нужна фотокамера: конфликт реальности и магии на мегапиксельном поле боя Василий Щепетнёв Опубликовано 12 июля 2013 Редкий человек обходится сегодня без фотокамеры.Обыкновенно первый фотик дарят на день рождения, реже — на свадьбу или
От составителя Зачем нужна эта книга и кому она адресована?
От составителя Зачем нужна эта книга и кому она адресована? История отечественной компьютерной отрасли, как и многие другие действительные и мнимые достижения советской эпохи, стала в постсоветские годы очередной площадкой для попыток переписать историю, причем сразу