Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Лабораторная работа №1. Агрегация по ссылкеСодержание книги
Поиск на нашем сайте
Рис.1. диаграмма классов: агрегация по ссылке. Текст программы using System; using System.Collections.Generic; using System.Linq;
using System.Text; using System.Threading.Tasks;
namespace lab1_AgregationLink { class Program { class A { public A(B b, C c) { this.b = b; this.c = c;
c.cq = 24; } ~A() { }
public void mA() { Console.WriteLine("method of A"); }
public B bA { set { Console.WriteLine("set b"); b = value; } get { Console.Write("get b ->"); return b; } } public C cA //возвращает ссылку на обьект С, у которого вызывается метод сА - атрибут доступа { set { Console.WriteLine("set c"); c = value; } get { Console.Write("get c ->"); return c; } }
private B b = null; private C c = null; }
class B { public B(D d) { this.d = d; } ~B() { } public void mB() { Console.WriteLine("mthod of B"); } public D dA { set { Console.WriteLine("set d"); d = value; } get { Console.Write("get d ->"); return d; } }
private D d = null; }
class C { public C(E e, J j) { this.e = e; this.j = j; } ~C() { }
public void mC() { Console.WriteLine("method of C"); }
public E eA { set { Console.WriteLine("set e"); e = value; } get { Console.Write("get e ->"); return e; } }
public J jA { set { Console.WriteLine("set j"); j = value; } get { Console.Write("get j ->"); return j; } }
//атрибут доступа public int cq { get; set; }
private E e = null; private J j = null; }
class D { public D() { } ~D() { } public void mD() { Console.WriteLine("Method of D"); } }
class E { public E() { } ~E() { } public void mE() { Console.WriteLine("Method of E"); } }
class J { public J(K k) { this.k = k; } ~J() { } public void mJ() { Console.WriteLine("Method of J"); } public K kA { set { Console.WriteLine("set k"); k = value; } get { Console.Write("get k ->"); return k; } } private K k = null; }
class K { public K() { } ~K() { } public void mK() { Console.WriteLine("Method of K"); } } static void Main(string[] args) { //создание объектов, которые будут частью других объектов D d = new D(); E e = new E(); K k = new K();
//передаем выше созданные объекты классов в виде параметра в конструкторы классов B, C и A. B b = new B(d); J j = new J(k); C c = new C(e, j); A a = new A(b, c);
//печать атрибута доступа Console.WriteLine("печать атрибута доступа:"); Console.WriteLine(c.cq);
//проверка, что передаётся по ссылке Console.WriteLine("передача по ссылке:"); a.mA(); a.bA.mB(); a.cA.mC();
a.bA.dA.mD();
a.cA.eA.mE(); a.cA.jA.mJ();
a.cA.jA.kA.mK();
Console.ReadKey(); } } } Результат работы программы: Вывод: Объекты всех классов существуют независимо друг от друга. Связывание объектов происходит с помощью конструктора.Например, b, c — параметры для конструктора класса A; d — для конструктора класса B; e, f — для конструктора класса C. Объекты могут быть уничтожены по отдельности. Это нарушит целостность структуры. Если удалить объект a, объекты b, c и т.д будут продолжать существовать и дальше. Агрегация по ссылке очень выгодна, так как она расходует очень мало памяти.
|
||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2021-07-18; просмотров: 203; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.009 с.) |