Переименование

Переименование

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

[x]. требовать от клиентов устранения всех неоднозначностей;

[x]. выбирать некую интерпретацию по умолчанию.

В соответствии с первым подходом, класс C, наследующий компонент f от A и B, будет нормально откомпилирован, возможно, с выдачей предупреждения. Ничего страшного не произойдет, пока в тексте клиента C не обнаружится нечто подобное:

x: C

... x.f ...

Клиенту придется квалифицировать ссылку на f, используя нотацию, например, такую: x.f | A, либо x.f | B, чтобы указать подразумеваемый класс.

Это решение противоречит, однако, одному из принципов, важность которого мы подчеркивали в этой лекции: структура наследования класса касается лишь самого класса и его предков, но не клиентов, за исключением случаев полиморфного применения компонентов. Пользуясь f из C, я не должен знать о том, введена эта функция классом C либо получена им от A или B.

Согласно второй стратегии, запись x.f корректна. Выбор одного из вариантов делается средствами языка. Критерием выбора является, например, порядок, в котором C перечисляет своих родителей. Для обращения к другим вариантам может существовать особая форма записи.

Данный подход реализован в нескольких производных от Lisp языках с поддержкой множественного наследования. Тем не менее, выбор семантики по умолчанию весьма опасен ввиду потенциальной несовместимости со статической типизацией.

Эти проблемы решает смена имен. Одним из ее преимуществ является возможность создания клиентского интерфейса с "понятными" именами компонентов.

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

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

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

5.1.4. Переименование файлов

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

5.1.4. Переименование файлов При данном способе отображения элементами каталога имен на номера индексов, переименование файла концептуально очень просто:1. Если новое имя файла обозначает существующий файл, сначала удалить этот файл.2. Создать новую ссылку на файл через


11.4.5. Переименование файлов

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

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


Переименование объектов

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

Переименование объектов При необходимости вы можете задать новое имя для любого объекта (файла, папки, ярлыка). Способы выполнения этой операции рассмотрены в видеоролике «Урок 3.8. Переименование объектов».Щелкните правой кнопкой мыши на интересующем вас объекте и


Создание, переименование и удаление таблицы

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

Создание, переименование и удаление таблицы Итак, вы открыли или создали базу данных (как это сделать, описано в разд. «Приступим к работе» в предыдущей главе). Теперь программа Access готова к работе с таблицами. Если вы создали пустую базу данных, программа автоматически


Переименование объектов

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

Переименование объектов Имя, которое вы задали при создании файла или папки, не есть догма. В любой момент вы можете его изменить.Для этого выделите нужный объект, щелкните кнопкой мыши на нем и в открывшемся меню выберите команду Переименовать. Совет Если лень возиться с


Переименование и перемещение листов

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

Переименование и перемещение листов По умолчанию листы именуются как Лист1, Лист2, Лист3 (Sheet1, Sheet2, Sheet3 в англоязычной версии) и т. д. Однако часто требуется для удобства переименовать листы. Например, если на каждом листе книги содержатся статистические или расчетные


Размещение и переименование библиотеки

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

Размещение и переименование библиотеки Для встроенного сервера- распространяемого как fbembed.dll- нет проблем с переименованием этой библиотеки в имя gds32.dll или fbclient.dll, или любое другое нужное имя. Для того чтобы пакет встроенного сервера был самодостаточным, эта библиотека


Пример A-4. blank-rename: переименование файлов, чьи имена содержат пробелы

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

Пример A-4. blank-rename: переименование файлов, чьи имена содержат пробелы Это даже более простая версия предыдущего примера.#! /bin/bash# blank-rename.sh## Заменяет пробелы символом подчеркивания в именах файлов в текущем каталоге.ONE=1 # единственное или множественное число (см.


Переименование

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

Переименование Полезной альтернативой команде меню Файл ? Сохранить как является функция переименования проекта. Данная функция обладает следующими свойствами:• не создает копии проекта;• оставляет проект в папке, в которой он был ранее сохранен (при переименовании


4.2.3. Копирование, переименование и перемещение файла или папки

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

4.2.3. Копирование, переименование и перемещение файла или папки Для копирования файла (группы файлов) или папки (группы файлов) нужно выполнить следующие действия:1. Выделите файлы — можно выделить один файл или каталог — для этого просто щелкните по нему. Для выделения


Переименование компонентов

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

Переименование компонентов Иногда при множественном наследовании возникает проблема конфликта имен (name clash). Ее решение - переименование компонентов (feature renaming) - не только снимает саму проблему, но и способствует лучшему пониманию природы


Переименование файлов и папок

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

Переименование файлов и папок Для переименования файла или папки можно использовать следующий способ.1. Щелкните правой кнопкой мыши на значке нужного файла или папки.2. В появившемся контекстном меню выберите пункт Переименовать. Название объекта будет взято в рамку


Переименование объектов

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

Переименование объектов Чтобы переименовать объект, сначала отметьте его. Далее в меню Файл выберите команду Переименовать. Вы достигнете той же цели, если нажмете клавишу F2 или, щелкнув правой кнопкой мыши на имени необходимого объекта, выберете в открывшемся