类之间的关系【泛化关系、实现关系、依赖关系、关联关系、聚合关系、组合关系】
类之间的关系【泛化关系、实现关系、依赖关系、关联关系、聚合关系、组合关系】
这种是强依赖关系,举例是球员,头,腿,脚
1、类与类之间的继承关系,关键词是extends,具体在UML图上是generalization 是is a的关系
①父类
package classadpter;
//适配者接口
public class Adaptee {
public void specificRequest() {
System.out.println("适配这种的业务代码被调用!");
}
}
②子类
package classadpter;
public class ClassAdapter extends Adaptee implements Target{
@Override
public void request() {
// TODO Auto-generated method stub
specificRequest();
}
}
2、实现关系:类与接口的关系 implements 是has a 的关系
①接口
package classadpter;
//目标接口
interface Target {
public void request();
}
②接口的实现类
package objectadapter;
public class ObjectAdapter implements Target{
private Adaptee adaptee;
public ObjectAdapter(Adaptee adaptee) {
// TODO Auto-generated constructor stub
this.adaptee = adaptee;
}
@Override
public void request() {
// TODO Auto-generated method stub
adaptee.specificRequest();
}
}
3、依赖关系:一个类使用了另一个类
举例是电视机和遥控器
①原来的类
public class TV {
public void open(){
}
public void close(){
}
public void change(){
}
}
②被依赖的类
public class Control {
public void open(TV tv){
tv.open();
}
public void close(){
TV tv = new TV();
tv.close();
}
}
③测试类
public class TestTV {
public static void main(String[] args) {
TV tv = new TV();
Control ct = new Control();
ct.open(tv);
}
}
4、关联关系
有一对一、一对多、多对多
举例是客户和订单、订单和商品
关联关系是长期的、强的、体现在代码上是B类做A类的成员变量
public class Product {
}
//订单类 --》订单中可以有N多商品
public class Order {
// 在订单中有 N 多商品
// 属性
Product [] pros = new Product[1000];
}
关联关系是长期的、强的、体现在代码上是B(Product)类做A(Order)类的成员变量,在图上是A(Order)类指向B(Product)类
5、聚合关系
这种关系类似于:球队、球员、队医、教练
public class Player { // 球员
}
public class Coach { // 教练
}
public class Doctor { // 队医
}
public class Team {
// 私有属性
private Player p ; // 球员
private Coach c ; // 教练
private Doctor d ; // 队医
}
6、组合关系
组合关系是部分与整体的关系,举例是球员、头部、腿部等
public class Head { // 头
}
public class Leg {
}
public class Player { // 球员
private Head head ;
private Leg leg ;
}
8、总结
(1)extends
(2)implement
(3)类作方法的形参/局部变量 -->依赖
(4)类作方法的成员变量 -->(关联、聚合、组合)