Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Опишите графическую нотацию OMT для диаграмм взаимодействия.




 

§ Время на диаграммах взаимодействий откладывается сверху вниз

§ Сплошная вертикальная черта означает время жизни объекта, до момента создания объекта вертикальная линия идет пунктиром

§ Вертикальный прямоугольник говорит о том, что объект активен, т.е. обрабатывает какой-либо запрос (выполняет какой-либо метод)

§ Соглашение об именовании объектов такое же, как для диаграмм объектов

§ Запросы, посылаемые другим объектам (вызовы методов), обозначаются горизонтальной стрелкой, указывающей на объект получатель; имя запроса (метода) показывается над стрелкой

§ Запрос на создание объекта обозначается горизонтальной пунктирной стрелкой

§ Запрос объекта самому себе изображается стрелкой на этот же объект

В чем заключается принцип программирования в соответствии с интерфейсом, а не реализацией?

 

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

§ Такой подход может кардинально уменьшить число зависимостей между подсистемами

§ Но, т.к. клиенты не знают, объекты какого конкретного класса будут созданы, следовательно, самостоятельно создать эти объекты не могут; здесь приходят на помощь порождающие паттерны

Изобразите диаграмму классов для паттерна «Абстрактная фабрика».

 

Как связаны между собой паттерны «Фабричный метод» и «Абстрактная фабрика»?

Абстрактная фабрика реализуется с помощью фабричных методов.

Фабричный метод - является частным случаем абстрактной фабрики с одним видом продукта.

Разница лишь в том, что фабрика создает семейства (наборы) объектов

 

Опишите на языке C# несколько классов/интерфейсов, в совокупности реализующих паттерн «Абстрактная фабрика».

КОД:/* type1 of objects */

interface Type1

{ void DoIt();

}

class Type1Object1: Type1

{ public void DoIt()

{

Console.WriteLine("type 1 object 1");

}

}

class Type1Object2: Type1

{

public void DoIt()

{

Console.WriteLine("type 1 object 2");

}

} /* type2 of objects */

interface Type2

{ void DoIt();

}

class Type2Object1: Type2

{ public void DoIt()

{

Console.WriteLine("type 2 object 1");

}

}

class Type2Object2: Type2

{ public void DoIt()

{

Console.WriteLine("type 2 object 2");

}

} /* фабрики */

interface Factory

{

Type1 GetType1();

Type2 GetType2();

}

class ConcreteFactory1: Factory

{

public Type1 GetType1()

{

return new Type1Object1();

}

public Type2 GetType2()

{

return new Type2Object1();

}

}

class ConcreteFactory2: Factory

{

public Type1 GetType1()

{

return new Type1Object2();

}

public Type2 GetType2()

{ return new Type2Object2();

}

} //main program

class Program

{

static void Main(string[] args)

{

Factory factory = new ConcreteFactory2(); //определяем какой объет будет создаваться

Type1 obj1 = factory.GetType1();

Type2 obj2 = factory.GetType2();

obj1.DoIt();

obj2.DoIt();

Console.ReadLine();

}

}

В каких ситуациях следует использовать паттерн «Прототип»? С помощью каких средств в.NET можно реализовать данный паттерн?

 

§ Задает виды создаваемых объектов с помощью экземпляра-прототипа и создает новые объекты путем копирования этого прототипа

§ Используется когда/для:

инстанцируемые классы определяются во время выполнения, например с помощью динамической загрузки

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

Изобразите диаграмму взаимодействия для паттерна «Строитель».

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...