Студопедия

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

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

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






Создание объектов и их наименование






 

Опоздание конкретного объекта, принадлежащего к определенной декларации класса и имеющего опреде­ленные значения атрибутов, выполняется с помощью генератора объектов имеющего вид: new < имя класса> (< совокупность фактических параметров>) или new < имя класса>, для декларации класса без формальных параметров.

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

Описания переменных, массивов, процедур - функций, а так же спецификации параметров, значениями которых могут быть ссылки на объекты, начинается с указателя типа, который имеет вид: ref (< имя класса >) Конструкция (< имя класса >) называется квалификацией определяемых переменных. Роль квалификации состоит в ограничении области возможных значений ссылочных переменных. Переменная может ссылаться только на область классов, указанных в ее квалификации.

Присваивание ссылочной переменной ссылки на конкретный объект производится с помощью опера­тора присваивания ссылок, в левой части которого пишется переменная, а в правой - генератор объекта. Части разделяются между собой знаком ": - " Пример:

ABT1: -new АВТОБУС(8, 10, 3, 3, 120, 5, 45);

ИКАРУС: - ABT1;

В Симула - 67 объекту можно дать несколько имен, присвоив ссылку на этот объект нескольким пере­менным.

Созданный объект существует в программе до тех пор пока на него имеется хотя бы одна ссылка. Уни­чтожить ее можно путем присваивания ссылочной переменной значения " none". Кроме того, хранящаяся в ссылочной переменной, ссылка на объект уничтожается при выходе из блока, в котором описана эта переменная и при присваивании ей нового значения.

Между ссылками объекта определены два отношения: идентичность == и неидентичность =/=. Отно­шение х == у истинно в том случае, когда ссылочные переменные х, у указывают на один и тот же объект или одновременно равны none. Отношение х =/= у является отрицанием предыдущего отношения.

Иногда, при описании правил действий объекта, возникает необходимость сослаться на токующий объ­ект, т.е. на себя самого. Это можно сделать с помощью конструкции локального объекта. Она имеет вид: this А. где А - имя класса. Значением этой конструкции, которая может употребляться только в теле декларации класса А и декларациях его подклассов, является ссылка на объект А, исполняющий в данный момент свои правила действии.

Приведем ряд примеров иллюстрирующих введенные языковые конструкции: 1. Пример декларации класса.

class ПЕШКА (НB, НГ, БЕЛАЯ);

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

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

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

 

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

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

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

 

ОСТАНОВКА: ЗАНЯТЬ (ТВ, ТГ); goto КОНЕЦ;

ВСТАТЬ НЕКУДА: ТВ: =ТГ: =0; КОНЕЦ;

end ПЕШКА;

Здесь описано поведение пешки, которая пытается встать на произвольную клетку шахматной доски: если клетка занята, то пешка пытается встать на клетку доступную из начальной за один ход; если же и она оказывается занятой, то пешка на доску не встает. Клетка задается парой чисел - номерами вертикали и горизонтали шахматной доски. Атрибутами объекта класса ПЕШКА являются: НВ, ТВ - начальная и текущая вертикали. НГ, ТГ - начальная и текущая горизонтали. БЕЛАЯ - булевский атрибут задающий цвет пешки.

В данной декларации класса использованы операторы процедуры функции СВОБОДНА и процеду­ры ЗАНЯТЬ, описания которых не приводим.

2. Генератор объектов new ПЕШКА(3, 2, true);

отображает постановку белой пешки на клетку (3, 2).

3. Обозначить через П1 крайнюю левую белую пешку можно задав описание ref(ПЕШКА) П1;

и выполнив оператор присваивания ссылок:

П1: - new ПЕШКА (l, 2, true);.

4. Начальная расстановка всех черных пешек может быть выполнена с помощью фрагмента программы:

ref (ПЕШКА) array ЧЕРНЫЕ ПЕШКИ; integer i;

for i: - 1 step 1 until 8 do

ЧЕРНОЫЕ ПЕШКИ[i]: - new ПЕШКА (i, 7, false);






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