论坛首页 Java企业应用论坛

面向对象/OO的设计方法(自己总结)

浏览 4738 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (6)
作者 正文
   发表时间:2008-04-22  
以下内容自己总结了一些,还有一些参考了一些网络上的资料,有什么错误的地方各位欢迎提点,非常感谢。

在面向对象开发过程中一般会按顺序需要建三种模型
模型解释
1.对象模型(画类图)
对象模型用是用来模拟显示生活中实体对象之间彼此的关系,描述了系统的静态结构。
对象和对象之间一般包含4中关系。
分别是继承关系、组合关系、关联关系(一对多、多对多、一对一)、依赖关系。
可参考资料:类与类关系的UML图与代码表现

2.动态模型(画流程图)
动态模型是用来描述对象的状态、触发状态改变的事件和对象的行为。

3.功能模型(一般不画,目前不知道该画什么)
用来说明系统该做什么,更直接反映用户对目标系统的需求

OOA建模顺序(就是画类图/设计对象的顺序)
1.标识对象
描述如何发现对象和类,从系统应用的领域或者说从问题陈述中提炼出对象

2.标识结构
首先确定对象之间的关联,然后确定类的层次,然后识别整体/部分结构(就是描述类的组合和关联关系),最后确定结构。

3.定义属性和实例的联系
定义对象里面的具体属性,比如名称、分类等等,然后说明对象之间交互的具体操作是什么。

4.定义操作和消息联系
就是说定义一些方法,比如数据的CRUD,或者对数据进行一些计算。

OOD面向对象的设计原则
OO的五大设计原则
61条面向对象设计的经验原则



在实际开发中我也尝试过使用以上方法,可是由于开发时间比较紧,一直没有进行过很好的设计,然而就算经过了一定的设计以后,在具体开发过程当中还是会发现有很多东西没有考虑到,不知道是设计时间不够设计的不到位呢,还是设计功力不到家。
   发表时间:2008-04-23  
貌似还没有用例来确定系统用户
0 请登录后投票
   发表时间:2008-04-23  
Joo 写道
貌似还没有用例来确定系统用户

功能模型应该就是用例吧...
请指教
0 请登录后投票
   发表时间:2008-04-23  
ericxu131 写道
Joo 写道
貌似还没有用例来确定系统用户

功能模型应该就是用例吧...
请指教

恩 应该是 但是你上面说到的这几个模型之间应该也是在项目中按照先后顺序迭代产出的吧
如果一开始没有根据需求提炼出来的用例
如何提炼出业务模型呢
0 请登录后投票
   发表时间:2008-04-23  
OOA/D就两句话:
1. 找出对象
2. 分配职责

0 请登录后投票
   发表时间:2008-10-11  
rocwon 写道
OOA/D就两句话:
1. 找出对象
2. 分配职责


就这两句话,难如登天阿
1、找出对象:一些能从客观抽象出来的事物好找,比如,图书、书架等等。但是一些辅助系统构建而设计的对象就难找了,比如说 图书馆里每个图书在入官的时候都要盖戳,那么可以创建一个“盖戳任务”类和“盖戳任务执行器”类来完成这个任务,盖戳任务执行器 从客观世界抽象不出来,怎么才能从外界获取知识而分析出我们确实需要 盖戳任务执行器 类,这个够难度。

2、分配职责:这就更难了,人 和 苹果 两个类有人吃苹果的动作,是应该给人吃苹果动作,还是应该给苹果被人吃的动作?一般人们设计更喜欢主动形式的,但也不见得。现在我找不到什么能快速的最精确的分配职责思路,一切都需要对外界的高度分析抽象能力和判断力。
0 请登录后投票
   发表时间:2008-10-11  
bloodrate 写道
rocwon 写道
OOA/D就两句话:
1. 找出对象
2. 分配职责


就这两句话,难如登天阿
1、找出对象:一些能从客观抽象出来的事物好找,比如,图书、书架等等。但是一些辅助系统构建而设计的对象就难找了,比如说 图书馆里每个图书在入官的时候都要盖戳,那么可以创建一个“盖戳任务”类和“盖戳任务执行器”类来完成这个任务,盖戳任务执行器 从客观世界抽象不出来,怎么才能从外界获取知识而分析出我们确实需要 盖戳任务执行器 类,这个够难度。

2、分配职责:这就更难了,人 和 苹果 两个类有人吃苹果的动作,是应该给人吃苹果动作,还是应该给苹果被人吃的动作?一般人们设计更喜欢主动形式的,但也不见得。现在我找不到什么能快速的最精确的分配职责思路,一切都需要对外界的高度分析抽象能力和判断力。



还是重构比较容易,设计的时候主要考虑职责分配问题,代码写的方法多一些,看到有哪些坏代码的味道的时候考虑重构。没必要追求死板OO,写出来的东西快是第一位的,很多地方过度OO和设计模式会造成资源浪费和时间浪费的。
0 请登录后投票
   发表时间:2008-10-21  
同意楼上所说的,不要因为设计而去设计,设计的目的是为了高效率的开发,如果设计的太复杂往往会造成时间的浪费,当然设计是需要的,我觉得适当的使用设计是不错的。
0 请登录后投票
论坛首页 Java企业应用版

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