С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Avgust
3 / 3 / 3
Регистрация: 03.11.2014
Сообщений: 80
1

Паттерн Embedded Value

28.05.2015, 01:16. Просмотров 922. Ответов 3
Метки нет (Все метки)

Доброго времени суток, вопрос по паттерну Embedded Value (объединенное свойство). Это тема моей курсовой, нашел про него немного теории, да и в общем про него мало что есть. Помогите пожалуйста с реализацией на С++ с применением классов. Буду очеееень благодарен) До конца курсовой осталась лишь реалицаия на С++)
То, что нашел про этот паттерн ТС: Записывает объект в несколько полей таблицы другого объекта.
Ссылка, для лучшего понимания свойств паттерна: http://design-pattern.ru/patterns/embedded-value.html
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2015, 01:16
Ответы с готовыми решениями:

паттерн и строка C++
Возникла необходимость производить поиск в строке по паттерну, который может...

Паттерн Singleton
Здравствуйте. Например есть класический одиночка и загрузка музыки. Возможно ли...

Паттерн стратегия
Всем привет! Начал изучать паттерны. Одним из наиболее понятных и...

Паттерн декоратор
доброго времени суток уважаемые форумчане, помогите пожалуйста разобраться, где...

Паттерн Builder
Вот у меня есть код примера реализации паттерна Builder(другие примеры не...

3
Andrey36652
3 / 3 / 4
Регистрация: 26.12.2013
Сообщений: 59
28.05.2015, 06:11 2
Лучший ответ Сообщение было отмечено DrOffset как решение

Решение

Опишу, как я сам понял с Вашей ссылки.

Представьте, что у нас есть класс для представления слона.
C++
1
2
3
4
5
6
7
8
class Elephant
{
    public:
        int weight;  //вес
        int height;  //высота
        string name;  //имя
        Color color; //цвет
};
Класс, отвечающий за представление цвета, у нас объявлен ранее
C++
1
2
3
4
5
class Color
{
    public:
        int r, g, b;
};
А теперь представьте, что этого слона нам нужно упихать в таблицу Elephants в MySQL. Но в MySQL не типа данных Color. Вывод: нужно сделать класс-прослойку, чтоб слона можно было по частям запихать в таблицу.

Класс ТабличныйСлон
C++
1
2
3
4
5
6
7
8
9
10
class TableElephant
{
    public:
        int weight;
        int height;
        string name;
        int r;
        int g;
        int b;
};
Здесь мы просто разбиваем Color до базовых типов(в нашем случае int). И в таком виде слона уже можно записать в таблицу. Сборку производим в обратном порядке.
0
Avgust
3 / 3 / 3
Регистрация: 03.11.2014
Сообщений: 80
28.05.2015, 11:54  [ТС] 3
А можно пожалуйста связь между этими классами?) и их использование в main, а то пока не особо разобрался в классах
0
Andrey36652
3 / 3 / 4
Регистрация: 26.12.2013
Сообщений: 59
28.05.2015, 16:55 4
Сначала создадим функцию, которая конвертирует обычного слона в табличного
C++
1
2
3
4
5
6
7
8
9
10
11
12
TableElephant convert(Elephant el)
{
    TableElephant te;
    te.weight = el.weight; 
    te.height = el.height; 
    te.name = el.name;
    te.r = el.color.r;
    te.g = el.color.g;
    te.b = el.color.b;
    
    return te;
}
Она просто разбирает его(слона) до самых базовых элементов.
а в main пишем
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
  Elephant e;   //создаем простого слона и присваиваем ему различные св-ва
  e.weight = 2000;
  e.height = 5;
  e.name = "Vasya";
  e.color = {255, 230, 67};
  
  TableElephant te = convert(e); //конвертируем в табличного слона
}
PS А для этой темы нужно знать классы достаточно хорошо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2015, 16:55

Паттерн Bridge
нужно написать аудиоплеер, используя паттерн Bridge, с помощью которого надо...

Паттерн Singleton
Мне вот дали такой код как паттерн Singleton: #include "stdafx.h" template...

Спасибо за помощь в Embedded C++
Спасибо за помощь! Будем надеяться, что это проканает в Embedded C++. А какой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru