文档章节

UML类图(1)

hell03W
 hell03W
发布于 2016/11/24 21:19
字数 830
阅读 19
收藏 0
点赞 0
评论 0

1. 类的UML图示

类封装了数据和行为, 是面向对象的重要组成部分, 它是具有相同属性,操作,关系的对象集合的总称.

类图: 用来描述不同的类和他们之间的关系.

UML中, 类使用包含类名, 属性, 操作且带有分割线的长方形表示, 如下:

类一般由三部分构成:

**类名:**就是类的名称, 类名是一个字符串.

**类的属性: **指类的性质, 即类的成员变量. 一个类可以有任意多个属性, 也可以没有属性.

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

+, -, # 分别表示: 公有(public)、私有(private)和受保护(protected)
类型表示属性的类型.

**类的操作: **操作是类的任意一个实例对象都可以使用的行为, 是类的成员方法.

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

可见性, 名称 同`类的操作`; 参数列表表示方法的参数; 返回值类型表示, 方法的返回值

2. 类与类之间的关系: 关联关系

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

2.1 双向关联

如下图所示, 是双向关联. 用不带箭头的实线表示.

2.2 单向关联(Association)

类的关联关系也可以是单向的, 用一个带箭头的实线表示, 如下图所示.

2.3 自关联

在系统中, 可能存在某一些类属性对象类型为该类自身, 这种特殊关联成为自关联. 例如在组合模式, 单例模式中就有自关联的类. 类图如下所示:

2.4 多重关联

多重关联关系表示两个关联对象在数量上的对应关系

2.5 聚合关系(Aggregation)

聚合(Aggregation)关系表示整体和部分的关系. **在聚合关系中, 成员对象是整体对象的一部分, 但是成员对象可以脱离整体对象而独立存在.**在UML中,聚合关系用带空心菱形的直线表示。

在代码实现聚合关系时候, 成员对象通常作为构造方法, setter方法或者业务方法的参数注入到整体对象中.

2.6 组合关系(Composition)

组合关系也表示类之间的整体与部分的关系. 组合关系中, 整体对象可以控制成员对象的声明周期, 一旦整体对象不存在, 成员对象也将不存在, 成员对象和整体对象之间具有同生共死的关系. 在UML中, 用实心菱形的直线表示.

3. 类与类之间的关系: 依赖关系

4. 类与类之间的关系: 泛化关系(继承关系)

泛化关系就是继承关系, 用于描述父类和子类之间的关系, 父类称为基类或者超类, 子类又称为派生类.在UML中, 泛化关系用带空心三角形的直线表示.

5. 类与类之间的关系: 接口与实现关系

在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示。

© 著作权归作者所有

共有 人打赏支持
hell03W
粉丝 9
博文 143
码字总数 108663
作品 0
朝阳
程序员
软考之UML图深入学习(2)

前言 经历过软考之后的UML图学习,对于九种图有了更加深入的认识,上一篇文章《软考之UML图深入学习(1)》中,介绍了UML建模工具是什么? 这篇文章继前文,进一步深入,从小编思考的UML图进...

m18633778874
2017/11/12
0
0
6 个 Java 项目的 UML 反向工程工具

将 Java 项目转成结构清晰的 UML 类图,可以让我们更轻松的理解项目的结构以及模块间的依赖关系。本文介绍 6 款开源的工具,可以将 Java 项目反向工程到 UML 的类图。 1. Eclipse MDT 模型开...

oschina
2012/09/12
18.9K
9
UML类图符号理论

前言 相信大家在学习UML类图的时候,最大的困难可能来自两个方面: 类图中各种关系的区别; 多种关系的符号记忆容易混淆; 本着"Do one thing and do it well."的原则,本文不介绍UML类图中各...

算法与编程之美
2016/02/18
276
3
Class Model(类模型)

UML自学笔记之类图 1. UML类图简介 在UML的静态机制中类图是一个重点,它不但是设计人员关心的核心,更是实现人员关注的核心。建模工具也主要根据类图来产生代码。类图在UML的9个图中占据了一...

残风vs逝梦
2015/06/25
0
0
实用UML知识——如何看懂UML传递的软件架构信息

前公司的技术交流大体是靠口授, 个人会采用一些简单的架构文档+ 口述的方式, 描述一个软件产品的整体架构. 并且, 大多数情况是, 先有代码, 后有文档的方式, 这样做有以下优点: 1. 关注软件结...

晨曦之光
2012/03/09
707
0
系统架构师-基础到企业应用架构-系统建模[上篇]

一、摘要 本文主要从系统架构中的建模开始讲解,本文讲述的内容主要是我在工作和学习过程中的总结和经验,不足之处还请大家多多批评指出,有更好的建议也可以留言 说明。本意主旨是为不熟悉系...

wbf961127
2017/11/12
0
0
Java 大白话讲解设计模式之 -- UML类图

声明:原创作品,转载请注明出处https://www.jianshu.com/p/2828874af134 这篇文章来总结下UML类图,本来不打算讲UML类图的,因为我在学习设计模式的时候,一遇到有关UML的就会自动忽略,一看...

蛇发女妖
05/02
0
0
开源作品该不该附带UML图?简单的类图?

我没怎么看过源代码之类的东西,我会找到很多理由1)我会说自己没有时间2)我会说系统太大了吧,那么多代码,怎么看啊3)写了这么一堆的东西从何开始着手啊?…… 于是我就想了,如果每个开源...

4382194
2012/07/03
603
15
使用Rational Software Architect设计一个电话本程序

本文作为本人给公司技术工程师培训RSA/RAD JAVA编程与UML上手的指导性HOW TO类文档,已经在WINDOWS2003,RAS6.0上测试通过. 本问将介绍 IBM Rational Software Architect,并利用内行经验为您突...

晨曦之光
2012/03/09
0
0
软考之UML图深入学习(1)

前言 软考的准备已经过去了2个月零8天,倒计时8天(11月11日)。通过近年试题的分析,面向对象技术试题在150分中占据了大约1/3的比重,足见其重要性和基础性。下午试题中的UML图面向对象设计...

m18633778874
2017/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高效编写Dockerfile的几条准则

概述 Dockerfile 是专门用来进行自动化构建镜像的编排文件(就像Jenkins 2.0时代的Jenkinsfile是对Jenkins的Job和Stage的编排一样),我们可以通过 docker build 命令来自动化地从 Dockerfi...

小致dad
54分钟前
0
0
SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
9
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
7
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
198
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部