请问如何进行以下类的设计

vfp_system 2006-09-11 10:41:37
现有表结构如下:
人员表:
  工号 姓名 性别 职位代码 部门代码 
部门表:
  部门代码 部门名称
职位表:
  职位代码 职位名称

第一种:
  private string 工号
  private string 姓名
  private string 性别
  private string 职位代码
  private string 部门代码
第二种:
  private string 工号
  private string 姓名
  private string 性别
  private string 职位代码
private string 职位名称
  private string 部门代码
private string 部门名称

现在主体是人员,对人的操作主要有与DATAVIEW的绑定显示,人的新增、更新、删除等操作,
请问人员类要怎么设计才能满足以上几个操作的要求?
第一种方法便于对人员的新增、更新及删除,
第二种方法便于对显示的操作,不需再作处理,显示到界面中就是直接是中文名称而不是代码啦。

请问以上两种方法采用哪种?或者是有更好的设计方法?

...全文
268 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxwin01 2007-02-12
  • 打赏
  • 举报
回复
newClass:baseClass
这里用base和new不是真的取此名,如员工基类和详细员工都有是员工类这里只说明一种关系,虽然归属设计优先考虑,但继承并不是遗弃不用.如果你做过orm工具你会赞同此用.
jxf654 2007-02-10
  • 打赏
  • 举报
回复
up
yan53125 2007-02-08
  • 打赏
  • 举报
回复
留个名,关于建表的问题我还在学习..
ll_e_mail 2007-02-08
  • 打赏
  • 举报
回复
public newClass:baseClass//这种继承违被的is a 的原则
{
}
Ivony 2006-09-22
  • 打赏
  • 举报
回复
用第一种,把后面两张表缓存到内存里,然后再写两个属性从缓存中获取部门和职位信息公布出去。也就是说数据是第一种,接口是第二种。
xiaomaolover 2006-09-22
  • 打赏
  • 举报
回复
顶...

同...
http://community.csdn.net/Expert/topic/5039/5039626.xml?temp=.445141
cancerser 2006-09-11
  • 打赏
  • 举报
回复
第二种 更好一些,如果数据不是很多,可以用这个结构一个dataSet全取进来,就算分开取,取入的有效数据量也不会改变。这样还少了一次数据交互。
通过dataSet进行更新等操作应该不麻烦吧

说实话 我到没看出 ”第一种方法便于对人员的新增、更新及删除“ 比第二种方便多少
kissknife 2006-09-11
  • 打赏
  • 举报
回复
如果用作表的映射的话当然用第一种

如果纯粹只是写一个人员类,肯定用第二种
lxwin01 2006-09-11
  • 打赏
  • 举报
回复
第二种就可以了,至于你说的“显示到界面中就是直接是中文名称而不是代码啦”加载信息由Sql去完成.没有什么冲突.
select 人员表.*,部门表.部门名称,职位表.职位名称 from 人员表,部门表,职位表 where 人员表.部门代码=部门表.部门代码 and 人员表.职位代码=职位表.职位代码
如果有人没有部门或职位,你以人员表左联操作。
vfp_system 2006-09-11
  • 打赏
  • 举报
回复
顶,这里人气也太差劲啦吧!
vfp_system 2006-09-11
  • 打赏
  • 举报
回复
namhyuk(namhyuk)

我的外键表肯定还有其他的很多信息,
难道你说用DATAGRID的主、子表嵌套来做界面?
即在主表显示的界面上放一个按钮或其他的链接,单击它后显示子表相关信息?
这只是界面的实现方法,还是没有回答类怎么设计这个问题,一般都采用哪种方法设计类?
namhyuk 2006-09-11
  • 打赏
  • 举报
回复
对了,
private string 部门代码
private string 部门名称

如果部门相关的信息也就这点,那你还不如整合到一个表里。
如果部门还有什么,电话、负责人、办公地点等等其他信息,但按设计原则你最好分开~
namhyuk 2006-09-11
  • 打赏
  • 举报
回复
粗看了一下,第一个更附合数据库设计原则。

其实显示时在第一个表里显示相关表的名称而不是ID,这个用vs2005设计界面几个鼠标操作就可以啦。
vfp_system 2006-09-11
  • 打赏
  • 举报
回复
都经常用到
fd7893 2006-09-11
  • 打赏
  • 举报
回复
那要看你那方面的应用比较多了
Santos 2006-09-11
  • 打赏
  • 举报
回复
赞同第二种方法.

原因很简单,就是它符合使用习惯和显示习惯。:)
lxwin01 2006-09-11
  • 打赏
  • 举报
回复
public interface IBaseProcessor
{
void Delete(baseClass baseInfo);
void Update(baseClass baseInfo);
void Append(baseClass baseInfo);
}
public baseClass
{
  private string 工号
  private string 姓名
  private string 性别
  private string 职位代码
  private string 部门代码
...
}

public baseProcessor:IBaseProcessor
{
//自己实现去
}

public newClass:baseClass
{
private string 职位名称
private string 部门名称
...
}

public interface INewProcessor
{
NewClassCollection Load();
//或者
DataTable Load();
}

public newProcessor:baseProcessor,INewProcessor
{
//自己实现INewProcessor
}

这样加载显示的部分只要关心INewProcessor接口,并实现它即可
保存的过程中只要关心IBaseProcessor在baseProcessor中实现接口的方法去处理
由于newClass是baseClass继承下来,所以操作显示都没冲突。
你只需创建newClass和newProcessor,当然你可以写在一起,虽然这里没有用适配器,和装饰也够你用了。
cancerser 2006-09-11
  • 打赏
  • 举报
回复
这还不满意,也太挑剔了
~
选第二的原因就是 对于面向对象,对象的属性我宁可事先声明全(那怕不用),也不再组装它
_西瓜皮_ 2006-09-11
  • 打赏
  • 举报
回复
留个名,日后看。
vfp_system 2006-09-11
  • 打赏
  • 举报
回复
再顶,答案都不满意!

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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