2.UML类图
UML类图
- StartUML的使用
- 入门案例
- 1.泛化关系|继承Generalization)
- 2.实现关系(Implementation)
- 3.依赖关系(Dependence)
- 4.关联关系(Association)
- 5.聚合关系(Aggregation)
- 6.组合关系(Composition)
UML 基本介绍
- UML——Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果
- UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如下图
- 使用UML来建模,常用的工具有 RationalRose , 也可以使用一些插件来建模
因为不会URML类图软件的使用,索引参考了该博客进行学习:参考博客
StartUML的使用
目前官网http://staruml.io上的最新版本是4.X系列,可进入官网进行下载。下载后理论上是要付费使用的,但是不付费也不太影响使用。我用的是新版本,可能与有的老版本不太一致

说明:默认打开starUML后,会默认进入类图模式,各模块区域功能如下:
1.菜单栏: 最上方是菜单栏,新建工程啥的,具体不详细介绍;
2.已经建类图列表: 左上方列表显示已经创建的图,比如类图,时序图等;
3.工具箱: 左下方工具箱,显示当前类型的图可以使用的工具,主要是各种连线或者图形,是最常用的区域;
4.绘图区域: 中间白色格子区域,就是绘图区域;
5.工程区: 右上方区域是工程区,显示工程,model和各种已经绘出的图形;
6.属性编辑区域: 当画出来一个图形或者一根线时,这个区域会显示这个图形的各种属性,可以修改;
画图种类介绍
- 类图(Class Diagram)
打开starUML工具时,默认进入的就是类图模式,右上角工程区如下显示:
默认创建了一个名字为【Untitled】的工程,工程下面有个模块,名字叫【Model】,模块下有个类图,名字叫【Main】。这3个名字是默认的,都可以修改为你自己想要的名字。
比如修改工程名,只需要鼠标选中工程名字,然后右下方属性编辑区域会如下显示:

输入你想要的名字即可。模块和类图名字,用同样的方法也可以修改。
创建类图
工程区-》选择Model-》右键-》选择【Add Diagram】,然后如下图:

接下来我们,就可以画类图了,现在左下角工具箱显示了在类图模式下,可以使用的工具列表:

类组件的基本操作介绍:
单击选择Class,至工作区域内单机左键,即可创建一个class实例。创建实例后,周围会出现一堆,功能按钮,去描述这个类,如图所示。图后会有介绍各个租价功能的介绍。

功能介绍:
- 用来标识Class的可见性(默认为public)
- 用来添加note的,比如:类的说明
- 增加类的属性
- 增加类的操作方法。
- 增加Reception
- 增加子类
- 增加父类
- 添加已有的接口
- 添加需要的接口
- 添加关联
- 添加聚合
- 添加组合
- 添加端口
- 添加部件
入门案例
`创建一个User类,并且用URML类图描述出来
代码:
/** 用户实体类* @author compass* @version 1.0* @date 2021-07-05 18:59*/
public class User {int id;private String username;public String password;public String email;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}
}

1.泛化关系|继承Generalization)
泛化关系实际上就是继承关系,他是依赖关系的特例
UML图中实现泛化管理的描述,在类图中使用带空心三角箭头的实线表示,箭头从子类、子接口指向父类、父接口。具体如图所示。
/** 泛化关系|继承(Generalization)* @author compass* @version 1.0* @date 2021-07-05 19:30*/
public abstract class DaoSupport{public void save(Object entity){}public void delete(Object id){}
}class PersonService extends DaoSupport{}

2.实现关系(Implementation)
实现指的是一个class类实现interface接口(可以是多个)的功能,实现是类与接口之间最常见的关系。在类图中使用带空心三角箭头的虚线表示,箭头从实现类指向接口。如图。
/** 实现关系(Implementation)* @author compass* @version 1.0* @date 2021-07-05 19:46*/
public interface OrderDao {int deleteById(String id);
}class OrderDaoImpl implements OrderDao{@Overridepublic int deleteById(String id) {return 0;}
}

3.依赖关系(Dependence)
只要是在类中用到了对方, 那么他们之间就存在依赖关系。 如果代码中没有对方, 连编绎都通过不了 。
依赖关系小结:类中用到了对方,他们就存在依赖关系
类的成员属性方法的返回类型方法接收的参数类型方法中使用的局部变量
/*** @author compass* @version 1.0* @date 2021-07-05 19:12*/
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();}
}class PersonDao{}class IDCard{}class Person{}class Department{}

聚合
4.关联关系(Association)
关联关系是一种拥有的关系, 它使一个类知道另一个类的属性和方法;
如:老师与学生
关联关系又分为单项关联和双向关联,关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
单项关联:
/*** 关联关系 单项关联* @author compass* @version 1.0* @date 2021-07-05 22:54*/
// 单向一对一关系
public class Student {private Teacher teacher;
}class Teacher{}
URML类图

双向关联关系
// 双向一对一关系public class Student {private Teacher teacher;}class Teacher{private Student student;}
URML类图

自关联(自己跟自己关联)
// 自关联关系class Employee{// 员工idint employeeId;// 员工的上级领导IdString leadId;}

**Dirtected Association:当向关联**
**Association: 相互关联**
5.聚合关系(Aggregation)
- 聚合关系(Aggregation)表示的是整体和部分的关系,整体与部分可以分开。 聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
- 如:一台电脑由键盘(keyboard)、显示器(monitor),鼠标等组成;组成电脑的各个配件是可以从电脑上分离出来的, 使用带空心菱形的实线来表示:
/** 聚合关系* @author compass* @version 1.0* @date 2021-07-05 23:14*/
public class Computer {private Mouse muse; // 鼠标可以和Computer分离private Monitor monitor;// 显示器可以和Computer分离public void setMouse(Mouse muse) {this.muse = muse;}public void setMonitor(Monitor monitor) {this.monitor = monitor;}}
class Monitor{}
class Mouse{}

6.组合关系(Composition)
- 组合关系:也是整体与部分的关系,但是整体与部分不可以分开。
- 在程序中我们定义实体: Person与IDCard、 Head,那么 Head 和Person 就是组合关系, IDCard 和 Person 就是聚合关系。
- 但是如果在程序中Person实体中定义了对IDCard进行级联删除,即删除Person时连同IDCard一起删除, 那么IDCard 和 Person 就是组合了
// 组合关系
class Person {private IDCard card; // 聚合关系private Head head = new Head(); // 组合关系
}
class Head{}
class IDCard{}

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
