1. 程式人生 > 實用技巧 >依賴、泛化、實現、關聯、聚合、組合

依賴、泛化、實現、關聯、聚合、組合

類之間的關係有:依賴、泛化、實現、關聯、聚合、組合

類圖的六大關係

依賴

依賴關係是指類中用到了對方。可以是“類的成員屬性”、“方法的返回型別”、“方法接收的引數型別”和“方法中使用到的類”。
對應的類圖:

public class PersonServiceBean {
    private PersonDao personDao;

    public void save(Person person) {
    }

    public IDCard getIDCare(Integer personid) {
        return null;
    }

    public void modefy() {
        Department department = new Department();
    }
}
public class Department {
}
public class IDCard {
}
public class Person {
}
public class PersonDao {
}

泛化

泛化關係實際上就是繼承關係,是依賴關係的特例。

對應的類圖:

public abstract class DaoSupport {
    public void save(Object entity) {
    }

    public void delete(Object id) {
    }
}
public class PersonServiceBean extends DaoSupport {
}

實現

實現關係實際上就是A類實現B類的介面,是依賴關係的特例。

類圖如下:

public interface PersonService {
    public void delete(Integer id);
}
public class PersonServiceBean implements PersonService {
    @Override
    public void delete(Integer id) {      
        // TODO Auto-generated method stub
        System.out.println("delete..");
    }
}

關聯

關聯關係實際上就是類與類之間的關係,是依賴關係的特例。

關聯具有導航性:即雙向關係或單向關係。

關聯具有多重性:如“1”(表示有且僅有一個),“0...”(表示0個或多個),“0,1”(表示0個或1個),“n...m”(表示n到m個都可以)。

單向一對一關係:

public class Person {
    private IDCard card;
}
public class IDCard {
}

雙向一對一關係:

public class Person {
	private IDCard card;
}
public class IDCard {
	private Person person;
}

聚合

聚合關係表示的是整體和部分的關係,整體與部分可以分開。聚合關係是關聯關係的特例,具有關聯的導航性與多重性。

如:一臺電腦由鍵盤、顯示器、滑鼠等組成,組成電腦的各個配件是可以從電腦上分離出的,使用帶空心菱形的實線來表示。

public class Computer {
    private Mouse mouse; //滑鼠可以和Computer分離  
    private Moniter moniter;//顯示器可以和Computer分離  

    public void setMouse(Mouse mouse) {
        this.mouse = mouse;
    }

    public void setMoniter(Moniter moniter) {
        this.moniter = moniter;
    }
}

組合

組合關係,也是整體與部分的關係,但是整體與部分不可以分開。

在程式中我們定義實體:Person與IDCard、Head,那麼Head和Person就是組合,IDCard和Person就是聚合。

但是如果在程式中Person實體定義了對IDCard進行級聯刪除,即刪除Person時連同IDCard一起刪除,那麼IDCard和Person就是組合了。

public class Person {    
	private IDCard card; //聚合關係    
	private Head head = new Head(); //組合關係
}
public class IDCard {
}
public class Head {
}

public class Computer {  
	private Mouse mouse = new Mouse(); //滑鼠不可以和Computer分離  
	
	private Moniter moniter = new Moniter();//顯示器不可以	和Computer分離  
	
	public void setMouse(Mouse mouse) {   
	   
		this.mouse = mouse;  
	}  
	
	public void setMoniter(
	
		Moniter moniter) {     
		 
		this.moniter = moniter;  
	}  
}