UML类图

一·注释(comment)
注释就是对类图的补充说明,可以附加在任何元素上,用 右上角有折角的矩形来表示,其内放置说明文字,通过虚线连接被注释的元素。
在这里插入图片描述
二·类(Class)
在面向对象(OO) 编程中,类是对现实世界中一组具有相 同特征的物体的抽象。在UML类图中,类使用包含类名、属性(field) 和方法(method) 且带有分割线的矩形来表示:
在这里插入图片描述
类的属性的完整表示方式:
可见性 名称:类型[ = 缺省值]
中括号中的内容表示是可选的

类的方法的完整表示方式:
可见性 名称(参数列表) [ : 返回类型]
中括号中的内容是可选的。
在这里插入图片描述
三·接口(Interface)
接口是一种特殊的类,具有类的结构但不可被实例化,只 可以被实现(继承)。
C++中,通过类实现面向对象的编程,在基类中只给出纯 虚函数(接口)的声明,然后在派生类中实现纯虚函数 的具体定义的方式实现接口,不同派生类实现接口的方 式也不尽相同,从而实现多态。
java中,在抽象类定义抽象函数(接口),抽象函数不能 有函数体,抽象类不能被实例化,由其子类实现抽象函 数(接口),不同子类实现接口的方式可以不同,从而实现多态。

在UML中,接口有两种表示方式:
(1)普通接口表示法(飞翔);
(2)棒棒糖表示法(讲人话),使用一个带有名称的小圆圈来表示,在旁边写上相应接口名称,没有具体接口方法。
接口名称通常以大写字母I(interface)开头。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
四·类与类之间的关系(relation)
在UML类图中,常见的有以下几种关系:
依赖 (Dependency)
关联(Association)
继承(Inheritance)
实现(Realization)
聚合(Aggregation)
组合(Composition)

1.类图—依赖关系(Dependency)
虚线箭头

只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没 有对方,编绎通过不了。
public class PersonDao{} //类中用到了对方:
public class IDCard{} //如果是类的成员属性
public class Person{} //如果是方法的返回类型
public class Department{} //是方法接收的参数类型
public class PersonServiceBean { //方法中使用到
private PersonDao personDao;
public IDCard getIDCard(Integer personid) {}
public void save(Person person){}
public void modify(){Department department = new Department();
}
}
依赖关系
如果A类用到了B类 ,则A依赖于B, 没有B,A编译也不通过。
在这里插入图片描述
2.类图—关联关系(Association)
实线箭头

关联关系实际上就是类与类之间的联系,是依赖关系的特例。
关联具有导航性:即双向关系或单向关系
关系具有多重性:
“1”(表示有且仅有一个),
“0…”(表示0个或者多个),
“0,1”(表示0个或者1个),
“n…m”(表示n到 m个都可以),
“m…*”(表示至少m 个)。

(1)单向一对一关系
//一个人一个身份证号一对一单向的 一对一
public class Person {
private IDCard card;
}
public class IDCard{}
在这里插入图片描述
(2)双向一对一关系
//一个人对应一个身份证号 一对一
//一个身份证号也对应一个人
public class Person {
private IDCard card;
}
public class IDCard{
private Person person;
}
在这里插入图片描述
3.类图—继承关系(Inheritance)
空心三角形+实线

继承关系也称泛化关系,是依赖关系的特例。
A类继承了B类也相当于A类用到了B类。
public abstract class DaoSupport{
public void save(Object entity){ }
public void delete(Object id){ }
}
public class PersonServiceBean extends DaoSupport{ }
PersonServiceBean继承了DaoSupport
在这里插入图片描述
4.类图—实现关系(Implementation)
空心三角形+虚线

实现关系实际上就是A类实现B接口,是依 赖关系的特例,依赖关系更强。
public interface PersonService {
public void delete(Interger id);
}
public class PersonServiceBean implements PersonService {
public void delete(Interger id){}
}
PersonServiceBean实现了PersonService这个接口-实现关系
实现关系实际上就是A类实现B接口。
在这里插入图片描述

5.类图—聚合关系(Aggregation)
带空心菱形的实线,菱形指向整体

聚合关系表示的是整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。使用带空心菱形的实线,菱形指向整体来表示。如:一台电脑由键盘(keyboard)、显示器(monitor), 鼠标等组成。考虑计算机与鼠标、显示器能不能分开?
如果认为:
关系是可以分开的,则是聚合关系;
关系是不可以分开的,则是组合关系。 鼠标是可以分离的:可以插上也可以不插 上,电脑没有鼠标还是一个电脑;
显示器也是可以分离的;鼠标类、显示器 类与电脑类构成聚合关系。
对应类图:
在这里插入图片描述
类图—聚合关系(Aggregation)
聚合关系表示的是整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
(一)认为可以分开,是聚合关系
代码:
public class Computer {
private Mouse mouse; // 鼠标可以和computer分离
private Monitor monitor; //显示器可以和Computer分离
public void setMouse(Mouse mouse) {this.mouse = mouse; }
public void setMonitor (Monitor monitor) {this.monitor = monitor;}
}

聚合关系表示整体与部分关系,整体与部分可以分开,聚合关系是关联关系的特例,具有:
(1)导航性:谁聚合谁? A聚合到B:
在这里插入图片描述
(2)多重性:
B聚合一个A——单聚合
B里面可以聚合多个A——多重聚合

(二)认为不可以分开,是组合关系
代码:
public class Computer {
private Mouse mouse = new Mouse();
//鼠标不可以和computer分离——组合关系
private Moniter monitor = new Monitor();
//显示器不可以和Computer分离——组合关系
public void setMouse(Mouse mouse) {this .mouse=mouse;}
public void setMonitor(Monitor monitor) {this .monitor = monitor;}
}
在这里插入图片描述
6.类图—组合关系(Composition)
实心菱形+实线

组合关系:也是整体与部分的关系,但是整体与部分不可以分开。
案例:定义类:Person、IDCard与Head, 那么
Head 和Person 是组合——人不能没有头。
IDCard 和 Person 是聚合——一个人可以没有身份证,去补办身份证就行。
如果在程序中Person类中定义了对IDCard进行级联删除,即删除Person时连同IDCard一起删除,那么IDCard 和 Person 就是组合了。

组合关系:也是整体与部分的关系,但是整体与部分不可以分开。
public class Person{
private IDCard card; //聚合
private Head head = new Head(); //组合
}
public class IDCard{}
public class Head{}
在这里插入图片描述

组合关系:也是整体与部分的关系,但是整体与部分不可以分开。
public class Person{
private IDCard card = new IDCard(); //组合
private Head head = new Head(); //组合
}
public class IDCard{}
public class Head{}
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值