物件導向 淺述物件之間的關係

2021-08-13 03:57:03 字數 2097 閱讀 4452

物件之間的關係:依賴(需要某種服務),關聯(物件間有某種對應關係),聚合,組合,繼承...

依賴:物件之間最弱的一種關聯方式,是臨時性的關聯。**中一般指由區域性變數、函式引數、返回值建立的對於其他物件的呼叫關係。 依賴一般情況下是以下幾種情況之一:

a、classa中某個方法的引數型別是classb;  這種情況成為耦合;

b、classa中某個方法的引數型別是classb的乙個屬性; 這種情況成為緊耦合;

c、classa中某個方法的實現例項化classb;

d、classa中某個方法的返回值的型別是classb;

如果出現了上述四種情況之一,兩個類很有可能就是「依賴」關係。 

依賴關係(dependency):

是類與類之間的連線,依賴總是單向的。依賴關係代表乙個類依賴於另乙個類的定義。下面的例子中class a 依賴與class b、c、d。

public class a   

} 關聯和依賴的區別: 

從類之間關係的強弱程度來分,關聯表示類之間的很強的關係;依賴表示類之間的較弱的關係;

從類之間關係的時間角度來分,

關聯表示類之間的「持久」關係,這種關係一般表示一種重要的業務之間的關係,需要儲存的,或者說需要「持久化」的,或者說需要儲存到資料庫中的。比如學生管理系統中的student類和class(班級)類,乙個student物件屬於哪個class是乙個重要的業務關係,如果這種關係不儲存,系統就無法管理。

另外,依賴表示類之間的是一種「臨時、短暫」關係,這種關係是不需要儲存的,比如student類和stueditscreen(學生登入介面)類之間就是一種依賴關係,stueditscreen類依賴student類,依賴student物件的資訊來顯示編輯學生資訊。

聚合(關聯關係的一種):表示has-a的關係,是一種不穩定的包含關係。聚合類不必對被聚合類負責。使用集合屬性表達聚合關係,當物件a被加入到物件b中,成為物件b的組成部分時,物件b和物件a之間為聚集關係。聚合是關聯關係的一種,是較強的關聯關係,強調的是整體與部分之間的關係。與關聯關係一樣,聚合關係也是通過例項變數來實現這樣關係的。關聯關係和聚合關係來語法上是沒辦法區分的,從語義上才能更好的區分兩者的區別。聚合關係(aggregation):是關聯關係的一種,是強的關聯關係。聚合是整體與個體之間的關係。如汽車類與引摯類,輪胎類之間的關係就是整體與個體的關係。 

與關聯關係一樣,聚合關係也是通過例項變數來實現的。空心菱形

關聯和聚集的區別:

(1)關聯關係所涉及的兩個物件是處在同乙個層次上的。比如人和自行車就是一種關聯關係,而不是聚合關係,因為人不是由自行車組成的。

聚合關係涉及的兩個物件處於不平等的層次上,乙個代表整體,乙個代表部分。比如電腦和它的顯示器、鍵盤、主機板以及記憶體就是聚集關係,因為主機板是電腦的組成部分。

(2)對於具有聚集關係(尤其是強聚集關係)的兩個物件,整體物件會制約它的組成物件的生命週期。部分類的物件不能單獨存在,它的生命週期依賴於整體類的物件的生命週期,當整體消失,部分也就隨之消失。比如張三的電腦被偷了,那麼電腦的所有元件也不存在了,除非張三事先把一些電腦的元件(比如硬碟和記憶體)拆了下來。

組合:表示contains-a的關係,是一種強烈的包含關係。組合類負責被組合類的生命週期。也使用集合屬性表達聚合關係 ,是關聯關係的一種,是比聚合關係強的關係。它要求普通的聚合關係中代表的物件負責代表部分的物件的生命週期,合成關係是不能共享的。 

代表整體的物件需要負責保持物件的存活,在一些情況下負責將代表部分的物件湮滅掉。代表整體的物件可以將代表部分的物件傳遞給另乙個物件,由後者負責此物件的生命週期。換言之,代表部分的物件在每乙個時刻只能與乙個物件發生合成關係,由後者排它的負責其生命週期,(聚合和組合的明顯的區別是:如果類b含有a類物件的指標,那算聚合(生存週期不一樣),如果類b含有a類物件的變數為屬性,那麼就必為組合(生存週期必須相同)),實心菱形

繼承:表示is-a的關係,是物件之間耦合度最大的一種關係,子類繼承父類的所有細節。直接使用語言中的繼承表達。 類圖中繼承的表示方法是從子類拉出一條閉合的、單鍵頭(或三角形)的實線指向基類

從使用的頻率來看,關聯(包括聚合和組合)關係是使用最為廣泛的,其次是依賴和繼承

設計類之間的關係是遵循的原則:

首先判斷類之間是否是一種「關聯」關係,

若不是再判斷是否是「依賴關係」,

一般情況下若不是關聯,就是依賴關係

物件導向 淺述物件之間的關係

物件之間的關係 依賴 需要某種服務 關聯 物件間有某種對應關係 聚合,組合,繼承.依賴 物件之間最弱的一種關聯方式,是臨時性的關聯。中一般指由區域性變數 函式引數 返回值建立的對於其他物件的呼叫關係。依賴一般情況下是以下幾種情況之一 a classa中某個方法的引數型別是classb 這種情況成為耦...

物件導向中多個物件之間的關係

當談到物件導向的設計時,我們經常說物件導向是符合人們對現實世界的思維模式,即人們採用針對非程式設計領域存在的複雜問題的解決方式,來解決軟體設計過程中各種錯綜複雜的關係。利用物件導向設計,特別是採用各種設計模式來解決問題時,會設計多個類,然後建立多個物件,這些物件,有些主要是資料模型,有些則是行為描述...

物件導向程式設計中如何描述物件之間的關係?

談到物件導向程式設計中如何選擇物件之間的關係,實在是一件令人頭疼的事。物件之間的關係大致有以下幾種 1.繼承關係 舉個例子 person是乙個描述所有人的類,student可以繼承於person,所有person具有的公有方法student都有,即任何使用person物件的地方,都可以毫無顧忌的直接...