面向对象分析与设计概述

第1章 面向对象分析与设计概述

1.1
什么是分析与设计?
分析:强调的是对问题和需求的调查研究,而不是解决方案。如:如何使用系统,具有哪些功能?强调的是在问题领域内发现和描述对象。

设计:强调的是满足需求的概念上的解决方案,而不是其实现。如:对方案和软件对象的描述。强调的是定义软件对象以及它们如何协作以实现需求。

什么是面向对象分析与面向对象设计?
面向对象分析:强调的是在问题领域内发现和描述对象。如:航班系统里包含飞机、航班和飞行员等概念。
面向对象分析的结果是?
领域模型,其中展示重要的领域概念和对象。

面向对象设计:强调的是定义软件对象以及它们如何协作以实现需求。
关注软件对象间的职责和协作。

什么是用例?
用例是在需求分析中可能包括人们如何使用应用的情节或场景,这些情节或场景可以被编写成用例。
对用例理解的注意?
用例不是面向对象制品,只是对情节的记录。
用例是需求分析中的一种常用工具。

对领域模型理解的注意?
领域模型不是软件对象的描述,而是真实世界领域中的概念和想象可视化。

什么是设计类图?
表示类定义的静态视图,描述类的属性和方法。

与领域模型表示的真实世界的类不同,设计类图表示的是软件类。

1.2
简单示例:模拟骰子游戏:模拟游戏者掷出骰子,如果两个点数是7则赢得游戏,否则为输。
过程:
面向对象分析与设计概述

1.用例:
骰子游戏:游戏者请求掷骰子。系统展示结果:如果骰子的总点数是7,则游戏者赢;否则游戏者输。
2.领域模型:
面向对象分析与设计概述

3.交互图:尽管在真实世界中是由游戏者掷出骰子,但在软件设计中却是由DiceGame对象掷出骰子。软件对象设计和程序并不是对真实世界的直接建模或模拟
面向对象分析与设计概述

设计类图:不同于领域模型,但是很相似。
面向对象分析与设计概述

1.3
什么是UML?(Unified(统一)Modeling Language)
是为软件系统的制品进行描述(specifying)、可视化(visualizing)、构造(constructing)、文档化(documenting)的一种面向对象的可视化建模语言

应用UML的三种方式?
UML作为草图:用于探讨问题或解决方案的复杂部分。
UML作为蓝图:相对详细的设计图,用于:****、代码生成(前向工程)
UML作为编程语言

应用UML的三种透视图?
同一种表示法可以用来描述模型的三种透视图和类型:
概念透视图(领域模型):用图来描述现实世界或关注的领域中的事务。用于使真实世界的概念可视化的原始UML类图表示法。
规格说明透视图:用图(使用与概念透视图中相同的表示法)来描述软件的抽象物或具有规格说明和接口的构件,但是并不约定特定实现。
实现透视图:用图来描述特定技术(例如,Java)中的软件实现。用于使软件元素可视化的原始UML类图表示法。

在不同视图中类的含义?
概念类:现实世界中的概念或事物。
软件类:无论在过程还是方法中,都表示软件构件在规格说明或实现透视图中的类。
实现类:特定OO语言中的类。

1.4
UML的构成?
面向对象分析与设计概述
UML = UML成员 + UML建模规则
UML成员:
UML基本模型元素(things in UML):结构模型元素+行为模型元素(交互+ 状态机)+成组元素(包)+注解元素。
结构模型元素:UML中的名词,它是模型的静态部分,描述概念或物理元素关系(relationship)。
结构模型元素一共有七种,它们是:
类:
面向对象分析与设计概述
接口( interface):
面向对象分析与设计概述
协同( collaboration):
面向对象分析与设计概述
用例(use case):
面向对象分析与设计概述
主动类(active class):
面向对象分析与设计概述
构件(component):
面向对象分析与设计概述
节点(node):
面向对象分析与设计概述

行为模型元素:UML中的动词,它是模型中的动态部分,是一种跨越时间、空间的行为。
交互(interaction):是在特定语境中,共同完成某个任务的一组对象之间交换的信息集合 交互的表示法很简单,就是一条有向直线,并在上面标有操作名。

状态机(state machine):是一个对象或交互在生命周期内响应事件所经历的状态序列。在UML模型中将状态画为一个圆角矩形,并在矩形内写出状态名称及其子状态

成组元素:UML中的容器,用来组织模型,使模型更加的结构化。
理解:对于一个中大型的软件系统而言,通常会包含大量的类,因此也就会存在大量的结构事物、行为事物,为了能够更加有效地对其进行整合,生成或简或繁、或宏观或微观的模型,就需要对其进行分组。在UML中,提供了“包(Package)”来完成这一目标

注解元素:UML中的解释部分,和代码中的注释语句一样,是用来描述模型的。
理解:结构事物是模型的主要构造块,行为事物则是补充了模型中的动态部分,分组事物而是用来更好地组织模型,似乎已经很完整了。而注释事物则是用来锦上添花的,它是用来在UML模型上添加适当的解释部分

UML模型关系的种类:
面向对象分析与设计概述
关联关系(association):
面向对象分析与设计概述
依赖关系(dependency):
面向对象分析与设计概述
泛化关系(generalization):
面向对象分析与设计概述
实现关系(realization):
面向对象分析与设计概述
模型图(diagram):
面向对象分析与设计概述
静态模型图:
类图:此图是系统的静态结构,也是类以及这些类表示的关系的集合
构件图:
部署图:

动态模型图:
对象图:此图是系统的静态结构,也是类以及这些类表示的关系的集合
用例图:用例为一系列事务,其中的每个事务是从系统外部调用的,需要与内部对象合作,以便在对象与系统周围之间创建关联

顺序图:是通过展示系统与其环境之间的交互,描述系统行为的简单而直观的方法

协作图:表示特定环境和交互中一系列关联的对象。

状态图:展示方法执行的状态和对象执行的活动。
活动图:是状态机图的变更或特例。用来描述执行算法的工作流程中涉及的活动

UML建模规则:相当于建模语言的语法。
UML建模规则包括:
名字:任何一个UML成员都必须包含一个名字。
作用域:UML成员所定义的内容起作用的上下文环境。
可见性:UML成员能被其它成员引用的方式。
完整性:UML成员之间互相联接的合法性和一致性。
运行属性:UML成员在运行时的特性。