單向、雙向關聯
單向和雙向關聯的區別:兩個類是否需要互相知道。
如果類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 ...