Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Иерархическое описание классов объектов






 

Рассмотрим, имеющиеся в Симула - 67 средства отображения иерархических понятий на примере опи­сания шахматных фигур, пытающихся встать на одну из свободных клеток, доступных за один ход из заданной начальной клетки. Решение этой задачи даст описание ряда не связанных между собой де­клараций классов, построенных аналогично декларации класса ПЕШКА. каждая из которых полностью описывает поведение соответсвующей фигуры и отличается от нее только наименованием класса и опе­раторами (*) - правилами хода фигуры. Общие части деклараций классов, описывающих различные фигуры. можно выделить в отдельную декларацию, задающую класс ФИГУРА. которая имеет атрибуты и правила действий общие для всех фигур:

class ФИГУРА (НВ, НГ, БЕЛАЯ);

integer НВ, НГ; boolean БЕЛАЯ;

begin integer ТВ, ТГ; ТВ: =НВ; ТГ: =НГ;

if СВОБОДНА (ТВ, ТГ) then goto ОСТАНОВКА; inner;

ОСТАНОВКА: ЗАНЯТЬ(ТВ, ТГ); goto КОНЕЦ; ВСТАТЬ НЕКУДА: =TB: =ТГ: =0; КОНЕЦ: end ФИГУРА;

В приведенной декларации символ inner - представляет дополнительные сведения - действия, задава­емые в декларациях классов, описывающих поведение любых конкретных фигур.

Теперь эти декларации можно определить на основе класса ФИГУРА и задавать в них только дополни­тельные, характерные для данного вида фигур признаки (атрибуты и правила действий). Определенные таким образом классы называются подклассами класса ФИГУРА и образуют вместе с ним иерархию клас­сов. Класс ФИГУРА называют префикс-классом (надклассом) для классов ПЕШКА, ЛАДЬЯ и т.д. Вся иерархия классов, описывающих шахматные фигуры задается набором деклараций:

(1) class ФИГУРА…;

(2) ФИГУРА class ПЕШКА…;

ФИГУРА class КОРОЛЬ...;

В симула-программе тот факт, что класс ПЕШКА является подклассом класса ФИГУРА отобража­ется употреблением имени ФИГУРА в качестве префикса к декларации класса ПЕШКА, которая теперь примет вид:

ФИГУРА class ПЕШКА;

begin

ТГ: =ТГ + (if БЕЛАЯ then I else -1);

if (ТГ> 8 or ТГ< 1) or not СВОБОДНА (ТВ, ТГ)

then go to ВСТАТЬ НЕКУДА;

end ПЕШКА;

Работа объектов принадлежащих классу определенной декларации с префиксом происходит в соот­ветствии с эквивалентной декларацией без префикса, полученной путем объединения атрибутов и правил действий заданных в декларации класса и подкласса. Этот процесс объединения называется сочленением и выполняется по определенным правилам называемым алгоритмом сочленения. В процессе сочлене­ния список формальных параметров декларации класса дополняется. При объединении inner заменяется (оператором правил действий из декларации подкласса. Замена символа происходит не буквально, а ор­ганизацией передач управления.

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

Цепочкой префиксов некоторой декларации класса называется совокупность классов, лежащих на пути из корня дерева иерархии в вершину, соответствующую этой декларации.

Введение аппарата иерархий деклараций классов требует уточнения правил использования квалифи­кационных переменных, генераторов объекта и присваивания ссылок. При создании объекта, принадле­жащего классу, декларация которого имеет префикс, в соответствующем генераторе объектов, необходимо указать фактические значения для формальных параметров, присутствующих в эквивалентной декларации. В теле декларации класса можно непосредственно использовать все атрибуты, заданные в декларациях из цепочки префиксов этого класса. Атрибуты подкласса из декларации надкласса непосредственно недо­ступны, хотя к ним можно обратиться благодаря специальным средствам. Взаимо недоступны и атрибуты деклараций лежащих на разных ветвях в дереве иерархий. В том случае, если в декларации классов принадлежащих первой цепочке префиксов определены одноименные атрибуты, то при употреблении их имен, в некоторой декларации обращение будет происходить к тому атри-буту, который определяет ее в цепочке префиксов. Причем в декларации с верхним префиксальным уровнем над обозначением объектов именами классов в языке определены два отношения. позволяющие определить принадлежность объекта к некоторому классу или его подклассу.

Отношение X if А. где X - объектное выражение. А - имя класса, истинно, если объект тождественно равный X принадлежит классу А.

Отношение X in А истинно если объект, на который указывает выражение X принадлежит классу А или его подклассу.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.