Форум программистов, компьютерный форум CyberForum.ru

Абстрактная фабрика - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Удалить из массива все отрицательные элементы http://www.cyberforum.ru/cpp-beginners/thread589547.html
удалить из массива все отрицательные элементы . под удалением элемента следует понимать : исключение этого элемента из массива путем смешения всех следующий за ним элементов влево на одну позицию.(решите пожалуйста без генератора случайных чисел)
C++ Функциональный тип через typedef Приветствую, нужна помощь в решении задачи: В файле заданы строки из 5-ти чисел: границы отрезка, точность, номер функции и номер метода. Номер функции = {1,2,3}, где 1. f(x)=x3-x-9; 2. f(x)=sinx-1; 3. f(x)=x+2. Номер метода = {1,2}, где 1. хорд; 2. касательных. На заданном отрезке с заданной точностью вычислить приближенно корень уравнения f(x)=0 для заданной функции заданным методом. http://www.cyberforum.ru/cpp-beginners/thread589525.html
Вывести список файлов в каталоге C++
Напишите программу, которая составляет список файлов, расположенных в каталоге, имя которого задается в командной строке и создает текстовый файл, в котором имена файлов располагаются в порядке увеличения количества строк, содержащихся в них.
компилятор с++ C++
кто знает может можно сделать так чтоб компилятор не использовал фиксированных адресов, а использовал только относительное смещение?
C++ Наследование: Создать класс двигатель http://www.cyberforum.ru/cpp-beginners/thread589502.html
Создать класс двигатель, имеющий мощность. Определить конструкторы и метод доступа Создать класс автомашины, содержащий класс двигатель. Дополнительно есть марка (указатель на строку) и стоимость. Определить конструкторы и деструктор. Определить public- производный класс грузовик, имеющий грузоподъемность и тип кузова. Определить конструкторы и функцию печати. Где ошибка в программе? ...
C++ Сформировать массив из n элементов (n<50) Задача 113. Сформировать массив из n элементов (n<50), которыми могут быть только целые числа 0 и 1. Проверить, существует ли строгое чередование 0 и 1. подробнее

Показать сообщение отдельно
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
28.05.2012, 21:24     Абстрактная фабрика
ну если препод так хочет абстрактных фабрик, то можно вот так поступить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
class PlayersFactory
{
public:
  virtual Player* CreateFirstPlayer() const = 0;
  virtual Player* CreateSecondPlayer() const = 0;
};
 
// далее идут конкретные фабрики. имплементация у них простая. не буду писать.
class HumanHumanPlayersFactory : public PlayersFactory {};
class ComputerHumanPlayersFactory : public PlayersFactory {};
class HumanComputerPlayersFactory : public PlayersFactory {};
class ComputerComputerPlayersFactory : public PlayersFactory {};
 
// где-то конкретная фабрика все таки должна создаваться. поэтму какое-то подобие switch
// неизбежно. можно более продвинуто поступить типа сделать мапу в которой ключем будет
// режим игры, а значением - указатель на фабрику. ограничимся простым switch
 
PlayersFactory* CreatePlayersFactory(int gameMode)
{
  // тут в завимимости от режима создается и возвращается конкретная фабрика.
  // но возвращаемый указатель имеет тип базы.
  return someConcreteFactory;
};
 
main()
{
   int mode = 0;
   std::cout << "input game mode: ";
   std::cin >> mode;
 
   PlayersFactory* playersFactory = CreatePlayersFactory(mode);
   Player* firstPlayer = playersFactory->CreateFirstPlayer();
   Player* secondPlayer = playersFactory->CreateSecondPlayer();
 
   // ...
}
 
// Вот такое полусхемотичное решение.
// Нужно еще конечно не забывать удалять динамически созданные объекты, обработку неизвестных режимов и прочее.
// Но это тут не главное. Надеюсь сам принцип будет понятен.
 
Текущее время: 18:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru