数据库的最佳OOP设计

Best OOP design for database

本文关键字:设计 OOP 最佳 数据库      更新时间:2023-10-16

对于学校作业,我必须创建一个C++程序,该程序将创建和管理一个包含学生和本科生的二进制平面文件数据库。本科生与师范生基本相同,只是增加了一些领域。一个提示是我们可以使用模板。

我的问题在于设计的结构。我试过以下几种:

  • 创建一个包含string变量的Person类,studentundergrad类从中继承,并为字段添加更多变量。这很有效,但以后很难添加更多类型的人,所以我尝试:
  • 创建包含UndergradStudent从中继承的map<string, string>Person类,以及包含vector<Person>database类。在Person::map<string, string>中,我添加了不同的字段及其值,如名称、地址等

我不确定我的做法是否正确。有没有一个标准的设计模式用于这样的事情?

正确的方法更多地取决于你需要系统做什么。如果你知道系统将围绕你列出的需求进行专业化,并且你想要更好的运行时性能,那么你的第一种方法是更标准的c++架构。

地图方式可以让你实现一种更通用的方法,但代价是清晰度、专门的访问者等等,所以我猜这不是你的老师想要的方法。

如果你知道系统的所有要求(将进行什么样的查询,期望支持什么,等等),它将更好地通知你的决定,所以你应该明确这一点。

祝你好运!

注意"继承"的类层次结构。大多数时候,只有当存在"Liskov置换原理"时,你才会推导出,即你可以取一个名为"person"的对象,并在不知道其真实类型的情况下调用该对象上的函数。

请注意,利斯科夫是一位女性,我认为她在80年代初发表了这一原则。