Роль развернутых типов

Роль развернутых типов

Почему нам нужны развернутые типы? Они играют три важные роли:

[x]. улучшают эффективность;

[x]. обеспечивают лучшее моделирование;

[x]. поддерживают базисные типы в унифицированной ОО-системе типов.

Первое применение наиболее очевидно: без развернутых типов каждый раз необходимо использовать ссылки для описания составных объектов. Это означало бы при каждом обращении к подобъекту выполнения операции, называемой "разыменование" (dereferencing), что влекло бы к временным потерям. Помимо этого, есть и потери в памяти, поскольку нужно отводить память не только объектам, но и самим ссылкам.

Аргумент производительности, однако, не является ключевым. ОО-конструирование ПО зачастую рассматривается как моделирование. Для отражения реальности необходимо моделировать объект как составной, а не как объект со ссылками. Это концептуальная проблема, а не проблема реализации.

Рассмотрим два объявления атрибутов:

D1. ref: S

D2. exp: expanded S

Объявления появляются в классе C, предполагается также, что S это ссылочный класс. Объявление D1 отражает тот факт, что каждый экземпляр класса C "знает о" существовании некоторого экземпляра S (если только ref не является void). Объявление D2 более требовательное: оно устанавливает тот факт, что каждый экземпляр класса C "содержит" экземпляр S. Даже если не думать о проблемах реализации, следует понимать, что речь идет о двух разных отношениях.

Отношение "содержит", поддерживаемое развернутыми типами, не допускает никакого разделения встроенного объекта, в то время как отношение "знает о" допускает несколько ссылок, присоединенных к объекту.

Вот пример объявления класса:

class WORKSTATION feature

k: expanded KEYBOARD

c: expanded CPU

m: expanded MONITOR

n: NETWORK

...

end

Рабочая станция имеет клавиатуру, ЦПУ, монитор и подключена к сети. Клавиатура, ЦПУ и монитор являются частью данного компьютера и не могут разделяться двумя или несколькими рабочими станциями. Однако несколько рабочих станций подключены к одной и той же сети. Эти особенности проявляются в определении класса, использующем развернутые типы для первых трех атрибутов и ссылочный тип для атрибута "сеть".

Рис. 8.20.  Отношения между объектами: «знает о» и «содержит»

Итак, концепция развернутого типа, появившаяся вначале как техника уровня реализации, фактически помогла описать некоторые из отношений, используемых при информационном моделировании. Отношение "содержит" и обратное к нему отношение "быть частью" являются центральными при построении моделей внешних систем; они появляются в методах анализа и при моделировании баз данных.

Третье важное приложение развернутых типов фактически является частным случаем второго. В предыдущей лекции подчеркивалась желательность унифицированной системы типов, включающей как встроенные, так и пользовательские типы. Пример REAL использовался, чтобы показать, как с помощью инфиксных и префиксных компонентов можно промоделировать понятие вещественного числа как класса. То же самое нетрудно проделать и для других базисных типов: BOOLEAN, CHARACTER, INTEGER, DOUBLE. Но проблема все же остается. Если классы рассматривать как ссылочные, то сущности базисных типов, такие как

r: REAL

будут в период выполнения ссылками на возможные объекты, содержащие значение (в данном случае REAL). Это неприемлемо: чтобы соответствовать общей практике программирования значение должно быть не ссылкой, а самим вещественным числом. Решение проблемы немедленно следует из обсуждения - класс REAL следует объявить как развернутый. Его объявление должно быть таким:

expanded class REAL feature

... Объявления компонент такие же как и ранее ...

end

Все другие базисные типы объявляются подобным образом как развернутые.

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

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

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

Роль PR-специалиста

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

Роль PR-специалиста Описывая структуру управления порталом, я намеренно не упомянул PR-отдел. Дело в том, что порталу на этапе создания и продвижения не нужен целый отдел, занимающийся офлайновой рекламой и внешними связями, а специалист по SMM отлично встраивается в отдел


Роль языка C#

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

Роль языка C# С учетом того, что принципы .NET так радикально отличаются от предшествующих технологий, Microsoft разработала новый язык программирования, C# (произносится "си-диез"), специально для использования с этой новой платформой. Язык C# является языком программирования, по


Роль метаданных типов .NET

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

Роль метаданных типов .NET Кроме CIL-инструкций, компоновочный блок .NET содержит исчерпывающие и точные метаданные, описывающие все его типы (классы, структуры, перечни и т.д.), определенные в бинарном объекте, и все члены каждого типа (свойства, методы, события и т.д.). К счастью,


Роль директив CIL

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

Роль директив CIL Прежде всего, есть множество известных лексем CIL, которые используются для описания полной структуры компоновочного блока .NET. Эти лексемы называются директивами. Директивы CIL используются дли информирования компилятора CIL о том, как определять


Роль атрибутов CIL

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

Роль атрибутов CIL Во многих случаях директивы CIL сами по себе оказываются недостаточно информативными, чтобы дать исчерпывающее определение соответствующего типа .NET или его члена. Поэтому многие директивы CIL сопровождаются различными атрибутами CIL, сообщающими о том,


Роль peverify.exe

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

Роль peverify.exe При создании или модификации компоновочных блоков, в которых используется программный код CIL, всегда целесообразно проверить, будет ли скомпилированный двоичный образ правильно сформирован с точки зрения правил .NET. Для этого можно использовать средство


Роль HTTP

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

Роль HTTP Web-приложения очень сильно отличаются от традиционных приложений для настольных систем. Первым очевидным отличием является то, что любое реальное Web-приложение предполагает использование, как минимум, двух соединенных в сеть, машин (конечно, при разработке


Роль HTML

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

Роль HTML Сконфигурировав каталог для своего Web-приложения, вы должны создать и его содержимое. Напомним, что Web-приложение - это просто термин используемый для обозначения множества файлов, обеспечивающих функционирование узла, Значительная часть этих файлов будет


Роль папки Bin

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

Роль папки Bin Позже вы увидите, что Web-страницы ASP.NET в конечном счете компилируются в компоновочный блок .NET. Поэтому не должно быть неожиданностью то, что Web-узлы могут ссылаться на любое число приватных или общедоступных компоновочных блоков, В ASP.NET 2.0 метод указания


Роль Web-сервисов XML

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

Роль Web-сервисов XML С точки зрения самого высокого уровня вы можете определить Web-сервис XML, как единицу программного кода, доступную для вызова с помощью HTTP-запросов. Однако, в отличие от традиционного Web-приложения, Web-сервисы XML можно использовать не только для того, чтобы


Роль сервера

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

Роль сервера Работа сервера включает:* управление хранением данных базы данных и выделение дискового пространства;* управление всеми транзакциями, запущенными клиентами, гарантирование, что каждая получит и сохранит непротиворечивый образ постоянно хранимых данных,


Роль классов

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

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


Свойства развернутых типов

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

Свойства развернутых типов Рассмотрим развернутый тип E (в любой форме) и развернутую сущность x типа E. Так как значение x это всегда объект, то он не может быть void. Так что булево выражение:x = Voidбудет всегда вырабатывать значение false, и вызов в форме x.some_ feature (arg1, ...) никогда не


Роль типизации

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

Роль типизации Зачем настаивать на явном объявлении типов (первое из двух требований)? Это часть главного вопроса о типизации, которому в этой книге посвящена отдельная лекция (лекция 17). Но уже сейчас можно указать две основные причины, по которым ОО-программа должна быть


Компьютерная роль

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

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


Роль правительства

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

Роль правительства После всего того, что мы слышали о Большом Брате, можем ли мы думать о правительстве иначе, чем как о враге приватности? Несмотря на то что федеральные законы и деятельность государственных органов часто вредят приватности, я уверен, что наши лучшие