`
ericxu131
  • 浏览: 188404 次
  • 性别: 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开发者来说都...

    基于面向对象(OO)的数据库设计模式探讨

    内容面向对象的数据库设计对象关系模型实体对象关系模型应用总结下载参考资料简介: 面向对象(OO)和三范式(3NF)都是成熟的设计方法,本文基于面向对象设计思想和三范式数据库设计方法,提出一种实体对象分层...

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

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

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

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

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

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

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

    面向对象设计重要概念详解与总结,进行面向对象编程的基础

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

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

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

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

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

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

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

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

    计算机软件及应用数据抽象与面向对象的程序设计PPT课件.pptx

    该PPT课件还详细介绍了面向对象设计的原则和方法,包括封装、继承、多态、抽象等概念,并提供了许多实践中的示例和案例,帮助学生更好地理解和应用这些概念。 该PPT课件为计算机软件及应用数据抽象与面向对象的程序...

    面向对象软件测试及测试用例设计1

    随着面向对象(OO)技术的发展,测试方法也需要适应这些新特性。面向对象技术具有四个主要特点:综合考虑全生命周期、阶段连续性、包括面向对象分析、设计、编程和测试四个部分,以及对象、类、继承和通信的概念。...

    C#面向对象程序设计知识点汇总

    - 定义:面向对象编程(Object-Oriented Programming,简称OO)是一种编程范式,它基于“对象”概念,通过继承、封装和多态来构建软件。 - 与面向过程编程的区别:面向对象更注重数据和操作数据的对象,而面向过程...

    LK[1].面向对象软件开发_精简.pdf

    5. **设计模式**:面向对象设计模式是解决常见软件设计问题的经验总结,如工厂模式、单例模式、观察者模式等。这些模式提供了标准的解决方案,有助于提高开发效率和代码质量。 6. **UML统一建模语言**:UML是面向...

    类的创建及使用/面向对象编程

    通过面向对象的设计,我们可以将相关的数据和操作封装在一起,提高代码的可读性和可维护性。 总结来说,SAP中的类是实现面向对象编程的关键元素,它们提供了封装数据和功能的机制,使得代码更加模块化,易于维护。...

    用结构化方法和OO方法进行全过程软件开发的应用实例可用.pdf

    本文将详细介绍如何运用结构化方法和面向对象(OO)方法进行全过程的软件开发,以一个制造企业的供应链管理系统为例,探讨这两种方法在实际应用中的差异和特点。 首先,我们来看结构化方法的应用。在分析阶段,结构...

    OO中对于23种设计模式的整理

    在面向对象编程(Object-Oriented Programming,OO)中,设计模式(Design Pattern)是指在软件设计中普遍存在的问题和解决方案的总结。OO 中的 23 种设计模式是指 GoF(Gang of Four)在《设计模式:可复用面向对象...

    KWIC oo设计java源码

    "KWIC oo设计java源码" 这个标题表明我们要讨论的是一个使用面向对象(OO)设计原则来解决“关键词上下文”(KEY WORD IN CONTEXT,简称KWIC)问题的Java源代码项目。KWIC是一种文本处理技术,常用于信息检索、文本...

    C语言面向对象编程[定义].pdf

    总结来说,C语言虽然不是天生的面向对象语言,但通过巧妙的编程技巧,开发者完全可以在C语言中实现面向对象编程,构建复杂且高效的应用系统。这种编程方式不仅可行,而且在实践中已被证明是实用的,尤其是在需要底层...

Global site tag (gtag.js) - Google Analytics