千家信息网

Java设计模式UML之类图的示例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下Java设计模式UML之类图的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.UML基本介绍U
千家信息网最后更新 2026年11月02日Java设计模式UML之类图的示例分析

小编给大家分享一下Java设计模式UML之类图的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

1.UML基本介绍

  • UML--Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果。

  • UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如下图:

上面的截图就是一个UML类图的案例,只不过这是在eclipse中的,下面的类图我会在IDEA中使用。

画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,UML图分类:????????????

  • 用例图 (use case)

  • 静态结构图: 类图、对象图、包图、组件图、部署图

  • 动态行为图: 交互图(时序图与协作图)、状态图、活动图

类图是描述类与类之间的关系的,是UML图中最核心的。

2.UML类图

用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。

类之间的关系: 依赖、泛化(继承)、实现、关联、聚合与组合。

2.1 类关系--依赖

只要是在类中用到了对方,那么他们之间就存在依赖关系。 来看下面的代码

package com.szh.uml.dependence; public class PersonServiceBean {        private PersonDao personDao;         public void save(Person person) {        }         public IDCard getIDCard(Integer personId) {                return null;        }         public void modify() {                Department department = new Department();        }}
package com.szh.uml.dependence; public class PersonDao {}
package com.szh.uml.dependence; public class Person {}
package com.szh.uml.dependence; public class IDCard {}
package com.szh.uml.dependence; public class Department {}

上面的代码中,PersonServiceBean类中用到了Department、Person等这几个类,那么我们就可以说PersonServiceBean类与它们几个类之间存在依赖关系。

  • 类中用到了对方

  • 类的成员属性

  • 方法的返回类型

  • 方法接收的参数类型

  • 方法体内部使用到

依赖的符号就是 虚线 + 一个箭头。

2.2 类关系--泛化

泛化实际上就是继承,它是依赖关系的一种特例。

如果A类继承了B类,那么我们就可以说 A和B 之间存在泛化关系。

package com.szh.uml.generalization; public abstract class DaoSupport {         public void save(Object entity) {        }         public void delete(Object id) {        }}
package com.szh.uml.generalization; public class PersonServiceBean extends DaoSupport {}

继承就不再多说了,这里需要指出的一点是:IDEA中的泛化符号不太一样,一般来说,泛化的符号应该是 实线 + 一个空心三角形,而IDEA中则是下图这样。

2.3 类关系--实现

实现关系其实就是面向接口而言,它和泛化一样,也是依赖关系的一种特例。

如果A类实现了接口B,那么我们就可以说A和B之间存在实现关系。

package com.szh.uml.implementation; public interface PersonService {         public void delete(Integer id); }
package com.szh.uml.implementation; public class PersonServiceBean implements PersonService{         @Override        public void delete(Integer id) {                System.out.println("delete..");        } }

实现接口这个也不再多说了。 这里需要指出的一点是:IDEA中的实现符号不太一样,一般来说,实现的符号应该是 虚线 + 一个空心三角形,而IDEA中则是下图这样。

2.4 类关系--关联

关联关系 实际上就是类与类之间的联系,他是依赖关系的特例。关联具有导航性: 即双向关系或单向关系。

关系具有多重性: 如"1"(表示有且仅有一个),"0..."(表示0个或者多个),"0,1"(表示0个或者一个),"n.….m"(表示n到 m个都可以), "m.….*"(表示至少m个)

package com.szh.uml.association1; /** * */public class Person {    private IDCard card;}
package com.szh.uml.association1; /** * */public class IDCard {}

这里我们的理解就是Person类表示人,IDCard类表示身份证类,一个人只有一个身份证号、一个身份证号只属于一个人,所以它俩之间就存在着一对一的关联关系。 关联的符号就是 实线 + 一个箭头。

下图是单向的关联关系,当我们在IDCard类中声明了Person类的成员变量时,这二者之间的关联关系就转换成了双向。(图中还有组合符号,我们后面会说)

2.5 类关系--聚合

聚合关系(Aggregation)表示的是整体和部分的关系,整体与部分可以分开。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。

如: 一台电脑由键盘(keyboard)、显示器(monitor),鼠标等组成;组成电脑的各个配件是可以从电脑上分离出来的,使用带空心菱形的实线来表示。

package com.szh.uml.aggregation; public class Computer {         private Mouse mouse;        private Monitor monitor;         public void setMouse(Mouse mouse) {                this.mouse = mouse;        }        public void setMonitor(Monitor monitor) {                this.monitor = monitor;        }        }
package com.szh.uml.aggregation; public class Monitor {}
package com.szh.uml.aggregation; public class Mouse {}

聚合的符号一般来说应该是 实线 + 空心菱形,组合的符号则是 实线 + 实心菱形,IDEA中聚合、组合的符号都是下图这样。

2.6 类关系--组合

组合关系: 也是整体与部分的关系,但是整体与部分不可以分开。

再看一个案例:在程序中我们定义实体: Person与IDCard、Head,那么 Head和 Person 就是组合, IDCard 和Person就是聚合。

但是如果在程序中 Person实体中定义了对IDCard进行级联删除,即删除Person时连同IDCard 一起删除,那么IDCard和 Person就是组合了。

package com.szh.uml.composition; public class Computer {         private Mouse mouse = new Mouse();        private Monitor monitor = new Monitor();         public void setMouse(Mouse mouse) {                this.mouse = mouse;        }         public void setMonitor(Monitor monitor) {                this.monitor = monitor;        }        }
package com.szh.uml.composition; public class Monitor {}
package com.szh.uml.composition; public class Mouse {}
package com.szh.uml.composition; public class Person {    private IDCard card;    private Head head = new Head();}
package com.szh.uml.composition; public class Head {}
package com.szh.uml.composition; public class IDCard {}

以上是"Java设计模式UML之类图的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

符号 之间 就是 关联 组合 实线 下图 接口 整体 特例 面的 分析 设计 一般来说 中用 对象 整体与部分 方法 电脑 篇文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技股 北京路客互联网科技有限公司 中关村互联网科技集团 美国互联网保险保险科技 为想互联网科技 广州善班互联网科技 互联网金融科技委员会 互联网科技有限公司 翻译 互联网 科技服务平台 美国互联网前沿科技 哈尔滨新华互联网科技 成都仁贤领冠互联网科技有限公司 中国科技互联网公司收入 中国的互联网科技企业的崛起 佳云科技和互联网广告 南通创西澳互联网科技有限公司 扫呗互联网科技有限公司 新氧科技和美国互联网有关系吗 张家口科技产业互联网平台 青岛互联网科技园 咖啡网 中智农互联网科技 太原新华互联网科技学校怎么样 深圳市运趣互联网科技有限公司 深圳育鹏互联网科技有限公司招聘 互联网科技人工智能实验室 浙南科技城互联网大厦建设工程 国大互联网教育科技有限公司薪资 互联网科技和医药行业 恒生科技互联网指数十大成分股
0