Агрегация на основе классов


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

 
 

Изменение состояния объекта-части вне рамок объекта-контейнера немедленно изменяет состояние контейнера.

Базовый пример

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

 

class Корпус

{

private string тип; // тип корпуса

private double цена;

 

public string Тип

{

set { тип = value; }

get { return тип; }

}

 

private double Цена

{

set { цена = value; }

get { return цена; }

}

 

}

 

class Лампочка

{

private double мощность;

private double цена;

 

public double Мощность

{

set { мощность = value; }

get { return мощность; }

}

 

public double Цена

{

set { цена = value; }

get { return цена; }

}

}

 

class Прибор

{

private Корпус кор;

private Лампочка лам;

private string состояние; //включено или выключено

 

//конструктор

public Прибор(Корпус кор, Лампочка лам, string состояние)

{

this.кор = кор;

this.лам = лам;

this.состояние = состояние;

}

 

//свойство

public string Состояние

{

set { Состояние = value; }

}

 

//вывести данные

public void Показать()

{

Console.WriteLine("{0} {1} {2} {3} {4} {5}", состояние, кор.Тип, кор.Цена, лам.Цена, лам.Мощность);

}

}

 

В основной программе соберем осветительный прибор из корпуса типа «Тюльпан» ценой 800 рублей и лампочки мощностью 60 Вт, ценой 30 рублей.

class Корпус

{

private string тип; // тип корпуса

private double цена;

 

public string Тип

{

set { тип = value; }

get { return тип; }

}

 

public double Цена

{

set { цена = value; }

get { return цена; }

}

 

}

 

class Лампочка

{

private double мощность;

private double цена;

 

public double Мощность

{

set { мощность = value; }

get { return мощность; }

}

 

public double Цена

{

set { цена = value; }

get { return цена; }

}

}

 

class Прибор

{

private Корпус кор;

private Лампочка лам;

private string состояние; //включено или выключено

 

//конструктор

public Прибор(Корпус кор, Лампочка лам, string состояние)

{

this.кор = кор;

this.лам = лам;

this.состояние = состояние;

}

 

//свойство

public string Состояние

{

set { состояние = value; }

}

 

//вывести данные

public void Показать()

{

Console.WriteLine("{0}, {1}, {2}, {3}, {4}, {5}", состояние, кор.Тип, кор.Цена, лам.Цена, лам.Мощность);

}

}

class Program

{

static void Main()

{//1. объявляем ссылки

Корпус к;

Лампочка л;

Прибор п;

 

//2. создаем объкты

к = new Корпус();

к.Тип = "Тюльпан";

к.Цена = 800.0;

 

л = new Лампочка();

л.Мощность = 60.0;

л.Цена = 30.0;

 

//3., 4. контейнер

п = new Прибор(к, л, "Включено");

п.Показать();

 

//меняем лампочку

л.Мощность = 200.0;

п.Показать();

}



Дата добавления: 2019-02-08; просмотров: 651;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.017 сек.