Лекция: Создание и использование объектов

Первый шаг при создании объектов – объявление одной или нескольких объектных переменных. Аналогично обычным переменным объектные переменные можно создавать либо статически, либо динамически. Оба способа создания переменных реализованы только в С++. В остальных языках используется только динамическое создание объектов. Объекты адресуются своими указателями, хотя явно этого не видно, т.к. разрешено только сравнивать указатели на равенство и присваивать указателям допустимые значения.

Рассмотрим сначала объявление и создание объектов в С++.

Для статического создания объекта достаточно объявить одну или несколько переменных соответствующего классового типа:

Circle Circ1, Circ2;

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

Circle Circ3 (50, 50, 20);

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

Circ1.Show ( ); // отобразить объект Circ1

Circ3.MoveTo (100, 100); // переместить объект Circ3

int r = Circ3.GetR ( ); // запросить радиус объекта Circ3

Для динамического создания объектов, прежде всего, необходимо объявить ссылочную переменную:

Circle *pCirc1;

При обработке этой строки компилятор выделяет память только для хранения адреса будущего объекта. После этого записывается строка для динамического создания объекта, причем для выделения памяти используется стандартная функция new, a для инициализации выделенной области явно вызывается один из конструкторов класса:

pCirc1 = new Circle ( );

При необходимости объявление объектной переменной и вызов конструктора можно объединить в одной строке:

Circle *pCirc1 = new Circle ( );

Вызов методов динамических объектов выполняется следующим образом:

pCircle -> Show ( ); // отобразить

pCircle -> MoveTo (200, 200); // переместить

int Rad = pCirc2 -> GetRad ( ); // получить радиус

 

В языках Java и C# предусмотрено только динамическое создание объектов. Объекты неявно адресуются своими указателями. Объявление объектной переменной и создание объекта может быть либо разделено

Circle Circ1;

Circ1 = new Circle ( );

либо объединено в одну строку:

Circle Circ2 = new Circle (100, 100, 50);

После создания объекта можно вызывать его методы:

Circ2.Show ( );

Circ2.MoveTo (200, 200);

Rad = Circ2.GetRad ( );

 

В языке Delphi Pascal объекты также можно создавать только динамически и адресовать своими указателями:

var Circ1: TCircle; // объявление объекта-окружности

Circs: array [1..100] of TCircle; // объявление массива

// объектных указателей

Для создания объекта необходимо указать имя класса и вызвать один из реализованных конструкторов:

Circ1 := TCircle.Create;

for i := 1 to 100 do Circs[i] := TCircle.Create (параметры);

Обращение к методам выполняется следующим образом:

Circ1.Show;

Circ1.MoveTo (200, 200);

for i := 1 to 100 do Circs[i].Show;

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

 

еще рефераты
Еще работы по информатике