2012-04-02 4 views
4

Для школьного задания мне нужно создать программу на C++, которая будет создавать и управлять бинарной плоской файловой базой, содержащей студентов и студентов-студентов. Студенты-младшие в основном такие же, как и обычные ученики, но с некоторыми добавленными полями. Данный намек заключается в том, что мы можем использовать шаблоны.Лучший дизайн ООП для базы данных

Моя проблема заключается в структурировании этого дизайна. Я попытался следующим:

  • Создание Person класса, содержащего string переменных с student и в undergrad класс, который наследует от него и добавить больше переменных для полей. Это работает, но это становится очень трудно, чтобы добавить больше типов людей позже, так что я пробовал:
  • Создание Person класса, который содержит map<string, string>, из которого Undergrad и Student унаследует и database класса, содержащий vector<Person>, к которому те добавлены , В Person::map<string, string> я добавил разные поля и их значения, такие как имя, адрес и т. Д.

Я не уверен, что я правильно поеду с этим. Существует ли стандартный шаблон проектирования, который используется для таких вещей?

+5

Закрыть избиратель, о чем вы думали? – GolezTrol

+0

@ Golez - Давай, «Какой лучший дизайн для базы данных?». –

+0

@BoPersson Я знаю, что это не вопрос с одним, очевидным ответом, но я думаю, что я могу узнать гораздо больше об этом задании, если я попрошу внести вклад в сообщество, а не просто закончить курс с помощью первого решения, которое работает. В ретроспективе я мог бы выбрать лучший титул, да, да. –

ответ

2

Правильный подход зависит в большей степени от того, что вам нужно для системы. Ваш первый подход - это более стандартная архитектура C++, если вы знаете, что система будет специализироваться вокруг требований, которые вы указали, и вам нужна более высокая производительность во время выполнения.

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

Если вы знаете все требования к системе (какие запросы будут сделаны, что ожидается от поддержки, и т. Д.), Это лучше сообщит ваше решение, поэтому вы должны четко прояснить это.

Удачи вам!

2

Остерегайтесь иерархии классов для «наследования». Большую часть времени вы будете получать только в том случае, если существует «Принцип замещения Лискова», т. Е. Вы можете взять объект под названием «человек» и вызвать функцию на этом, не зная, каков их реальный тип.

Обратите внимание, что Лисков был женщиной и опубликовал этот принцип в начале 80-х годов, я думаю.

Смежные вопросы