您的位置:首页 > 运维架构 > 网站架构

UML简介

2016-12-25 17:32 411 查看
原文:UML建模技术

以下一些有些为摘录,有些为感想。

关于UML的全称我就不说了,只说它是一个形象描述整个项目的架构内容的描述性语言。

现在开始:

类封装了数据和行为,是面向对象的重要组成部分。

在系统中,每个类都具有一定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责。

在定义类的时候,将类的职责分解为类的属性和方法。类的属性即类的数据职责,类的操作即类的行为职责

通常类可以分为三种:即实体类,控制类和边界类。

实体类:实体类对应项目系统需求中的每个实体,它们通常需要保存在本地中,一般使用数据库表或者文件来记录,实体类即包括存储和传递数据的类,还包括操作数据类。

控制类:控制类用于执行应用程序的执行逻辑,提供相应的业务操作,将控制类抽象出来可以降低界面和数据库之间的耦合度。控制类一般有动词+名词转换为来。

边界类:边界类用于对系统用户和系统之间进行交互而进行设计,主要包括界面类,如对话框、窗口、菜单等

有没有一点MVC的感觉。

类的UML图示

在UML中,类使用包含类名、属性和操作且带有分隔线的长方形来表示,如定义一个Employee类,它包含属性name、age,以及操作modifyInfo(),在UML类图中该类如图1所示:



在UML类图中,类一般由三部分组成:

1. 第一部分是类名:每个类都必须有一个名字,类名是一个字符串。

2. 第二部分是类的属性(Attributes):属性是指类的性质,即类的成员变量。一个类可以有零个或任意多个属性

UML规定属性的表示方式为:

可见性  名称:类型 [ = 缺省值 ]


其中:

“可见性”表示该属性对于类外的元素而言是否可见,包括公有(public)、私有(private)和受保护(protected)三种,在类图中分别用符号+、-和#表示。

“名称”表示属性名,用一个字符串表示。

“类型”表示属性的数据类型,可以是基本数据类型,也可以是用户自定义类型。

“缺省值”是一个可选项,即属性的初始值。

第三部分是类的操作(Operations):操作是类的任意一个实例对象都可以使用的行为,是类的成员方法。

UML规定操作的表示方式为:

可见性  名称(参数列表) [ : 返回类型]


一个完整的图



其中:

成员变量age为一个私有变量(-),其类型为int;

成员变量name为一个保护变量(#),类型为QString,其默认值为NULL;

成员变量Sex为一个公开变量(+),其类型为int;

另外两个操作,分别为setAge和getAge的公开方法

其中setAge的返回值为void,被省略,参数为age,int类型,默认值为0。

getAge返回类型为int

类与类之间的关系

在软件系统中,类并不是孤立存在的,类与类之间存在各种关系,对于不同类型的关系,UML提供了不同的表示方式。

关联关系

关联关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间的联系,如汽车和轮胎,班级和学生等。UML类图中,用实线连接有关联关系的对象所在的类。

双向关联

默认情况下,关联是双向的。例如:顾客购买商品并拥有商品,反之,卖出的商品与某个顾客相关联。使用实现相连。与聚合不同的是,没有部分和整体的观念

单向关联

类的关联关系也可以是单向的,单向关联用箭头的实线表示。例如:顾客拥有地址。

自关联

在系统中可能会存在一些类的属性对象类型为该类的本身,这种特殊的关联关系称为自关联。例如:链表中,一个节点类的成员也是节点的对象。

多重性关联

多重性关联关系又称为重数性关联关系,表示两个关联对象在数量上的对应关系。在UML中,对象之间的多重性可以直线在关联直线上用一个数字或一个数字范围表示。例如:一个Form可以拥有零个或多个Button,但是一个按钮只能属于一个界面。



聚合关系

聚合关系表示整体与部分的联系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。在UML中,聚合关系用带空心菱形的直线表示。例如:汽车和发动机。

组合关系

组合关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。在UML中,组合关系用带有实心菱形的直线表示。例如:人的头和嘴巴。



即使关系明清,如果没有经过项目的实践也是空话。

依赖关系

依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其它事物。在UML中,依赖关系使用带箭头的虚线表示,有依赖的一方指向被依赖的一方。类似于工程模式下:产品和工厂的关系。



泛化关系

泛化关系也就是继承关系,用于描述父类和子类之间的关系。在UML中,泛化关系用带空心三角形的直线来表示。



接口与实现关系

在Java中称为接口,在C++中应该为虚基类吧。在接口中,通常没有属性,而且所有的操作都是抽象的,只有操作的声明,没有操作的实现。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uml 面向对象 架构