|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.07.2017, 20:05 | #1 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Проектирование репозитория сотрудников разных типов
У меня есть такая иерархия классов для сотрудников разных типов:
Код:
Для получения сотрудников создал репозиторий: Код:
Еще один вопрос: чтобы передавать в методы целого сотрудника и не нагружать базу запросами, я написал класс сотрудника так, чтобы в нем были только поля, поэтому создал конструктор, который инициализирует все поля: Код:
Как подсчитать сумму выплат всем сотрудникам? Дополнение. Зарплата Manager и sales расчитывается в зависимости от суммы зарплат их подчиненных. Как впихнуть список подчиненных в классы Manager и Sales и сделать отложенную инициализацию? Последний раз редактировалось Aoizora; 07.07.2017 в 20:13. |
07.07.2017, 20:15 | #2 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Хранить ответ из базы, в классе методы типа getID(), которые выдергивают этот ID из ответа базы, т.е. такой разбор все равно где-то будет, почему не сделать его отложенным.
Т.о. все поля класса вообще пропадают - вместо них 1 поле - ответ базы. Можно пойти далее, совсем все эти классы убрать к черту. Сделать набор шаблонов, которые из ответа базы дают поле. А сущность для хранения - собственно сам ответ. (сотрудник = ответ). |
07.07.2017, 20:20 | #3 | |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Цитата:
А как это сделать на шаблонах? Хотя бы примерно. |
|
07.07.2017, 21:29 | #4 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
Это такая пеленка простых методов где-то в хидере будет....а потом в программе что-то типа auto id = get<int>(db_resp, "id"); ...а можно вообще все в std::tuple завернуть, т.к. это будет прямое отображение на колонки таблицы. Буквально прописали таблицу в БД, сделали Код:
...можно совсем извратится, сделать какой-нить генератор на скрипт-языке, который читает SQL, и генерит обвертку-классы для С++. Вопщем тут весь вопрос, насколько просто вы хотите вносить изменения в структуру БД, и как много ручных изменений нужно делать в С++. Последний раз редактировалось alexzk; 07.07.2017 в 21:40. |
|
07.07.2017, 21:40 | #5 | |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Цитата:
|
|
07.07.2017, 21:41 | #6 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
...да, не проверяя, т.е. это уже ручная работа, при внесении изменений. В Qt это через варианты решено. Я еще к ним макросы клеил с пропертями, типа так (фрагменты) Код:
Код:
Последний раз редактировалось alexzk; 07.07.2017 в 21:46. |
|
07.07.2017, 21:46 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
|
07.07.2017, 21:50 | #8 | |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
Цитата:
|
|
07.07.2017, 21:56 | #9 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
...у меня сейчас, для подобных задач, где нужна рефлексия, доминирует идея такая: прикрепрялем к С++ Lua. Набор шаблонов для удобного луа - с++ приведения и проверки типа есть.
А дальше задачу решаем в луа. Т.о. много че решается - сохранение проекта, конфиги, базы данных - все это можно представить как луа код, а потом просто прогнать его через интерпретатор и получить ответ в С++. |
08.07.2017, 13:35 | #10 |
Заблокирован
Регистрация: 11.11.2016
Сообщений: 261
|
>auto id = get<int>(db_resp, "id");
Что такое db_resp? Синглтон, хранящий соединение? Пытаюсь написать такой шаблон, который бы возврщал атрибут для данного работника. Код:
Второе. Как кастить QVariant в ReturnType? Последний раз редактировалось Aoizora; 08.07.2017 в 13:57. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проектирование классов для расчета зарплаты сотрудников разных типов | Aoizora | C/C++ Базы данных | 1 | 17.06.2017 19:36 |
Открытие разных типов файлов!!!! | mikisss | Помощь студентам | 10 | 11.06.2014 12:13 |
Вывод профайлов разных типов | Krasi | PHP | 6 | 21.07.2010 18:44 |
произведение разных типов | Асхат | Microsoft Office Excel | 2 | 23.04.2010 01:02 |
Перевод переменных разных типов | LeoN | Общие вопросы Delphi | 3 | 23.03.2007 00:15 |