Java 类图(UML)
文章目录
一、UML基础知识扫盲
1、概念
2、作用
3、分类
二、如何用类图表示一个类
1、- private
2、+ public
3、# protected
4、UML属性(Attribute)表达式
5、UML方法(Operation)表达式
6、内部类的表示
三、类和类之间(常见)的关系
1、单向关联
2、双向关联
3、自关联
4、聚合关系
5、组合关系
6、多重性关系
7、依赖关系
8、泛化关系(extends)
9、接口和实现关系(implemention)
一、UML基础知识扫盲
1、概念 : UML这三个字母的全称是Unified Modeling Language,直接翻译就是统一建模语言,简单地说就是一种有特殊用途的语言。
2、作用 :UML可帮助我们做软件需求分析和软件设计的工作,是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。
3、分类
1) 静态图 :主要描绘了类、对象和数据结构及其存在于他们之间的关系。 类图就是其中一种。
2)动态图 : 主要描绘执行流程、实体改变状态的方式。例如 : 流程图
3)物理图 : 描绘库文件、字节文件和数据文件等以及存在于他们之间的关系
二、如何用类图表示一个类
类图: 用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。
对应java如下代码
public class Person {
public int age;
private String mobilePhone;
protected char sex;
public static void speak(){
}
}
1、- 是private 的意思,对应私有成员(变量、方法)
2、+ 是public 的意思,公开给外部访问的成员(变量、方法)
3、# 是protected的意思,只能在本类或子类访问成员(变量、方法)
4、UML 规定的属性(Attribute)表达式
可见性 名称:类型 [ = 缺省值 ]
其中 :
1> 可见性 :表示该属性对于类外的元素而言是否可见,
包括公有(public)、私有(private)和受保护(protected)三种,
在类图中分别用符号+、-和#表示
2> 名称 :表示属性名,用一个字符串表示
3> 类型 :表示属性的数据类型,可以是基本数据类型,也可以是用户自定义类型
4> 缺省值 :是一个可选项,即属性的初始值。
5、UML方法(Operation)表达式
可见性 名称(参数列表) [ : 返回类型]
其中 :
1> 可见性 : 定义与属性的可见性定义相同
2> 名称 : 即方法名,用一个字符串表示
3> 参数列表 : 表示方法的参数,其语法与属性的定义相似,参数个数是任意的,多个参数之间用逗号“,”隔开
4> 返回类型 : 是一个可选项,表示方法的返回值类型,
依赖于具体的编程语言,可以是基本数据类型,
也可以是用户自定义类型,还可以是空类型(void),
如果是构造方法,则无返回类型。
6、内部类的表示
三、类和类之间(常见)的关系
1、单向关联 :单向实线加箭头表示->
在Java中代码如下
public class Customer {
private Address address; //定义为成员变量
// 其他代码
}
public class Address {
//其他代码
}
.
.
2、双向关联
在Java中如下代码
public class Customer {
private Product products;
//一些其他代码
}
public class Product {
private Customer customer;
//一些其他代码
}
.
.
3、自关联
.
.
4、聚合关系(多只雁子组成和雁群)
也有将聚合关系表示如下图
聚合关系在Java中代码如下 :
//雁群类
public class GooseGroup{
private Goose groose;
public GooseGroup(Goose groose)
{
this.groose = groose;
}
}
// 雁子类
public class Groose{
}
注意 : 雁子类可单独存在,声明周期不跟雁群类绑定
.
.
5、组合关系(雁子有翅膀)
也有将 组合关系表示如下图
组合关系在Java 代码表示如下
// 雁子类
public class Goose{
public Wing wing;
public Goose()
{
this.wing = new Wing();
}
}
//翅膀类
public class Wing{
}
注意 : 翅膀类在雁子类的构造函数中进行实例化,因此两者紧密耦合在一起,同生同灭,翅膀类不能脱离大雁类存在。
注意: 聚合和组合的区别主要是在构造函数上面的区别。
聚合关系中,整件不会拥有部件的生命周期。
组合关系中,整件拥有部件的生命周期。
.
.
6、多重性关系 : 表示两个关联对象在数量上的对应关系。在UML中,对象之间的多重性可以直接在关联直线上用一个数字或一个数字范围表示。
在java 代码表示如下 :
public class Tools{
public Button buttons[];
}
public class Button{
}
.
.
7、依赖关系
大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。
在java 代码表示如下:
// 父类
public class Person{
public void drive(Car car)
{
car.drive();
}
}
// 汽车类
public class Car{
public void drive()
{
//执行一些任务
}
}
.
.
8、泛化(继承)关系
在java中代码表示如下
// 父类
public class Person{
public String name ;
public int age;
public void speak()
{
}
}
// 学生类
public class Student extends Person{
public String studentNo;
//特有学习能力
public void study()
{
}
}
// 教师类
public class Teacher extends Person{
public String teacherNo;
// 特有的教书能力
public void teach()
{
}
}
9、接口和实现关系
在java中代码标示如下:
public interface Vehicle
{
public void move();
}
public class Ship implements Vehicle
{
public void move()
{
}
}
public class Car implements Vehicle
{
public void move()
{
}
}