ТОП 10:

Перечислите, какие связи между классами выделяются в графической нотации OMT, как они обозначаются?



 

§ Инстанцирование

§ Наследование

 

§ Агрегирование

 

§ Осведомленность (ассоциация, использование)

Поясните разницу между агрегированием и осведомленностью.

 

И агрегирование, и осведомленность – способы композиции объектов и делегирования функциональности

Агрегирование Один объект владеет другим или несет за него ответственность

Агрегат и его составляющие имеют одинаковое время жизни

Осведомленность Одному объекту известно о другом объекте

Осведомленные объекты не несут никакой ответственности друг за друга

Осведомленность более слабое отношение, чем агрегирование

Опишите графическую нотацию 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 можно реализовать данный паттерн?

 

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

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

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

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







Последнее изменение этой страницы: 2016-08-14; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.239.172.52 (0.008 с.)