Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт ООП Лаб 3.docx
Скачиваний:
6
Добавлен:
12.05.2015
Размер:
125.69 Кб
Скачать

Скріншоти

Рис. 2 результат виконання першої програми

Завдання 2 Коротке обгрунтування вибору шаблону проектування

Абстрактна фабрика надає простий інтерфейс для створення об’єктів, які належать до того чи іншого сімейства.

Одинак забезпечує існування єдиного екземпляру класу та єдиного доступу до нього.

Uml-діаграмма класів

Рис. 1 UML діаграма для другої програми(Абстрактна фабрика, Одинак)

Текст 2-ї програми

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace NewYear

{

class Program

{

static void Main(string[] args)

{

int boys = 10;

int girls = 10;

SantaClaus santa = SantaClaus.CallSantaClaus();

SnowMaiden maiden = SnowMaiden.CallSnowMaiden();

List<Box> forBoys = new List<Box>();

List<Box> forGirls = new List<Box>();

for (int i = 0; i < boys; i++) forBoys.Add(new Box(santa));

for (int i = 0; i < girls; i++) forGirls.Add(new Box(maiden));

foreach (Box tmp in forBoys)

Console.WriteLine( tmp.LookInTheBox());

foreach (Box tmp in forGirls)

Console.WriteLine(tmp.LookInTheBox());

Console.ReadKey();

}

}

}

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace NewYear

{

interface GiftFactory

{

Toy AddToy();

Candy AddCandy();

}

class SantaClaus : GiftFactory

{

private Random myRand = new Random();

private static SantaClaus _SantaClaus=null;

private SantaClaus() { }

public static SantaClaus CallSantaClaus()

{

if (_SantaClaus == null)

_SantaClaus = new SantaClaus();

return _SantaClaus;

}

public Toy AddToy()

{

if (myRand.Next(2) == 0)

return new Pistol();

else

return new Car();

}

public Candy AddCandy()

{

return new BlueCandy();

}

}

class SnowMaiden : GiftFactory

{

private Random myRand = new Random();

private static SnowMaiden _SnowMaiden=null;

private SnowMaiden() { }

public static SnowMaiden CallSnowMaiden()

{

if (_SnowMaiden == null)

_SnowMaiden = new SnowMaiden();

return _SnowMaiden;

}

public Toy AddToy()

{

if (myRand.Next(2) == 0)

return new Puppet();

else

return new Bear();

}

public Candy AddCandy()

{

return new PinkCandy();

}

}

interface Toy

{

string GetInfo();

}

class Pistol : Toy

{

public string GetInfo()

{

return "Пістолет";

}

}

class Car : Toy

{

public string GetInfo()

{

return "Автомобіль";

}

}

class Puppet : Toy

{

public string GetInfo()

{

return "Лялька";

}

}

class Bear : Toy

{

public string GetInfo()

{

return "Медвідь";

}

}

interface Candy

{

string GetInfo();

}

class BlueCandy : Candy

{

public string GetInfo()

{

return "Цекерки(блакитна обгортка)";

}

}

class PinkCandy : Candy

{

public string GetInfo()

{

return "Цекерки(рожева обгортка)";

}

}

class Box

{

private Toy _toy;

private Candy _candy;

public Box(GiftFactory factory)

{

_toy = factory.AddToy();

_candy = factory.AddCandy();

}

public string LookInTheBox()

{

return ("В подарунковій коробці:\n" + _toy.GetInfo() + "\n"

+ _candy.GetInfo() + "\n");

}

}

}