}

class RetObj {

static void Main() {

Rect rl = new Rect(4, 5);

Console.Write('Размеры прямоугольника rl: '); rl.Show ();

Console.WriteLine('Площадь прямоугольника rl: ' + rl.AreaO);

Console.WriteLine();

// Создать прямоугольник в два раза больший прямоугольника rl.

Rect r2 = rl.Enlarge(2);

Console.Write('Размеры прямоугольника г2: '); r2.Show();

Console.WriteLine('Площадь прямоугольника г2: ' + г2.Агеа());

}

}

Выполнение этой программы дает следующий результат.

Размеры прямоугольника rl: 4 5 Площадь прямоугольника rl: 20

Размеры прямоугольника г2: 8 10 Площадь прямоугольника г2: 80

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

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

// Использовать фабрику класса.

using System;

class MyClass {

int a, b; // закрытые члены класса

// Создать фабрику для класса MyClass. public MyClass Factory(int i, int j) {

MyClass t = new MyClass ();

t.a = i; t.b = j;

return t; // возвратить объект

}

public void Show() {

Console.WriteLine('а и b: ' + a + ' ' + b);

}

}

class MakeObjects { static void Main() {

MyClass ob = new MyClass (); int i, j;

// Сформировать объекты, используя фабрику класса. for(i=0, j =10; i < 10; i++, j —) {

MyClass anotherOb = ob.Factory(i, j); // создать объект anotherOb.Show();

}

Console.WriteLine () ;

}

}

Вот к какому результату приводит выполнение этого кода.

а и Ь: 0 10 а и Ь: 19 а и Ь: 2 8 а и b: 3 7 а и Ь: 4 6 а и Ь: 5 5 а и Ь: 6 4

а и b: 7 3 а и b: 8 2 а и b: 9 1

Рассмотрим данный пример более подробно. В этом примере конструктор для класса МуС lass не определяется, и поэтому доступен только конструктор, вызываемый по умолчанию. Это означает, что значения переменных а и b нельзя задать с помощью конструктора. Но в фабрике класса Factory () можно создать объекты, в которых задаются значения переменных а и Ь. Более того, переменные а и b

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату