文章简介
1、了解UML统一建模语言
2、重点关注类图以及使用
一、UML简介
UML:描述、构建和图形化文档系统的可视化描述语言。分为静态和动态两种。
静态图:有助于设计包、类名、属性等。
包图:PackageDiagram
组件图:ComponentDiagram
对象图:ObjectDiagram
部署图:DeploymentDiagram
复合结构图:CompositeStructureDiagram
用例图:UseCaseDiagram
类图:ClassDiagram
动态图:有助于设计逻辑、代码行为、方法体。
交互概观图:InteractiveOverviewDiagram
顺序图:SequenceDiagram
通信图:communicationDiagram
状态图:StateDiagram
活动图:ActivityDiagram
定时图:TimingDiagram
二、类图以及类图说明
类图:类的属性以及方法。以及类与类之间的关联。
1、类图说明:
- 类:使用三层矩形框表示。第一层显示类的名称,抽象类使用斜体表示。第二层表示类的属性;第三层表示类的方法。
- 接口:与类图相比,顶端有<<Interface>>显示。第一层是接口名称。第二层是接口中的常量。第三层是接口中的方法。
2、类与类(对象)之间的关系以及类图描述。
类与类之间的关系主要有如下几种:泛化(继承)、依赖、关联、组合。
综述:UML中对象的关系都是在相应的软件环境或实际场景下定义的。区别聚合和组合的关系,在于它们之中整体和部分的关系强、弱,以及它们之间的依附关系。不同场景,不同定义。
2.1、泛化:一个元素是另一个元素的特殊化。也类似的成为继承关系。在UML中,泛化关系用空心三角形+实线来表示,箭头指向为父类。
案例代码:
// 泛化
People person = new Man();
System.out.println(person);
/* 泛化演示类 2016-10-27 start */
static class People {
public String toString() {
return "人类";
}
}
static class Man extends People {
public String toString() {
return "男人";
}
}
static class WoMan extends People {
public String toString() {
return "女人";
}
}
/* 泛化演示类 2016-10-27 end */
2.2、依赖:某个元素在一定程度上依赖于另一个元素,同时,一个类的改动可能胡影响另一个类的运行效果,则两个类存在依赖关系。例如:工具类,依赖工具类中的方法进而获得展示的UI名称。
案例代码:
//依赖
Coder coder = new Coder();
System.out.println(coder.coding());
/*依赖演示类 start*/
static class Computer{
public static String codingWithComputer(){
return "coding with computer";
}
}
static class Coder{
public static String coding(){
return Computer.codingWithComputer();
}
}
/*依赖演示类 end*/
2.3、关联:当一个类的实例与另一个类的一些特定实例存在固定的对应关系,则称两个类存在关联关系。
案例代码:
//关联
Person age18 = new Person("372926198502184567");//人和身份证ID:1对1关联
System.out.println("身份证ID:"+age18.getPersonId());
/*关联演示类 start*/
static class IDCard{
public final String ID;
public IDCard(String id){
ID = id;
}
}
static class Person{
IDCard idcard;
public Person(String 身份证ID){
idcard = new IDCard(身份证ID);
}
public String getPersonId(){
return idcard.ID;
}
}
static class Class{
List<Person> persons = new ArrayList<Person>();
}
/*关联演示类 end*/
2.4、组合:组合关系是类之间一种整体与部分之间的关系,如一只青蛙有四条腿,青蛙类与青蛙腿类之间的关系就是组合关系。
案例代码:
//组合
青蛙 qingwa = new 青蛙();
青蛙手 qingwaHand = new 青蛙手();
/*组合演示类 start*/
static class 青蛙{
青蛙手 m青蛙手;
青蛙脚 m青蛙脚;
}
static class 青蛙手{
public void work() {
System.out.println("“支撑平衡");
}
}
static class 青蛙脚{
public void work() {
System.out.println("“支撑平衡");
}
}
/*组合演示类 end*/
2.5、聚合:
聚合关系是类之间的一种较弱的耦合关系,如一个字符串数组和一个字符串就是一种聚合关系。
部分的生命周期可以超越整体。如电脑和鼠标。
案例代码:
//聚合
Company company = new Company();//公司与员工、部门之间是弱的包含关系
Employee emplyee = new Employee();
Department department = new Department();
/*聚合演示类 start*/
static class Company{
Department mDepartment;
Employee mEmployee;
public void getDescription(){
System.out.println("公司");
}
}
static class Employee{
public void getDescription(){
System.out.println("雇员");
}
}
static class Department{
public void getDescription(){
System.out.println("部门");
}
}
/*聚合演示类 end*/