Правило переименования
Правило переименования
В этом разделе мы не введем никаких новых понятий, а лишь точнее сформулируем известные правила и приведем пример, призванный пояснить сказанное.
Начнем с запрета возникновения конфликта имен:
Определение: финальное имя
Финальным именем компонента класса является:
[x]. Для непосредственного компонента (объявленного в самом классе) - имя, под которым он объявлен.
[x]. Для наследуемого компонента без переименования - финальное имя компонента (рекурсивно) в том родительском классе, от которого оно унаследовано.
[x]. Для переименованного компонента - имя, полученное при переименовании.
Правило одного имени
Разные эффективные компоненты одного класса не могут иметь одно и то же финальное имя.
Конфликт имен происходит в том случае, когда два разных по сути компонента, оба эффективные (реализованные), имеют одно финальное имя. Такой конфликт делает класс некорректным, однако ситуацию легко исправить, добавив надлежащее предложение переименования.
Ключевым в тексте правила является слово "разные". Если под одним именем мы наследуем от родителей компонентов их общего предка, действует принцип совместного использования компонентов: наследуется один компонент, и конфликта имен не возникает.
Запрет на дублирование имен касается лишь эффективных компонентов. Если один или более компонентов с омонимичными именами являются отложенными, их можно фактически слить воедино, поскольку отсутствует несовместимость реализаций. Подробнее мы поговорим об этом чуть ниже.
Приведенные правила просты и интуитивны. Чтобы в последний раз нам убедиться в их правильном понимании, построим простой пример, демонстрирующий допустимые и недопустимые варианты наследования.
Рис. 15.20. Два варианта наследования
class A feature
this_one_OK: INTEGER
end
class B inherit A feature
portends_trouble: REAL
end
class C inherit A feature
portends_trouble: CHARACTER
end
class D inherit
-- Это неправильный вариант!
B
C
end
Класс D наследует this_one_OK дважды, один раз от B, другой раз - от C. Конфликта имен не возникает, поскольку данный компонент будет использоваться совместно. На самом деле, это - один компонент предка A.
Два компонента portend_trouble ("предвещающие беду") заслуженно получили такое имя. Они различны, потому их появление в D ведет к конфликту имен, делая класс некорректным. (У них разные типы, но и одинаковые типы никак не повлияли бы на ход нашего обсуждения.)
Переименовав один из компонентов, мы с легкостью сделаем D корректным:
class D inherit
-- Этот вариант класса теперь полностью корректен.
B
rename portends_trouble as does_not_portend_trouble_any_more end
C
end
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Общее правило
Общее правило Следующий шаг – написать общее правило, которое абсолютно спозиционирует каждое изображение внутри элемента списка и, соответственно, поверх изображения Луны.Каждый элемент будет спозиционирован по-своему в зависимости от объекта; также будут
7.5. Правило @media
7.5. Правило @media Правило @media позволяет задавать правила CSS для различных устройств в пределах одной таблицы стилей, разделенных запятыми. Иными словами, вы можете задать для одного и того же элемента один размер шрифта для печати, а другой для просмотра на
7.7. Правило @import
7.7. Правило @import Правило @import позволяет импортировать правила стилей из других таблиц стилей. Массив правил @import должен предшествовать всем другим правилам в таблице стилей. После ключевого слова @import должен следовать URL-адрес таблицы стилей, которую необходимо
Правило большинства
Правило большинства При планировании сайта исходите из того, что ваш клиент – начинающий пользователь, а не компьютерный гений. В этом и заключается правило большинства.Компьютерный гений при покупке товара вообще не обратит внимания на удобство сайта, так что его
4.2.3. Правило SPOT
4.2.3. Правило SPOT В книге "The Pragmatic Programmer" формулируется правило для одного частного вида ортогональности, который является особенно важным. Это правило "не повторяйтесь": внутри системы каждый блок знаний должен иметь единственное, недвусмысленное и надежное представление.
Правило 55: Познакомьтесь с Boost
Правило 55: Познакомьтесь с Boost Вы ищете высококачественные библиотеки с открытым кодом, независимые от платформ и компиляторов? Boost к вашим услугам. Вы хотели бы присоединиться к сообществу амбициозных, талантливых программистов на C++, работающих в русле современных
4.2.3. Правило SPOT
4.2.3. Правило SPOT В книге "The Pragmatic Programmer" формулируется правило для одного частного вида ортогональности, который является особенно важным. Это правило "не повторяйтесь": внутри системы каждый блок знаний должен иметь единственное, недвусмысленное и надежное представление.
3. Унарная операция переименования
3. Унарная операция переименования И последняя унарная операция, которую мы рассмотрим, – это операция переименования атрибутов. Если говорить об отношении как о таблице, то операция переименования нужна для того, чтобы поменять названия всех или некоторых
3. Операция переименования.
3. Операция переименования. Операция переименования атрибутов на языке структурированных запросов осуществляется довольно просто. А именно воплощается в действительность следующим алгоритмом:1) в списке имен атрибутов фразы Select перечисляются те атрибуты, которые
Пример A-3. rn: Очень простая утилита для переименования файлов
Пример A-3. rn: Очень простая утилита для переименования файлов Этот сценарий является модификацией Пример 12-15.#! /bin/bash## Очень простая утилита для переименования файлов## Утилита "ren", автор Vladimir Lanin (lanin@csd2.nyu.edu),#+ выполняет эти же действия много лучше.ARGS=2E_BADARGS=65ONE=1 #
Правило третей
Правило третей Правило третей – это упрощенный вариант правила золотого сечения. Примечание Чтобы получить золотое сечение отрезка, его разбивают на две части таким образом, что соотношение его меньшей части к большей равно соотношению большей части ко всему отрезку.
Правило типизации
Правило типизации Правило типизации, делающее допустимым первый набор и недопустимым второй, интуитивно понятно, но его надо уточнить.Вначале рассмотрим обычные, не родовые классы. Пусть C такой класс. Рассмотрим объявление его компонента, не использующее, естественно,
Результат переименования
Результат переименования Убедимся, что нам понятен результат этого действия. Пусть класс SANTA_BARBARA имеет вид (оба унаследованных компонента foo в нем переименованы): Рис. 15.13. Устранение конфликта имен(Обратите внимание на графическое обозначение операции смены имен.)
Правило языка
Правило языка Правило Утверждений Переобъявления, так как оно сформулировано, является концептуальным руководством. Как преобразовать его в безопасное и проверяемое правило языка?В принципе, чтобы убедиться в том, что старые предусловия влекут новые, а новые
Глава 23. Правило 20 на 80
Глава 23. Правило 20 на 80 Полная отдача от ХР получается только тогда, когда в силу вступают все методики. Многие практики можно вводить в силу постепенно, однако если все они введены в действие, общий эффект от их использования равен произведению между ними.Разработчики