Помощь в написании студенческих работ
Антистрессовый сервис

Вложение классов. 
Программирование. 
Базовый курс с#

РефератПомощь в написанииУзнать стоимостьмоей работы

В классе Circle для инициализации поля center используется конструктор умолчания класса Point. Префикс «Circle.» при этом не требуется применять, хотя его использование не приведет к ошибке. То же самое относится и к обозначению типа свойства Centre. Нет явного определения конструкторов и во внешнем классе. Поэтому в методе Main () для создания объекта, ассоциированного со ссылкой rim… Читать ещё >

Вложение классов. Программирование. Базовый курс с# (реферат, курсовая, диплом, контрольная)

В объявление класса в качестве его члена может войти объявление типа. Таким типом может быть класс. Этот внутренний класс называют вложенным классом, а включающий его класс — внешним. Особенностью вложенного класса является то, что ему доступны все члены внешнего класса, даже если эти члены закрытые (private). Обычно вложенный класс вводится только для выполнения действий внутри внешнего класса и «не виден» вне включающего его класса. Однако вложенный класс может быть объявлен с модификатором public и тогда он становится доступен везде, где виден внешний класс. Если открытый класс Nested вложен в класс Outside, то для внешнего обращения к вложенному классу следует использовать квалифицированное имя Outside.Nested.

Продемонстрируем синтаксис вложения классов на примере класса окружности (Circle), центр которой представляет объект вложенного класса Point. Чтобы возможности внешнего класса Circle были близки к возможностям уже рассмотренных классов, реализующих композицию и агрегацию, сделаем вложенный класс Point открытым. В следующей программе объявлен указанный класс Circle с вложенным классом Point.

// 1303.cs — вложение классов using System; class Circle { // Закрытые поля:

double rad; // радиус окружности Point centre = new Point (); // центр окружности 11 свойство для радиуса окружности: public double Rad {.

get { return rad; } set { rad = value; }.

}

// свойство для значения длины окружности:

public double Len { get { return 2 * rad * Math. PI; } }.

// свойство для центра окружности: public Point Centre {.

get { return centre; } set { centre = value; }.

>

public void display ().

{

Console.WriteLine («Centre: X={0}, Y={1}; «+.

" Radius={2}J Length={3,6:f2}", centre. X, centre. Y, this. rad, Len);

}

public class Point.

{

double x, y;

public double X { get { return x; } set { x = value; } } public double Y { get { return y; } set { у = value; } } } // end of Point } // end of Circle

class Program.

{

static void MainQ.

{

Circle rim = new Circle (); rim.Centre.X = 100; rim.Centre.Y = 200; rim. Rad = 30.0; rim. displayO;

}

}.

Диаграмма вложения классов.

Рис. 13.3. Диаграмма вложения классов

Результат выполнения программы:

Centre: Х=100, Y=200; Radius=30, Length=188,50.

В классе Circle для инициализации поля center используется конструктор умолчания класса Point. Префикс «Circle.» при этом не требуется применять, хотя его использование не приведет к ошибке. То же самое относится и к обозначению типа свойства Centre. Нет явного определения конструкторов и во внешнем классе. Поэтому в методе Main () для создания объекта, ассоциированного со ссылкой rim, используется конструктор умолчания Circle (). Для обращения к свойствам, определяющим центр окружности, потребовалось, как и при композиции, использовать имена с двойной квалификацией: rim.Centre.X и rim.Centre.Y.

В отличие от композиции и агрегации, при вложении классов внутренний класс (не только объект, но и сам внутренний класс) не существует независимо от внешнего. На диаграмме классов вложенный класс изображается именно внутри внешнего (см. рис. 13.3).

Показать весь текст
Заполнить форму текущей работой