类图的构造,类图由四部分构成,分别为:类名、属性层、方法层、性质层,其中除了类名必须存在,其它层能够省略。markdown
类图中的类名若是是正体则说明该类是具体的,若是是斜体字,则代表类是抽象的spa
类图的第二层是属性层,属性能够是public、private、protected,若是一个属性的左边是加号(+)则该属性是public,左边若是是减号(-)则该类是private,左边若是是井号(#)则该属性是protected。3d
第三层是方法层,方法层中也分为public、private、protected,区别跟属性层中一致。同时若是一个方法下面有下划线,则代表该方法为静态方法。code
接口的类图与类的类图惟一的区别在于类名中加了interface,标志该类图是一个接口的类图。orm
在类与类之间会有连线指明它们之间的关系。类和类、类与接口、接口和接口之间能够创建如下几种关系:通常化关系、关联关系、聚合关系、合成关系和依赖关系,另外这几种关系都是静态的。对象
通常化关系:通常化关系表示类与类之间的继承关系(Java中的extends),接口与接口之间的继承关系(Java中的extends关键字,一个接口能够extends多个关键字,可是不能implements任何接口),或者类与接口的实现关系(Java中的implements关键字)。因此通常化关系在Java中的实现经过extens或者implements,extends描述类与类、接口与接口关系,implemens描述类与接口的关系。继承
(上图实现了类与类、类与接口、接口与接口之间的通常化关系)接口
关联关系:关联关系是类与类之间的联接,这种联接使一个类能够知道另外一个类的属性和方法。同时关联能够是双向的,也能够是单向的。关联关系在Java中是经过类中的实例变量实现的,例如司机与汽车的相关类,问题与答案的相关类。而且在关联关系中每一个关联的端点还能够有一个基数,代表这一端的类能够有几个实例,也就是在Java中所对应的一对1、一对多、多对多的问题。好比一个司机能够有多辆汽车,一个问题能够有多个答案,一个答案又可能对应多个问题。生命周期
(单向关系)图片
(双向关系)
聚合关系:聚合关系是关联关系的一种,是强的关联关系,能够理解为一个总体必须须要哪些个体,好比一台电脑必需要有CPU、硬盘、主板、内存等,因此理解成聚合关系就是电脑类必需要关联CPU类、硬盘类、主板类、内存类等必须的类,从而保证电脑总体的完整性。所以这里聚合关系与关联关系的区别在于对于总体性与个体的判断,在关联关系中所涉及的类都是平等的,可是在聚合关系中涉及的类不是同一层次的,其中一个表明总体,其它的表明个体。
(聚合关系的体现)
合成关系:合成关系也是关联关系的一种,而且它是比聚合关系还要强的一种关系, 合成关系的强主要体如今表明总体的对象负责表明部分对象的生命周期,而且合成关系是不能共享的。表明总体的对象须要保持部分对象的存活。例如美猴王和它的四肢以及金箍棒之间的关系,美猴王和金箍棒是聚合关系,而美猴王和它的四肢关系则更强,是合成关系,由于美猴王的四肢彻底由美猴王本身负责,而且不能共享。
(合成关系的体现)
依赖关系:依赖关系是类与类之间的链接,依赖老是单向的。依赖关系表示一个类依赖与另外一个类,也就是一个类须要经过依赖的类来实现,这样构成一个依赖关系。好比Person类依赖于Car类和House类,这样Car类和House类就须要在Person类的引用中进行实现,而且Person类中没有Car或者House类型的属性,Car和House的实例是以参数的形式传入到Person类中的引用方法中的。
(依赖关系的体现)
既然Car和House类是以参数的形式传递到Person类中的引用方法中的,那么在Java中这种依赖就体如今局部变量、请求参数、以及静态方法的调用。