`
ericxu131
  • 浏览: 189551 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多
以下内容自己总结了一些,还有一些参考了一些网络上的资料,有什么错误的地方各位欢迎提点,非常感谢。

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

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

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

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

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

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

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

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



在实际开发中我也尝试过使用以上方法,可是由于开发时间比较紧,一直没有进行过很好的设计,然而就算经过了一定的设计以后,在具体开发过程当中还是会发现有很多东西没有考虑到,不知道是设计时间不够设计的不到位呢,还是设计功力不到家。
分享到:
评论
7 楼 usiboy 2008-10-21  
同意楼上所说的,不要因为设计而去设计,设计的目的是为了高效率的开发,如果设计的太复杂往往会造成时间的浪费,当然设计是需要的,我觉得适当的使用设计是不错的。
6 楼 WhisperXD 2008-10-11  
bloodrate 写道
rocwon 写道
OOA/D就两句话:
1. 找出对象
2. 分配职责


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

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



还是重构比较容易,设计的时候主要考虑职责分配问题,代码写的方法多一些,看到有哪些坏代码的味道的时候考虑重构。没必要追求死板OO,写出来的东西快是第一位的,很多地方过度OO和设计模式会造成资源浪费和时间浪费的。
5 楼 bloodrate 2008-10-11  
rocwon 写道
OOA/D就两句话:
1. 找出对象
2. 分配职责


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

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

3 楼 Joo 2008-04-23  
ericxu131 写道
Joo 写道
貌似还没有用例来确定系统用户

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

恩 应该是 但是你上面说到的这几个模型之间应该也是在项目中按照先后顺序迭代产出的吧
如果一开始没有根据需求提炼出来的用例
如何提炼出业务模型呢
2 楼 ericxu131 2008-04-23  
Joo 写道
貌似还没有用例来确定系统用户

功能模型应该就是用例吧...
请指教
1 楼 Joo 2008-04-23  
貌似还没有用例来确定系统用户

相关推荐

    java面向对象的设计方法

    面向对象(Object-Oriented,简称OO)设计方法是现代软件开发中的核心理念,它源自于计算机科学对现实世界的模拟。Java作为一种强大的面向对象编程语言,深入理解和掌握面向对象的设计方法对于任何Java开发者来说都...

    深入浅出面向对象分析与设计.pdf

    面向对象(Object-Oriented,简称OO)是一种软件开发方法,它基于“对象”这一基本概念进行程序设计。在面向对象的世界里,对象是构成系统的基本单元,它们通过消息传递的方式互相作用。面向对象的主要特性包括封装...

    面向对象程序设计的演示

    ### 面向对象程序设计的核心概念与实践 面向对象程序设计(Object-Oriented Programming,简称OOP)是现代软件开发中极为重要的编程范式之一。它通过封装、继承和多态等机制来模拟现实世界中的对象及其交互,使得...

    面向对象的思想与设计模式

    面向对象(Object-Oriented,OO)是一种编程思想,它基于现实世界中的对象来构建软件系统,强调数据和操作数据的方法结合在一起,形成一个独立的单元——对象。面向对象编程的核心概念包括封装、继承和多态,这三大...

    面向对象分析与设计

    面向对象分析与设计是一种强大的软件开发方法论,它不仅能够帮助开发者更好地理解系统的结构和行为,还能提高软件的质量和可维护性。通过上述步骤,我们可以构建出既符合用户需求又易于维护和扩展的软件系统。

    UML面向对象建模与设计(Object-Oriented Modeling and Design with UML)习题解

    **题目1.1**:“在采用面向对象方法时,分析、设计、编码和测试/调试/修复所花费的时间比例大约是多少?” - **答案解析**:采用面向对象方法时,努力分配的大致比例为:20%的时间用于分析,30%的时间用于设计,40%...

    实战OO(面向对象技术实战)

    在"实战OO"这个资料集中,读者可以期待深入学习这些概念,通过实例解析和练习来提升自己的面向对象编程技能。面向对象技术不仅适用于Java、C++等编程语言,也是许多现代框架和库如Spring、Django的基础。理解并熟练...

    软件工程-面向对象和传统的方法

    面向对象(Object-Oriented,简称OO)方法是一种软件开发思想,它将现实世界中的实体抽象为类(Class),并通过对象(Object)来表示这些类的实例。面向对象方法强调了数据和行为的封装、继承以及多态性等特性。 - ...

    面向对象程序设计概述ppt.ppt

    面向对象程序设计概述ppt.ppt是讲解面向对象程序设计的概述,主要介绍了面向对象程序设计的概念、特征、优点、与面向过程程序设计的比较、对象和类的概念等。 面向对象程序设计概述 面向对象程序设计是一种以对象...

    面向对象设计重要概念详解与总结

    本篇将详细阐述面向对象设计中的重要概念,以及它们在编程中的应用和总结。 1. 面向对象编程基础: 面向对象编程(Object-Oriented Programming,OOP)是基于对象概念的编程范式。在OOP中,程序被视为相互作用的...

    (完整word版)面向对象分析与设计复习题(昆明理工大学).docx

    面向对象分析与设计是软件开发中的一种重要方法论,本文将通过对面向对象分析与设计复习题的解析,总结出相关的知识点。 1. 面向对象软件工程的发展:到 20 世纪末,面向对象软件工程已经逐渐发展成熟,特别是 UML ...

    OO设计原则总结

    ### OO设计原则总结 #### 什么是设计原则? 设计原则是一系列指导软件开发的基本准则,遵循这些原则可以帮助开发者构建出更加灵活、易于维护和扩展的软件系统。这些原则旨在解决常见的软件设计问题,如耦合度高、...

    计算机等考四级数据库工程师资料:面向对象方法与面向对象数据库.docx

    面向对象方法与面向对象数据库是现代计算机科学中的重要概念,尤其在软件工程和数据库设计领域。本文将详细阐述这些概念以及它们的发展历程、核心思想和在解决软件危机中的作用。 1. 面向对象技术的形成与发展: ...

    关于面向对象的哲学体系及科学体系的探讨

    最后一章总结了面向对象设计的基本哲学,强调了面向对象不仅仅是一种编程技术,更是一种思维模式。 - **面向对象的哲学**:面向对象强调的是对象的自我管理和自我发展能力,而不是从外部对对象进行控制。这种思维...

    软件工程PDF课件 08_OODesign面向对象设计.pdf

    面向对象设计是软件工程中的核心...总结起来,面向对象设计是软件工程中的关键步骤,它遵循模块化、内聚、耦合和复用等原则,通过系统设计、对象设计、数据库设计和用户界面设计等环节,创建出高效、可维护的软件系统。

    java设计模式之面向对象的思想(think in OO(Object Oriented))

    这篇博客将深入探讨面向对象的思想及其在Java设计模式中的应用。 首先,我们理解面向对象的基本概念: 1. 封装(Encapsulation):封装是将数据和操作这些数据的方法捆绑在一起,形成一个独立的单元——对象。这样...

    软件设计师中级王勇老师课程笔记-9面向对象

    4. **支持团队协作开发**:面向对象的设计有利于大型项目的分工合作,每个开发者可以专注于自己负责的部分。 #### 六、面向对象技术的发展趋势 随着软件行业的不断发展,面向对象技术也在持续进化: 1. **微服务...

    OO方法、RUP与UML建模

    面向对象(Object-Oriented, OO)方法是一种软件开发技术,它基于对象的概念,通过抽象、封装、模块化和分层等原则来构建软件系统。抽象是将复杂现实世界的实体简化为基本元素的过程;封装是将数据和操作这些数据的...

Global site tag (gtag.js) - Google Analytics