Экспорт атрибутов
Экспорт атрибутов
В завершение предшествующей дискуссии необходимо обсудить вопрос об экспорте атрибутов. Рассмотренный в этой лекции класс POINT имеет атрибуты x и y и экспортирует их клиентам, также как и функции rho и theta. Для получения значения атрибута некоторого объекта используется обычная нотация для вызова компонентов в виде my_point.x или my_point.theta.
Эта возможность экспорта атрибутов отличается от соглашений, принятых во многих ОО-языках. Типичным примером является Smalltalk, в котором только подпрограммы (методы) могут быть экспортированы классом, а прямой доступ к атрибутам (свойствам) запрещен.
Следуя подходу Smalltalk, доступ к атрибуту можно обеспечить только с помощью небольшой экспортированной функции, возвращающей значение атрибута. В примере класса POINT назовем атрибуты internal_x, internal_y и добавим функции abscissa и ordinate. Лаконичный синтаксис Smalltalk допускает присваивание одинаковых имен атрибуту и функции, избавляя от необходимости придумывать специальные имена для атрибутов.
class POINT feature
-- Общедоступные компоненты:
abscissa: REAL is
-- Горизонтальная координата
do Result := internal_x end
ordinate: REAL is
-- Вертикальная координата
do Result := internal_y end
... Другие компоненты аналогичны предыдущей версии ...
feature {NONE}
-- Компоненты недоступные клиентам:
internal_x, internal_y: REAL
end
Этот подход имеет два недостатка:
[x]. Он побуждает авторов классов писать много маленьких функций, аналогичных abscissa и ordinate. Несмотря на то, что такие функции будут очень короткими, автор класса будет тратить на их написание дополнительные усилия, а их присутствие затрудняет восприятие исходного текста.
[x]. Существенное снижение производительности, так как каждое обращение к полю объекта требует вызова функции. Ничего удивительного в том, что объектная технология в некоторых кругах заработала репутацию неэффективной. Можно конечно разработать оптимизирующий компилятор, осуществляющий подстановку вместо вызова функций, но тогда какова роль таких функций?
Подход, обсуждаемый в данной лекции, представляется предпочтительным. Он избавляет от необходимости загромождать исходные тексты многочисленными крошечными функциями и предоставляет возможность экспорта, где это необходимо. Такая практика не мешает скрытию информации, а фактически является непосредственной реализацией этого принципа, как и принципа унифицированного доступа.
Эта методика удовлетворяет требованиям унифицированного доступа (преимущество для клиентов), упрощает восприятие исходных текстов (преимущество для поставщиков) и повышает эффективность (преимущество для всех).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Печать и экспорт
Печать и экспорт Какой бы прекрасной ни была электронная версия документа, иногда все же требуется создать его бумажную копию. Для печати документа применен гибридный подход: при нажатии на иконку с изображением принтера на локальный компьютер скачивается версия
Экспорт
Экспорт Экспорт Таблиц в различные форматы файлов пригодится в случае необходимости показать данные другу, у которого нет Интернета, сохранить их на домашнем компьютере «на всякий пожарный», отправить таблицу по электронной почте… да мало ли для чего еще! Таблицы
Экспорт
Экспорт На данный момент автономная работа над презентациями недоступна, поскольку технология Gears сервисом пока (но только пока!) не поддерживается. А жаль – опция показа слайдов ой как пригодилась бы, к примеру, менеджерам по продажам, отправляющимся в далекий поселок
Экспорт списка контактов
Экспорт списка контактов У пользователей Skype есть возможность передать другим абонентам Skype свои контакты. В данной процедуре нет ничего сложного, и сейчас вы узнаете, как это сделать.1. Для начала выберите команду меню Инструменты ? Отправить список контактов, на экране
4.2.3. Импорт и экспорт
4.2.3. Импорт и экспорт Имея в своем браузере множество ссылок на любимые и просто нужные сайты, совершенно не хотелось бы вносить их заново вручную в закладки Яндекса. Собственно ничего сложного в импорте ссылок из вашего браузера нет, что и было реализовано в этом
Экспорт проекта в Encore DVD
Экспорт проекта в Encore DVD Диски формата DVD-Video, помимо самого видеофильма, содержат ряд удобных интерактивных инструментов. При установке DVD в проигрыватель почти всегда на экране телевизора появляется меню, позволяющее выбрать фильм (если диск содержит несколько фильмов),
Глава 19 Печать и экспорт
Глава 19 Печать и экспорт В заключение нашего многостраничного знакомства с возможностями Adobe InDesign мы рассмотрим вопрос «Что делать с дизайном в конце?». Иными словами, создав дизайн, нам обязательно потребуется распечатать его (в типографии или на принтере) или, по
Экспорт документов
Экспорт документов Команда File ? Export (Файл ? Экспорт) позволяет нам сохранить документ в одном из нескольких графических форматов: EPS, JPEG, SVG, XML. Во всех случаях мы увидим диалоговое окно, в котором сможем выбрать местоположение и имя будущего файла, а также формат,
9.4. Экспорт и импорт макросов
9.4. Экспорт и импорт макросов Часто бывает так, что внутренний макрос может оказаться полезным при работе на другом компьютере. В этом случае просто нужно экспортировать его во внешний. Для этого сделайте следующее.1. Откройте окно Макрос щелчком на кнопке Макросы на
Экспорт и импорт данных
Экспорт и импорт данных Как уже отмечалось выше, возможности Access 2007 предусматривают выполнение операций импорта и экспорта данных. Чтобы выполнить импорт данных, например, из таблицы Excel, откройте вкладку Внешние данные и в панели Импорт нажмите кнопку Excel. В результате
3.3. Создание сущностей и атрибутов BPwin и их экспорт в ERwin
3.3. Создание сущностей и атрибутов BPwin и их экспорт в ERwin Если в процессе связывания стрелок с объектами модели данных окажется, что каких-либо сущностей или атрибутов не хватает, их можно добавить прямо в BPwin, а затем экспортировать в ERwin.Для редактирования сущностей
"Внутренний" экспорт
"Внутренний" экспорт Рассмотрим объявление классаindexingзамечание: "Ошибочное объявление (объяснение см. ниже)"class S6 featurex: S6my_routine is do ... print (x.secret) ... endfeature {NONE}secret: INTEGERend -- class S6Наличие в объявлении класса атрибута x типа S6 и вызова x.secret делает его собственным клиентом. Но такой
У11.6 Утверждения и экспорт
У11.6 Утверждения и экспорт Обсудите использование функций в утверждениях, в частности, введение функции correct_index в предусловия программ put и item. Если добавить эту функцию в класс ARRAY, то какой статус экспорта следует ей
Выборочный экспорт
Выборочный экспорт Говоря о наследовании и скрытии информации, нельзя обойти вопрос о выборочном экспорте компонентов. Класс A, выборочно экспортирующий f классу B:class A feature {B, ...}f......делает f доступным в реализации собственных компонентов B. Потомки B, в свою очередь, имеют
Экспорт
Экспорт Разобравшись с публикацией, перейдем к экспорту.Как мы помним, экспорт фильма или изображения Flash отличается от его публикации тем, что файл Flash просто преобразуется в другой, выбранный нами формат. Получившийся файл можно распространять как через Интернет