我正在尝试将一些 OOP 原则应用于某些 C 抽象数据类型模型。给定一个抽象员工的 ADT,其中员工实例是不可变的(当实例化员工时,它给出了一个唯一的主键名称和姓氏,并且这个主键在员工对象生命周期中保持不变)我想知道这个 ADT 是否应该关心保存他在数据库中的数据。
给定这段 ADT 代码:
static char* address; //Address of the Employee
TakeNewAddress(char* newaddress)
{
.....
}
GiveAddress(char* address)
{
....
}
SetAddress 方法应该将 newaddress 的内容复制到他的地址属性中并将其保存到数据库中,还是应该只更新他的地址属性? GiveAddress 应该返回地址变量还是应该从数据库中检索它?
我认为这个代表员工的 ADT 不应该关心内部数据库(这不是你问员工的事情),所以将他的数据保存到数据库中应该由一个特殊的处理程序或用户界面在这个 ADT 之外执行系统。
我不确定将 Employee 定义为 ADT 会给您带来很大的实际好处。我可能是错的,但我习惯于将 ADT 视为数据结构,而不是业务特定实体的定义。
除了那个评论,我认为你的逻辑是绝对正确的。 ADT 应该是关于操作、值(value)和约束的,在我看来它应该与持久性无关。如何将类型存储为一个整体与它无关,我不会将其耦合到数据库。
我是一名优秀的程序员,十分优秀!