讨论:对象的设计问题

meteor 2003-12-30 04:04:32
职员表{
EmployeeNo
TypeId
Property1
Property2
Property3
Property4
Property5
}
同一机构下不同类别的职员用TypeId来标识,不同类别的职员会使用到Property1-Property5不同的属性(如Property1是共有的属性,而Property3/Property4是特定TypeId的职员才有的属性,且属性之间存在一定的逻辑关系),对不同类别的职员信息会有不同的处理。
映射为对象时,可能有2种方案:1)只定义一个类csEmployee;2)为不同类别的职员定义多个类csEmployeeClass1/csEmployeeClass2。
在不支持继承的情况下请讨论一下这2者之间的利弊?
...全文
43 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
meteor 2004-01-02
  • 打赏
  • 举报
回复
Thank stonespace,thank everybody.
Chuanyan 2003-12-30
  • 打赏
  • 举报
回复
Interface{
long Type;
string properties();
}
stonespace 2003-12-30
  • 打赏
  • 举报
回复
如果使用面向对象设计方法,可以使用继承,如果程序设计语言不支持继承,也可以找到等价的实现方法。所以设计的时候还是要用继承。

方案1)只定义一个类csEmployee;是违反设计原则的做法,不可取。有一个设计原则,不应当用一个类来表示不同类型的对象,如果这样做,就会导致低内聚情况,在方法实现中会出现很多分支switch/case,严重影响可读性,共享的属性还会限制不同对象的自由变化,使修改受到限制。

用方案2才是正确的,程序设计语言不支持继承也没有影响,可以用聚合模拟继承,另外也可以干脆不用继承,这些类可以没有共同父类,最多损失一些可重用性。
hurricane 2003-12-30
  • 打赏
  • 举报
回复
如果你只用一个类,又如何处理只有其中几个属性的职员对象?

还是分别定义多个类吧

1,265

社区成员

发帖
与我相关
我的任务
社区描述
软件工程/管理 管理版
社区管理员
  • 研发管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧