1991年继Booch将面向Ada的工作扩展到整个面向对象设计领域;Runmbaugh提出了面向对象的建模技术方法,采用面向对象的概念,并引入各种独立于语言的标识符。
一、UML的概述
UML是一种定义良好、易于表达、功能强大、普遍适用的建模语言。 作为大众所接受的标准建模语言,UML融入了软件工程领域的新思想、新方法、新技术。
UML的作用域,不仅支持面向对象的分析与设计,而且支持从需求分析开始的软件开发的全过程。
二、UML的特点和用途
UML对系统的逻辑模型和实现模型都能清晰表示,可用于复杂软件系统建模
统一标准:UML统一了Booch、OMT、OOSE等方法中的基本概念,已成为OMG的正式标准,提供了标准的面向对象的模型元素的定义和表示。
面向对象:UML还吸取了面向对象技术领域中其它流派的长处,其中。也包括非面向对象方法的影响。UML符号表示,考虑了各种方法的图形表示,删掉了大量易引起混乱的、多余的、极少使用的符号,添加了一些新符号。
新版增加:在UML标准中,新加了模板(Stereotypes)、职责(Responsibilities)、扩展机制(Extensibility mechanisms)、线程(Threads)、过程(Processes)、分布式(Distribution)、并发(Concurrency)、模式(Patterns)、合作(Collaborations)、活动图(Activity diagram)等新概念,并清晰地区分类型(Type)、类(Class)和实例(Instance)、细化(Refinement)、接口(Interfaces)和组件(Components)等概念。
立于过程:UML作为建模语言,不依赖特定的程序设计,独立于开发过程。
三、UML结构的划分 (View视图)
- 用户视图:以用户的观点表示系统的目标,它是所有视图的核心,该视图描述系统的需求 ;
- 结构视图:表示系统的静态行为,描述系统的静态元素,如包、类与对象,以及它们之间的关系;
- 行为视图:表示系统的动态行为,描述系统的组成元素如对象在系统运行时的交互关系 ;
- 实现视图:表示系统中逻辑元素的分布,描述系统中的文件以及它们之间的关系;
- 环境视图:表示系统中物理元素的分布,描述系统中的硬件设备以及它们之间的关系;
四、UML的14种图术语和解释
五、UML常用的建模元素
六、结构建模——UML中的结构建模包括类、接口、数据类型、组件
(1)结构建模的类型:
1、类图:
类(Class)是来描述具有相同特征、约束、语义的一类对象,这些对象具有共同的属性和操作。在大多数UML模型中,这些类型包括类,接口、数据类型、组件。 类图中的一个类。可以简单地只给出类名,也可以具体列出该类拥有的成员变量和方法,甚至更详细地描述可见性、方法参数、变量类型、缺省值、操作返回值的类型等信息。;类图是UML中最基本也是最重要的一种视图,用来刻画软件中类等元素的静态结构和关系。
属性与方法的写法:按照Java语言的命名规范,属性名中的第一个单词全小写,之后每个单词首字母大写(驼峰命名法)
2、抽象类:
3、接口:
(2)建模之间的关系:
1.关联关系:描述了类的结构之间的关系;具有方向、名字、角色和多重性等信息。当关联是双向的,可用无向连线表示。一般的关联关系语义较弱,也有两种语义较强,分别是聚合与组合。 定义出他类的成员变量作为类的引用;
类与类之间的关联介绍: 单向关联、双向关联、自关联;多重关联可以定义出一个集合对象。
表示方式 | 多重性说明 |
1..1 | 表示另一个类的一个对象只与该类的一个对象有关系 |
0..* | 表示另一个类的一个对象与该类的零个或多个对象有关系 |
1..* | 表示另一个类的一个对象与该类的一个或多个对象有关系 |
0..1 | 表示另一个类的一个对象没有或只与该类的一个对象有关系 |
m..n | 表示另一个类的一个对象与该类最少m,最多n个对象有关系 (m≤n) |
1.1 聚合关联 聚合(Aggregation)关系表示整体与部分的关系 在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在 在UML中,聚合关系用带空心菱形的直线表示。 两个类的实例之间存在拥有或属于关系。
1.2 组合关联 组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在 成员对象与整体对象之间具有同生共死的关系 在UML中,组合关系用带实心菱形的直线表示;类对象作为属性或方法参数。
2.依赖关系:依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系; 大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数 在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。 某个类的方法使用了另一个类的对象。
在系统实现阶段,依赖关系通常通过三种方式来实现: 将一个类的对象作为另一个类中方法的参数; 在一个类的方法中将另一个类的对象作为其局部变量; 在一个类的方法中调用另一个类的静态方法。
3、泛化关系:也就是继承关系,用于描述父类与子类之间的关系,父类又称为基类或超类,子类又称为派生类 在UML中,泛化关系用带空心三角形的直线来表示 在代码实现时,使用面向对象的继承机制来实现泛化关系,在Java语言中使用extends关键字、在C++/C#中使用冒号“:”来实现。
4、接口与实现关系:接口之间也可以有与类之间关系类似的继承关系和依赖关系; 接口和类之间存在一种实现(Realization)关系,在这种关系中,类实现了接口,类中的操作实现了接口中声明的操作; 在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示。