一、 UML类图思维导图

二、 详细分析和介绍

下面就从上面的思维导图开始,详细的介绍UML类图!

1、 什么是UML,概念是什么?

UML(Unified Modeling Language)中文统一建模语言,是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。 【维基百科】

统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。【维基百科】

UML分为UML模型和UML类图。

区分UML模型和UML图是非常重要的,UML图,包括用例图、协作图、活动图、序列图、部署图、构件图、类图、状态图,是模型中信息的图形表达方式,但是UML模型独立于UML图存在。

2、为什么要用UML?类图的作用

UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。
类图的作用:

(1):在软件工程中,类图是一种静态的结构图,描述了系统的类的集合,类的属性和类之间的关系,可以简化了人们对系统的理解;
(2):类图是系统分析和设计阶段的重要产物,是系统编码和测试的重要模型。

3、 类的UML的介绍和画法?

我们用 PowerDesign 来构建 UML图

类的UML使用包含类名、属性、方法名以及参数。使用带分割线的长方形表示。

一、 类名 在第一部分 每个类都必须有一个名字,类名是一个字符串,根据java命名规范 类名首字母大写
二、 属性 在第二部分 属性是指类的性质,即类的成员变量。一个类可以有任意多个属性,也可以没有属性。

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

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

  1. **可见性:**表示该属性对于类外的元素而言是否可见,包括公有(public)、私有(private)和受保护(protected)三种,在类图中分别用符号+、-和#表示。 +表示 public属性, - 表示 private属性, # 表示 protected属性
  2. **名称:**表示属性名,用一个字符串表示。
  3. **类型:**表示属性的数据类型,可以是基本数据类型,也可以是用户自定义类型。
  4. **缺省值:**是一个可选项,即属性的初始值。
三、 方法(操作) 在第三部分 操作是类的任意一个实例对象都可以使用的行为,是类的成员方法。

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

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

  1. 可见性: 定义与属性的可见性定义相同。
  2. 名称: 即方法名,用一个字符串表示。
  3. 参数列表: 表示方法的参数,其语法与属性的定义相似,参数个数是任意的,多个参数之间用逗号“,”隔开。
  4. 返回类型: 是一个可选项,表示方法的返回值类型,依赖于具体的编程语言,可以是基本数据类型,也可以是用户自定义类型,还可以是空类型(void),如果是构造方法,则无返回类型。

由于在Java语言中允许出现内部类,因此可能会出现包含四个部分的类图,如图所示:

接口的UML比类多了一个圆圈和横线 其他类似。

现在我们来讲类与类的四种种关系:泛化(Generalization)、实现(Realization)、依赖(Dependence)、关联(Association),其中关联又分为关联、聚合(Aggregation)、组合(Composition)。

表示关系的强弱:依赖 < 关联 < 聚合 < 组合 < 泛化(继承)

UML类图关系线条:

(1). 泛化关系表示类与类之间的继承关系,类和类,接口和接口都可以是继承关系,父类称为基类或者超类,子类称为派生类。子类继承父类实现父类的所有功能,并拥有父类没有的功能!

UML图:

代码:


public class Persons {private String cardNumber;private String name;protected int age;/** @pdRoleInfo migr=no name=Mouth assc=组合_Composition mult=0..1 type=Composition */public Mouth mouth;public String getName() {return name;}public void setName(String name) {this.name=name;}public int getAge() {// TODO: implementreturn age;}public void setAge(int age) {this.age=age;}public String getCardNumber() {return cardNumber;}public void setCardNumber(String cardNumber) {this.cardNumber=cardNumber;}
}public class ChinesePeople extends Persons {public String skinColor = "yellow";public ShaxiPeople[] shaxiPeople;public void useChopsticks() {}}
(2). 实现关系就是java中的一个类和接口之间的关系,接口中一般是没有成员变量。所有操作都是抽象的,只有声明没有具体的实现。

UML图:

代码:


public interface Say {static final String laguage = "English";void sayHello(String laguage);}public class Human implements Say {public String bipedalism;/** @pdRoleInfo migr=no name=Persons assc=聚合_Aggregation mult=1..1 type=Aggregation */public Persons persons;public void useTools() {}public void sayHello(String laguage) {}}
(3). 依赖关系是类与类之间最弱的关系,A元素变化会影响B元素,反之不成立。说简单点就是一个类使用了另一个类,这种关系具有临时性特征,一个类的改变由于另一类而受影响。

解释
也就是 当类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。

UML图:

代码:


public class Water {public String unformed;public void evaporation() {}}public class Mouth {public String Tooth;public void drinkWater(Water water) {}}
(4). 关联关系表示一个类和另一类有联系,它使一个类知道另一个类的属性和方法,被关联的元素间通常可以被独立的考虑。

单向关联表现为:类A当中使用了类B,其中类B是作为类A的成员变量。
双向关联表现为:类A当中使用了类B作为成员变量;同时类B中也使用了类A作为成员变量。

UML图:

代码:


public class ChinesePeople extends Persons {public String skinColor = "yellow";public void useChopsticks() {}
}public class ShaxiPeople {public String chineseHamburger;/** @pdRoleInfo migr=no name=ChinesePeople assc=关联_Association mult=0..1 */public ChinesePeople chinesePeople;public void drumDance() {// TODO: implement}
}

1…1 表示另一个类的一个对象只与该类的一个对象有关系
0…* 表示另一个类的一个对象与该类的零个或多个对象有关系
1…* 表示另一个类的一个对象与该类的一个或多个对象有关系
0…1 表示另一个类的一个对象没有或只与该类的一个对象有关系

(5). 聚合关系是整体和部分的关系,是一种强的关系,但是部分可以脱离整体而存在。是关联关系的一种。

解释
聚合关系是关联关系的一种,耦合度强于关联,他们的代码表现是相同的,仅仅是在语义上有所区别:关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。

UML图:

代码:

public class Human implements Say {public String bipedalism; /** @pdRoleInfo migr=no name=Persons assc=聚合_Aggregation mult=1..1 type=Aggregation */public Persons persons;public void useTools() {}public void sayHello(String laguage) {}}public class Persons {private String cardNumber;private String name;protected int age;/** @pdRoleInfo migr=no name=Mouth assc=组合_Composition mult=0..1 type=Composition */public Mouth mouth;public String getName() {return name;}public void setName(String name) {this.name=name;}public int getAge() {// TODO: implementreturn age;}public void setAge(int age) {this.age=age;}public String getCardNumber() {return cardNumber;}public void setCardNumber(String cardNumber) {this.cardNumber=cardNumber;}}
(6). 组合关系是聚合关系的一种变种,便是了更强的组合关系,它要求整体的对象代表部分对象的生命周期。

解释
相比于聚合,组合是一种耦合度更强的关联关系。存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在时没有任何意义。

UML图:

代码:

public class Mouth {public String Tooth;public void drinkWater(Water water) {}}public class Persons {private String cardNumber;private String name;protected int age;/** @pdRoleInfo migr=no name=Mouth assc=组合_Composition mult=0..1 type=Composition */public Mouth mouth;public String getName() {return name;}public void setName(String name) {this.name=name;}public int getAge() {// TODO: implementreturn age;}public void setAge(int age) {this.age=age;}public String getCardNumber() {return cardNumber;}public void setCardNumber(String cardNumber) {this.cardNumber=cardNumber;}
}

到此,本篇文章真的结束了,若文章有不足或者错误的地方,欢迎指正,以防止给其他读者错误引导。

软件设计-UML类图详解说明相关推荐

  1. java uml类图教程_Java利器之UML类图详解

    原标题:Java利器之UML类图详解 (点击上方公众号,可快速关注) 来源:伯乐在线专栏作者- Code4Android 如需转载,发送「转载」二字查看说明 前言 UML(Unified Modeli ...

  2. 【Java】UML类图详解-详细易懂

    基本介绍 统一建模语言(Unified Modeling Language,UML)是用来设计软件的可视化建模语言.它的特点是简单.统一.图形化.能表达软件设计中的动态与静态信息. UML 从目标系统 ...

  3. UML概述及UML类图详解

    引言 UML图有很多种,但是并非必须掌握所有的UML图,才能完整系统分析和设计工作.一般说来,在UML图中,只要掌握类图.用例图.时序图的使用,就能完成大部分的工作.也就是说,掌握UML的20%,就能 ...

  4. Java利器之UML类图详解

    前言 UML(Unified Modeling Language)中文统一建模语言,是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对象的.软件密集系统的制品的开放方法.UML展现了 ...

  5. UML类图详解_泛化关系

    泛化其实就是继承关系,还是比较简单的,那么我们就把之前有些问题的博客UML类图重新来实现一次. 依旧是这个图 下面我们来看一个例子 Account.h 1 #include <cstdlib&g ...

  6. 00 C++ UML类图详解

    一.基本概念: 类图(Class Diagram): 类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础.类图主要是用来显示系统中的类.接口以及它们之间的静态结构和关系的一种静态模型. 类 ...

  7. C++ UML类图详解

    文章目录 基本概念: 1. 泛化(Generalization) 2. 实现(Realization) 3. 关联(Association) 4. 聚合(Aggregation) 5. 组合(Comp ...

  8. 【UML】UML类图详解

    文章目录 1. 类的UML图示 2 类与类之间的关系 2.1 关联关系 2.1.1 单向关联 2.1.2 双向关联 2.1.3 自关联 2.1.4 多重性关联 2.1.5 聚合关系 2.1.6 组合关 ...

  9. idea uml图各符号含义_java利器之UML类图详解(IDEA)

    一.概述 类图(Class Diagram)是面向对象系统建模中最常用和最重要的图,是定义其它图的基础. 类图主要是用来显示系统中的类.接口以及它们之间的静态结构和关系的一种静态模型. 类图不仅用于可 ...

最新文章

  1. Centos安装GD库
  2. mirna富集分析_2020年的3+分ceRNA分析长啥样?
  3. 科大星云诗社动态20210224
  4. CVPR 2020 Oral | 旷视研究院提出双边分支网络BBN:攻坚长尾分布的现实世界任务...
  5. Light-Head R-CNN相关资料
  6. 移动端h5唤起键盘_移动端H5界面打开后,如何自动调用软键盘
  7. 国内高速前端 Unpkg CDN 替代方案
  8. ORACLE 如何产生一个随机数
  9. 开发者硬核福利!极光可信数据云来了
  10. Fiddler抓包教程 ---> Fiddler如何证书配置与开启抓包完整详解
  11. 坐标转换工具类:84坐标系,火星坐标系,与百度坐标系之间的互相转换
  12. 美女程序员,看到最后一个就亮了
  13. 【计算广告】浅谈广告归因
  14. 同一个视频,360p的文件大小却大于720p?
  15. 【C语言题解】将数字金额翻译成中文大写金额
  16. 空间分析方法在计算机上的应用,空间分析
  17. 网站如何知道浏览器的用户在使用什么语言?
  18. 130242014013+杨俊杰+第3次实验
  19. html显示在最上,让DIV对象显示在最上层
  20. quartz集群模式下qrtz_triggers表trigger_state变ERROR分析

热门文章

  1. 2020年小学几年级有计算机课,2019-2020年最新小学信息技术三年级上册第1课初识计算机备课教学参考.doc...
  2. 安卓模拟器绕过模拟器检测正常用电脑玩手机游戏的最好解决方法
  3. 勿以恶小而为之,勿以善小而不为
  4. 【uniapp Uview】 IndexList用法 姓氏分组方法
  5. linux .pc,教你摸清 Linux PC 的性能底细?
  6. 网上商城项目(购物车下单、支付)
  7. python3 实现应用启动及关键字检测
  8. G - 数字转换 LibreOJ - 10155
  9. 数据库与MPP数仓(十四):招标采购系统的数据仓库构建
  10. python第三章_Python学习(第三章)