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

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002127.docx

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

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


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

 

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

 

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

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

 

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; п.Показать();

}

 

Композиция на осн


 

Посмотрите также