一、UML简介:面向对象的分析和设计
UML:Unified Modeling Language 统一建模语言
目的:提供一套综合的表示法系统,表达系统的需求、体系结构、实现、部署和状态
在面向对象的语言中,程序员需要创建类,每个类定义了许多相似对象的行为和结构,然后,需要编写代码来创建并操作那些行为类实例的对象。
质量特性:
封装Encapsulation:只公布模块和子系统的部分内容,使得其他模块能利用该模块即可。
松散耦合Loose coupling:表示系统的一个部分依赖于另一个部分的细节所使用的方法和程度。
强内聚Strong cohesion:指子系统中的元素组成单独统一的概念的程度,没有任何额外的元素。
OO编程中的核心概念:
类:系统中一个或多个对象的行为和属性的定义,类将对象的数据(属性)绑定到它可以执行的行为(操作)上。
属性:描述对象的数据值或状态,帮助区别相同类中的不同对象。(也叫:特性、成员变量、成员数据)
操作:对象可以执行的行为或函数。(方法或成员函数、消息)。
对象:类的实例或特定范例。类的属性在类的不同对象中具有特定的值,并且该类的操作根据不同对象的特定属性来执行特定操作。
继承:一个类(超类)提供由一个或多个特定类(子类)继承的通用行为或一般行为。UML称之为泛化(generalization),超类为子类提供泛化的行为。
组件:组件是相关类的集合,这些类共同提供一个大的服务集。系统中的组件可能包括应用程序、库、ActiveX控件、JavaBeans、后台程序和服务。
接口:接口是组件或类提供的一组服务的定义。接口允许程序进行更进一步的封装。
分析:研究并定义所要解决问题的过程。OOA是根据对象来定义问题的过程。
设计:定义解决方案的过程。OOD是定义组件、接口、对象、类、属性和操作的过程,以满足各种需求。
模型:OOAD过程的核心产物。分析模型,体系结构模型,组件(设计)模型,业务模型,域模型。
通过建模,可以在前期就捕获具有很大开销的bug;并且前期检测和修正可以节省用于修复bug所占用的开销和时间,节省的比例大约为50%~200%。提纲效应。交流。
UML是一种用于提取OOAD过程的产物的图形化语言。OOAD工具:Rational ROSE
提纲过程
受控迭代
完整OO过程
统一过程
Rational XDE
银弹?
UML由9个不同类型的图组成:
用例图显示了系统的外部可视行为
活动图显示了系统行为的详细描述。
组件图显示了系统的体系结构。
顺序图显示了对象随着时间的交互。
协作图显示了对象的交互,其中强调了对象之间的关系。
类图显示了类定义和关系。
状态图显示了响应时间的状态改变。
部署图显示了系统的物理体系结构。
包图显示了设计的层次结构。
UML的一切实际上就是为了交流!
用例图:描述了系统外的人员和系统的动作,以及系统的响应。该类型的图可用于描述系统的功能需求。
活动图:描述了单个功能需求内部的细节行为,包括基本的场景和一些可选的场景。该图用于确保彻底理解给定的功能。
组件图:描述了系统的可部署单元(可执行文件、组件、数据存储和其他的一些内容)以及一些接口,可部署单元通过这些接口进行交互。该图可用于研究系统的体系结构。
顺序图:描述了某个功能需求的路径或场景内相对时间的详细行为。该图用于理解系统元素之间的消息流程。
类图:描述了系统设计中的类和接口,以及他们之间的关系。该图可用于定义内部的、面向对象的代码结构。实线描述关联,虚线描述依赖。
状态图:描述了系统如何改变状态以响应内部的和外部的事件,该图可用于确保每个事件都被适当地处理,不管系统当前可能出于什么状态。
部署图:描述了系统的可部署单元(应用、组件、数据存储等)如何被赋予不同的节点、这些节点如何互相通信,以及这些节点如何与设备进行通信。该图可用于系统映射,也可用作研究系统负载。
包图:描述了设计的相关元素如何按组结合在一起,以及这些组如何相互依赖。该图可用于将复杂的设计划分为多个更易于管理的较小设计。
数据库建模:实体关系图ERD,数据流程图DFD
在UML中,虚线箭头表明了控制的方向。
记住:先编码后修复是糟糕的,先设计再纠错是优秀的!!