А если родители класса разные компоненты назвали одним именем? Возникает противоречие, поскольку согласно установленному ранее правилу запрещена перегрузка имен: в классе имя компонента обозначает только один компонент. Это правило не должно нарушаться при наличии родителей класса. Рассмотрим пример:
class SANTA_BARBARA inherit
LONDON
NEW_YORK
feature
...
end-- class SANTA_BARBARA
Что предпринять, если
Ни при каких обстоятельствах нельзя нарушить запрет перегрузки имен компонентов. Как следствие, класс
Вспомним класс |
Что делать? Исходный код классов
Всегда ошибочно обвинять в грехах своих родителей. Проблема конфликта имен возникла в самом классе. В нем должно найтись и решение.
Класс, наследующий от разных родителей разные компоненты с идентичным именем, не будет корректен, пока мы не включим в его декларацию наследования одно или несколько предложений переименования rename. Каждое из них назначает новое локальное имя одному или нескольким унаследованным компонентам. Например:
class SANTA_BARBARA inherit
LONDON
rename foo as fog end
NEW_YORK
feature
...
end
Как внутри
Этого достаточно для устранения конфликта (если других совпадений нет, а класс
class SANTA_BARBARA inherit
LONDON
rename foo as fog end
NEW_YORK
rename foo as zoo end
feature
...
end
Предложение rename следует за указанием имени родителя и предшествует любым выражениям redefine, если таковые имеются. Можно переименовать и несколько компонентов, как в случае:
class TREE [G] inherit
CELL [G]
rename item as node_item, put as put_right end
где устраняется конфликт между одноименными компонентами
Результат переименования
Убедимся, что нам понятен результат этого действия. Пусть класс
Рис. 15.13. Устранение конфликта имен
(Обратите внимание на графическое обозначение операции смены имен.) Пусть также имеются сущности трех видов:
l: LONDON; n: NEW_YORK; s: SANTA_BARBARA
Вызовы
В то же время, следующие вызовы некорректны:
[x].
[x].
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии