UML简易入门

原文:UML建模技术
以下一些有些为摘录,有些为感想。


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

类封装了数据和行为,是面向对象的重要组成部分。
在系统中,每个类都具有一定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责。

在定义类的时候,将类的职责分解为类的属性和操作。类的属性即类的数据职责,类的操作即类的行为职责
通常类可以分为三种:即实体类,控制类和边界类。

  • 实体类:实体类对应项目系统需求中的每个实体,它们通常需要保存在本地中,一般使用数据库表或者文件来记录。包括存储和传递数据的类,还包括操作数据类。
  • 控制类:控制类用于执行应用程序的执行逻辑,提供相应的业务操作,将控制类抽象出来可以降低界面和数据库之间的耦合度。控制类一般有动词+名词转换为来。
  • 边界类:边界类用于对系统用户和系统之间进行交互而进行设计,主要包括界面类,如对话框、窗口、菜单等

有没有一点MVC的感觉。

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

原图链接失效了。找了一个近似的
近似的图片

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

第一部分

是类名每个类都必须有一个名字,类名是一个字符串。

第二部分

是类的属性(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提供了不同的表示方式。

  1. 关联关系
    关联关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间的联系,如汽车和轮胎,班级和学生等。
  2. 双向关联
    默认情况下,关联是双向的。例如:顾客购买商品并拥有商品,反之,卖出的商品与某个顾客相关联。与聚合不同的是,没有部分和整体的观念
  3. 单向关联
    类的关联关系也可以是单向的。例如:顾客拥有地址。
  4. 自关联
    在系统中可能会存在一些类的属性对象类型为该类的本身,这种特殊的关联关系称为自关联。例如:链表中,一个节点类的成员也是节点的对象。
  5. 多重性关联
    多重性关联关系又称为重数性关联关系,表示两个关联对象在数量上的对应关系。例如:一个Form可以拥有零个或多个Button,但是一个按钮只能属于一个界面。
  6. 聚合关系
    聚合关系表示整体与部分的联系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。例如:汽车和发动机。
  7. 组合关系
    组合关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。例如:人的头和嘴巴。
  8. 依赖关系
    依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其它事物。有依赖的一方指向被依赖的一方。类似于工程模式下:产品和工厂的关系。
  9. 泛化关系
    泛化关系也就是继承关系,用于描述父类和子类之间的关系。
  10. 接口与实现关系
    在Java中称为接口,在C++中应该为虚基类吧。在接口中,通常没有属性,而且所有的操作都是抽象的,只有操作的声明,没有操作的实现。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值