Основы объектно-ориентированного проектирования

         

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


Библиотека Base Libraries включает класс ASCII:

indexing description: "Множество символов ASCII. % %Этот класс - предок всех классов, нуждающихся в его свойствах." class ASCII feature -- Access Character_set_size: INTEGER is 128; Last_ascii: INTEGER is 127 First_printable: INTEGER is 32; Last_printable: INTEGER is 126 Letter_layout: INTEGER is 70 Case_diff: INTEGER is 32 -- Lower_a - Upper_a ... Ctrl_a: INTEGER is 1; Soh: INTEGER is 1 Ctrl_b: INTEGER is 2; Stx: INTEGER is 2 ... Blank: INTEGER is 32; Sp: INTEGER is 32 Exclamation: INTEGER is 33; Doublequote: INTEGER is 34 ... ... Upper_a: INTEGER is 65; Upper_b: INTEGER is 66 ... Lower_a: INTEGER is 97; Lower_b: INTEGER is 98 ... и т.д. ... end

Этот класс является хранилищем множества константных атрибутов (всего 142 компонента), описывающих свойства множества ASCII.

Рассмотрим, например, лексический анализатор, ответственный за идентификацию лексем входного текста. Лексемами текста, написанного на некотором языке программирования, являются целые, идентификаторы, символы и так далее. Одному из классов системы, скажем, TOKENIZER, необходим доступ к кодам символов для их классификации на цифры, буквы и т. д. Такой класс воспользуется льготами и наследует эти коды от ASCII:

class TOKENIZER inherit ASCII feature ... Программы класса могут использовать компоненты Blank, Case_diff и другие... end

К классам, подобным ASCII, относятся иногда неодобрительно, но прежде чем перейти к методологической дискуссии, взглянем на еще один пример льготного наследования.



Содержание раздела