3 7 將單向關聯改為雙向

2021-09-07 14:09:31 字數 2599 閱讀 9688

單向、雙向關聯

單向和雙向關聯的區別:兩個類是否需要互相知道。

如果類a需要知道類b,而類b也需要知道類a,那麼這兩個類就應該是雙向關聯的。如果類a只需要知道類b,而類b不需要知道類a,那麼就是單向關聯。

將單向關聯改為雙向

範例:2.1 order類

order.h

1

#ifndef order

2#define order

34 #include 5 #include "

customer.h"6

7//訂單類8

class

order9;

2728

#endif

//order

order.cpp

1 #include "

order.h"2

3//訂單類4 order::order(int nid, qstring name, customer*pcustomer)

5: m_nid(nid)

6, m_name(name)

7, m_pcustomer(pcustomer)813

}1415int

order::getid()

1619

void order::setid(int

nid)

2023

qstring order::getname()

2427

void

order::setname(qstring name)

2831

32//

獲取訂單的客戶物件

33 customer*order::getcustomer()

3437

38//

設定訂單的客戶物件

39void order::setcustomer(customer *pobj)

4045

46if (m_pcustomer !=null)

4750 m_pcustomer = pobj; //

更換客戶物件

51if (m_pcustomer !=null)

5255 }

2.2 customer類

customer.h

1

#ifndef customer

2#define customer

34 #include 5 #include 6

7class

order;8//

客戶類9

class

customer10;

26#endif

//customer

customer.cpp

1 #include "

customer.h

"2 #include "

order.h"3

4//客戶類5

//獲取客戶的訂單集合

6customer::customer(qstring name) : m_name(name)79

10 qset&customer::friendorders()

1114

15//

獲取客戶名稱

16qstring customer::getname()

1720

21//

設定客戶名稱

22void

customer::setname(qstring name)

2326

27//

新增訂單項

28void customer::addorder(order*porder)

2934 }

2.3 main函式

1 #include "

customer.h

"2 #include "

order.h"3

4void

main()513

14 customer* pcustomersun = new customer("

sun"

);15 orders.back()->setcustomer(pcustomersun); //

最後乙個訂單的客戶物件修改為sun

1617 customer* pcustomerqin = new customer("

qin"

);18 orders.at(0)->setcustomer(pcustomerqin); //

第乙個訂單的客戶物件修改為qin

1920 order* pneworder = new order(110, qstring("

item110

"), null);

21 pneworder->setcustomer(pcustomerqin); //

新建乙個訂單,設定其客戶物件為qin

22 }

總結兩個類都需要使用對方特性,但其間只有一條單向連線。新增乙個反向指標,並使修改函式能夠同時更新兩條連線。

good good study, day day up.

順序 選擇 迴圈 總結

hibernate 關聯關係 一對多 單向關聯

一對多關係很常見,例如父親和孩子 班級與學生的關係就是很好的一對多的關係。在實際編寫程式時,一對多關係有兩種實現方式 單向關聯和雙向關聯。單向的一對多關係只需在一方進行對映配置,而雙向的一對多需要在關聯的雙方進行對映配置。下面以group 班級 和student 學生 為例講解如何配置一對多的關係。...

EOS單向N對1關聯

1.n端實體中用於關聯的屬性可以是主鍵也可以是非主鍵,1 端的關聯字段必須是主鍵 可以是單主鍵也可以是復合主鍵 如下圖關聯字段 orgid 當在 n 端選擇了用於關聯的屬性,那麼這些屬性在 n端實體中是不存在的,且不可訪問,會用1個 1端實體來代替。當要訪問 n 端這些屬性的值的時候,需要操作 1端...

Hibernate關係對映 單向關聯XML

多對一關係 在一的一端配置set name必須,key column必須,one to many必須。在多的一端配置many to one name,column必須 property 當column不寫是,預設列名與name相同。type也可省略,由hibernate自動匹配 1 單向 many ...