开发 ERP 类似的企业管理信息系统 中设计的一些思考
我们做 ERP 这类管理软件时.在做需求的时候,最常碰到的就是各种各样的表单,我们都知道仓库管理是 ERP 中的一大块,其中涉及到入库单,出库单,还有其它一些表单.在企业没有信息化之前,这些表单以纸张的信息存在着.
然后在做完需求后,我们对这些表单的来龙去脉都比较清楚了,表单里的信息都会保存在数据库中(那是数据库设计中的问题了) 我们现在关注的是在需求比较清楚的情况下,我们会进行类的设计,我们用面向对象的思想来考虑这个问题.
如果是你来设计这个系统,你会把每一张表单设计成一个类吗?由于以前没有做过类似的软件,我看到一些同学做的是时候只是在界面的消息响应函数里进行数据库读写(把表单里的数据写入数据库或者反之),感觉,界面一变化,整体都要变化.如果我想设计出一套独立于界面与数据库的系统,我应该如何来设计这些类呢?
我的设计思想是这样的:举个例子来说明吧!
入库单是描述产品入库的信息的,里面有单号,日期,供应商,入库人员等一些基本信息,还有一些产品的集合.当然产品是有属性的(比如,产品名称,单价,数量,颜色等)
class StorageEntry //入库单
{
ID; //单号
date; //开单日期
productCollection; //描述一些产品的集合
companyProvider; //供应商
public StorageEntry readFromDateBase(); //从数据库中读入数据到表单
public void WriteIntoDataBase(); //将表单数据写入数据库
{
用ID,date...接拼SQL 写入数据库
productCollection.WriteIntoDataBase(); //将产品写入数据库
companyProvider.WriteIntoDataBase(); //将供应商信息写入数据库
}
}
class Company //公司类
{
name;
address;
tel;
public void someOperation(); //一些操作
}
class Product //产品类
{
name;
price;
color;
number;
public someOperation(); //一些操作
}
当然我的类设计的还不规范,但能说明意思就够了.我的一个伙伴反对我这样设计,他说我表面上像是面向对象的设计方法,可是我却把简单的东西搞复杂了.
他们的设计思路是这样的:
class InStorageForm:Form //继承标准库里的Form 类
{
textField ID;
textField name
richBox remark;
button OK;
void OnOK() //响应OK按钮
{
从textField里到各个值
然后用各个值拼接SQL (insert into table1 values(id,name,remarmk....)
把值写入数据库里
}
}
如果开发写起代码来,我感觉我这种思路将会非常慢.
我只是看见软件工程书上说把系统分解成各个类,但是问题是分解后,反而会使系统变得复杂,我不知道我的思路会不会独立于界面与数据库.
希望.非常希望,希望非常 在这方面设计过的经验人员和我一起讨论.
我的E-mail: trymybest121@sina.com
问题点数:50、回复次数:18Top
1 楼yellowhwb(天の羽)回复于 2004-09-02 20:58:20 得分 20
你可以把表单类和操作表单的类分开
class Form
class FormControl
然后通过继承来改变Form和FormControl,这样一个FormControl可以操作多个Form!Top
2 楼The123(Shall We Dance? :))回复于 2004-09-02 21:05:38 得分 0
条条大路通罗马,设计要根据具体情况具体对待,纸上谈兵不行。呵呵。Top
3 楼zhpsam109(JACKY.昊昊)回复于 2004-09-02 21:08:58 得分 0
顶!Top
4 楼trymybest121(观察,想,行动.)回复于 2004-09-02 21:16:44 得分 0
to yellowhwb(KaDoO):
"通过继承来改变Form和FormControl,这样一个FormControl可以操作多个Form!"
我感觉到是很困难的,因为每个表单的内容都不一样,而且数据库读写也有差距的.
比如说,入库单和采购单所关心的东西就不太一样.如果分开呢?
你提到的关于 FormControl 的东西,能不能解释清楚一些?Top
5 楼yuanarea(Sail before)回复于 2004-09-02 22:36:53 得分 0
顶Top
6 楼luluso(真系好难捉摸啊!!)回复于 2004-09-02 22:41:49 得分 0
mark,关注.希望有多点心得或思考....Top
7 楼zhgroup(王员外)回复于 2004-09-02 22:58:42 得分 0
把功能相似的表放到一个类中.Top
8 楼trymybest121(观察,想,行动.)回复于 2004-09-02 23:09:01 得分 0
其实我的伙伴已经把这个系统给做出来了.我们发现在二次需求后有很多地方需要修改,修改起来显得很麻烦. 主要是在 ERP 这方面经验太少! 关于面向对象的设计平时也是谈得多,实现的少!Top
9 楼Night_Elf(风暴虫)回复于 2004-09-02 23:36:01 得分 0
我们公司现在做的系统就是面向对象的,在后台都是对类的操作,其实这样可以减少大量的代码量,但是这却是以频繁打开数据库为代价换来的!Top
10 楼kestrel(隼)回复于 2004-09-02 23:54:26 得分 10
这类东东就是要不停地改。有人说,企业搞ERP之类的东西成立专门的信息部门是上上策,找软件公司来做是下下策。不止是技术实现,管理模式更重要。
兄弟要是做学问的话,按照你自己的想法做下去,会有收获。要是履行商业合同的话,怎么简单怎么来,系统越复杂,可靠性越低。Top
11 楼wybkl88()回复于 2004-09-03 00:19:00 得分 0
只是认识上的问题,无论你采用哪种方法,只要简单,好用,安全就行Top
12 楼sarcophile(食肉动物)回复于 2004-09-03 00:44:39 得分 0
当你在菜场卖鸡蛋时,你不需要专业的财务人员;
当你常年垄断一个城市的副食供应时,你还自己算帐吗?Top
13 楼csq0516(阿松)回复于 2004-09-03 02:19:17 得分 0
upTop
14 楼yellowhwb(天の羽)回复于 2004-09-03 08:13:48 得分 15
to trymybest121(观察,想,行动.)
比如
class form
{
属性一
属性二
属性三
}
class formcontrol
{
private bool update(form objform)
{
//把数据库中objform更新
}
......
}Top
15 楼fanciex(http://BugOnline.net 在线的Bug管理系统)回复于 2004-09-04 14:31:03 得分 0
根据mvc的设计模式,你的设想是对的,但你的m跟c混在一块了不好。
可以参考:
-----------------
回复人: yellowhwb(KaDoO) ( ) 信誉:99 2004-09-02 20:58:00 得分: 0
你可以把表单类和操作表单的类分开
class Form
class FormControl
然后通过继承来改变Form和FormControl,这样一个FormControl可以操作多个Form!
Top
16 楼trymybest121(观察,想,行动.)回复于 2004-09-07 21:40:29 得分 0
同意 wybkl88() 的观点!
主要感觉是时间上来不及!Top
17 楼rouser(流淌的小溪)回复于 2004-09-07 21:55:23 得分 0
你说的是数据实体的概念吧
强类型?Top
18 楼xxw10000()回复于 2004-09-07 22:25:20 得分 5
不需要强制做成类,这样做好象是思路明确、好象是OOP的思路,其实没有必要。
如果你从大的方面来看,form本身就是一个类,这其中当然包括了你对数据库的操作,也包括消息的处理,其实消息本身也就是特殊的方法,这样看的话,其实你已经是按照类的思路进行了Top




