Java实现UML中的五种关系
来源:互联网 发布:js null '' 编辑:程序博客网 时间:2024/06/05 11:12
以前我们总是对于UML中的五种关系在代码中的实现总是搞不清楚,所以我在进行软考的时候在网上和课本上差了很多的资料,结合自己的理解进行了总结。
我们知道如果给五种关系排一个顺序的话耦合关系由弱到强依次是:依赖、关联、聚合、组合、继承。
一.依赖关系
我们说过依赖关系是耦合度最弱的一种关系,如果ClassA依赖ClassB那么就有了以下三种可能:
1.ClassB是全局的ClassA可以调用它。
public class ClassA{ ClassB b=null;}
2.ClassB是ClassA中的某个方法的变量。
public class ClassA{public void A(){ ClassB b=null;}}
3.ClassB作为ClassA中的某个方法的参数或者返回值。
public class ClassA{ public void A(ClassB b){ return null;}}
二.关联关系
可以分为聚合类和组合类聚合就是ISA组合就是HASA,我们以前说过的大雁和雁群之间的关系,还有大雁和翅膀之间的关系分别是聚合和组合我们很多人在代码中对于这两者的区别不是很清晰,那么我们看下面的讲解吧!
聚合关系:
public class ClassA{ public ClassB b; public ClassA(Class b){ this.b=b; }}
组合关系:
public class ClassA{ public ClassB b; public ClassA(){ b=new ClassB(); }}
从代码中我们可以看出来在聚合关系中ClassB是独立于ClassA的而且从生命周期上看他们并不是同时产生同时消失的,也可以这样理解对于客户端来说他们就是两个独立的类,只不过ClassB是在ClassA中作为参数进行了调用,而对于组合关系来说我们可以看出,ClassB在ClassA中实例化出了一个对象,所以在生命周期来看他们是同时的,而对于客户端调用来说是就是只能调用ClassA。
三.泛化
泛化其实可以认识就是继承,但是子类继承父类并不是继承了父类的所有的方法和属性,而是继承了父类里面所有public和protect的方法,子类继承父类,父类泛化子类:
Animal a = new Cat();
这代表什么意思呢?
很简单,它表示我定义了一个Animal类型的引用,指向新建的Cat类型的对象。由于Cat是继承自它的父类Animal,所以Animal类型的引用是可以指向Cat类型的对象的。那么这样做有什么意义呢?因为子类是对父类的一个改进和扩充,所以一般子类在功能上较父类更强大,属性较父类更独特,定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。
所以,父类类型的引用可以调用父类中定义的所有属性和方法,而对于子类中定义而父类中没有的方法,它是无可奈何的;
同时,父类中的一个方法只有在在父类中定义而在子类中没有重写的情况下,才可以被父类类型的引用调用;
对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将会调用子类中的这个方法,这就是动态连接。
四.实现关系
类实现接口的方法,这里就要比较一下抽象类和接口的关系了,我们知道借口是一种特殊的抽象类,那么他们之间有什么区别呢,我们知道抽象类中可以有抽象方法也可以有普通方法,而接口中必须是抽象方法,也可以说接口是极度抽象的抽象类!
- Java实现UML中的五种关系
- UML五种关系
- UML五种关系
- UML五种关系
- UML的五种关系
- 细说UML五种关系
- Java中的UML关系(泛化,实现,依赖,关联(聚合,组合))
- UML中的几种关系(依赖,关联,泛化,实现)
- UML中的几种关系(依赖,关联,泛化,实现)
- 【UML】UML中的四种关系
- UML:UML中的关系
- [UML]UML中的关系
- UML中的六种关系
- UML中的4种关系
- UML中的四种关系
- UML中的四种关系
- uml中的四种关系
- UML中的几种关系
- sourceinsight 无法搜索类似 .s .S .kconfig文件的解决办法
- 【软件工程作业01】
- https 基础
- hdu5249KPI【treap】
- 【Odoo】XML_RPC访问Odoo数据库
- Java实现UML中的五种关系
- HttpUnit Ajax处理
- POJ - 3616 Milking Time(DAG)
- 每日必读此文
- 打开一个新窗口
- Codevs1166 矩阵取数游戏
- UNIX环境高级编程学习环境搭建---apue.h(第三版)
- HTML格式化是什么?
- C数据类型转换