Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OOP / books / Osnovi objektno-orientirovannogo programmirovaniya.pdf
Скачиваний:
62
Добавлен:
03.03.2016
Размер:
9.04 Mб
Скачать

Использование констант

Вот пример, показывающий, как клиент может применять константы, определенные в классе:

class FILE feature

error_code: INTEGER; -- Атрибут-переменная Ok: INTEGER is 0

Open_error: INTEGER is 1

...

open (file_name: STRING) is

--Открыть файл с именем file_name

--и связать его с текущим файловым объектом

do

error_code := Ok

...

if "Что-то не так" then error_code := Open_error end

end

... Прочие компоненты ...

end

Клиент может вызвать метод open и проверить успешность операции:

f: FILE; ...

f.open

if f.error_code = f.Open_error then "Принять меры"

else

...

end

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

class EDITOR_CONSTANTS feature

Insert: CHARACTER is 'i'

Delete: CHARACTER is 'd'; -- и т.д.

...

end

class SOME_CLASS_FOR_THE_EDITOR inherit

EDITOR_CONSTANTS

...Другие возможные родители ...

feature ...

... подпрограммы класса имеют доступ к константам, описанным в EDITOR_CONSTANTS

...

end

Класс, подобный EDITOR_CONSTANTS, служит лишь для размещения в нем группы констант, и его роль как "реализации АТД" (а это - наше рабочее определение класса) не столь очевидна, как в предыдущих примерах. Теоретическое обоснование введения таких классов мы

обсудим позднее. Представленная схема работоспособна только при множественном наследовании, поскольку классу SOME_CLASS_FOR_THE_EDITOR могут потребоваться и другие родители.

Соседние файлы в папке books