论坛首页 Java企业应用论坛

数据建模 vs 对象建模 (从Ofbiz帖子切分出来的)

浏览 76827 次
该帖已经被评为精华帖
作者 正文
   发表时间:2003-11-19  
robbin 写道
引用
明显,这样就极端不爽了。我为了实现这么一个看来是纯对象的东西,却要引入许多如此复杂的不直观的东西。


??????


     不是很清楚你打“?”干什么? 确实是timeRange的行为我们为什么要搞个什么控制类?
0 请登录后投票
   发表时间:2003-11-19  
看了这么多意见,我的想法是对象建模解决的是软件结构方面的问题。OO 使软件有了更加灵活的结构,需求发生变化时可以很容易地适应变化(只需要修改少量的代码)。但是在遇到一些复杂的问题时,解决问题的具体方法是对象建模无法提供的。例如《Effective Java》这本书告诉我们如何写性能更好的 Java 程序,但是它基本上与 OO 是无关的。
以前见到过有人争论 OO 和算法到底哪个更重要。我倾向于认为 OO 更重要,但是算法也是非常重要的,因为它是解决问题的基本的思路。M$ 招人不考 OO,甚至会考一些与计算机无关的问题,他们主要考察的就是你解决问题的思路。

从通用性的角度,软件科学分为以下一些内容:
数据结构+算法:具有最高的通用性,适合于各种场合。
对象建模:较高的通用性,适合于复杂的应用系统。
数据建模:通用性低于对象建模。
OLAP、数据挖掘:专门的领域,通用性最低。
0 请登录后投票
   发表时间:2003-11-19  
weihello 写道
借此帖帮助我消除一个疑问吧。
  通常我们需要持久的是纯粹的数据对象---只有数据没有业务操作。

  但随着如果用对象建模,极有可能存在这么一个问题,我的实体对象具有较多的体现逻辑的行为。比如,实体对象:timeRange. 它不仅具有属性,也具有行为。

  public   class   XxxTimeRange extends ITimeRange{
         private XXXX startTime;
         private XXXX endTime;
         public ITimeRange intersect(ITimeRange timeRange);;
}

 
  从软件分层次以及考虑不暴露实体对象的角度看,也即是采用DTO或者VO,那么我这个timeRange如何处理?客户程序可能要利用我的timeRange的借口。在DTO或者VO里面重复实现一次嘛?这明显不可能。DTO和VO基本上纯粹的数据对象。抑或是增加一个类似Adapeter的东西?

  此时,我们应该如何处理,


我不认为intersect()是XxxTimeRange的一种自身行为,所以不应该作为XxxTimeRange 的业务方法,我觉得它放到一个Helper类里会更合适。
0 请登录后投票
   发表时间:2003-11-20  
youcai 写道


此模型非彼模型:),我说的是业务模型,都是和业务相关的。
业务专家比你更知道哪些业务会扩展,哪些业务会复用,他根本不关心open-closed。业务的复用更有价值,也更难。这好像是现在很多公司的开发目标,业务中间件,或者业务基础件都是围绕这个目标来的。对熟悉业务的人员进行必要培训,利用业务设计器,类似于画画业务流程图就实现大部分业务代码,然后生成相关代码,系统就跑起来了。
不过目前还没有完全成熟的产品。金碟,用友,思维加速都在推,有兴趣的朋友,可以去了解了解。
这就更跑题了
这类产品也是需要开发的,都会有一套框架,并更加注意扩展性。


   同意Quake Wang的看法,很多东东具有通用性。
  所谓业务模型,当然,比如ERP专家也是有地。但看你有没有这方面的专家,问题还有,如果这个专家够专家,还好;如果是为了专家而专家的专家,那你就惨啰:改不完的程序,改不完的不断变化的业务逻辑。:)
0 请登录后投票
   发表时间:2003-11-20  
数据建模和对象建模是要从系统的需求和侧重点出发. 象数据量不大, 业务流复杂的系统可以先设计domain object layer,
然后去设计data access layer, 设计中要做用DAO把OR Mapping和stored proc做到portable. 开发时可以先用OR Mapping去访问数据库, 在系统设计开发后期再把繁重批量的数据库访问放到stored proc里
最后在根据用户交互和分布式的需要去设计service facade layer, 不是所有的domain object 都必需在service facade之后. service facade的设计有点象stored proc的设计, 可以在设计开发后期再根据性能和重用的考虑去做.

我们一般是先写一个很简单的可以满足系统功能的程序出来, 先不考虑分布,重用和性能, 然后在用上面分层的原理用一些adapter把他分开.
0 请登录后投票
   发表时间:2003-11-20  
potian兄发言语出惊人,经过兄弟仔细查找,原来potian兄是。。。。
是。。。。。。。。。。。。。
浙江大学灵峰科技开发公司技术总监  石一楹
而且在很多论坛上都是很了不起的人物啊 ,佩服!
0 请登录后投票
   发表时间:2003-11-20  
spy 写道
potian兄发言语出惊人,经过兄弟仔细查找,原来potian兄是。。。。
是。。。。。。。。。。。。。
浙江大学灵峰科技开发公司技术总监  石一楹
而且在很多论坛上都是很了不起的人物啊 ,佩服!


   N年前的事情了,呵呵。
0 请登录后投票
   发表时间:2003-11-20  
给出potian的erptao组织新主页:

http://douleimi.vicp.net/
0 请登录后投票
   发表时间:2004-02-26  
各种对象对应着不同的层面,提供了移植的灵活性,同时带入了一些烦杂的东西。
0 请登录后投票
   发表时间:2004-03-10  
在数据建模和面向对象建模上,我认为不是一个主要问题,应该说现在的数据建模经过发展已经融入了面向对象的内容,有两个例子可以证明这点,在现在的数据库设计工具如ERSTUDIO,ERWIN或PD都支持IDREF方式的表现关系,其二就是OFBIZ的EE,你不能说它是完整的数据建模,实际上在设计EE模型的时候,你很少用传统的数据库设计理论去设计,而是从对象的角度考虑问题。所不同的是,我们需要将集合类属性设计成另一个对象,然后再建立组成关系。因此可以说,这里的争论是不是意义不大。仅仅是一些操作
上的区别,而建模思想上并没有差别。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics