• truy xu ́t 1 thu c t nh dư li u trơ thanh vi c truy xu ́t nhơ
dung cach ₫ịnh ₫ịa chỉ chỉ s ́:
- o1.i = 5; mov bx, C1_o1
Bö mön Cöng nghï phền mï̀m Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 59 class C1 : C0 { int i ; double d; ... public :
int proc4(int i, double k);void proc5 (double d); void proc5 (double d); ... }; Tao bang ₫ịa chỉ cac method 0 "proc1" C0_proc1 1 "proc2" C1_proc2 2 "proc3" C0_proc3 3 "proc4" C1_proc4 4 "proc5" C1_proc5 5 .... ... fname faddr pvftbl
Chương 3: Nguy n tăc dịch OOP
Tao bang ₫ịa chỉ cac method (tt)
• tao bang ₫ịa chỉ g ̀m C1METHCNT ph ̀n tư(C1METHCNT la
s ́method cua class hi n hanh, k ̉ ca cac method thưa k ́.• m ̃i ph ̀n tư₫ươc nh n dang qua chỉ s ́ va g ̀m 2 th ng tin • m ̃i ph ̀n tư₫ươc nh n dang qua chỉ s ́ va g ̀m 2 th ng tin
ch nh : t n gơi nhơ cua method va₫ịa chỉ cua method.• copy bang ₫ịa chỉ cua class cha₫a co. • copy bang ₫ịa chỉ cua class cha₫a co.
• hi u chỉnh lai cac ₫ịa chỉ cua cac method bịoverride.
Bö mön Cöng nghï phền mï̀m Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 61
Chương 3: Nguy n tăc dịch OOP int C1::proc1(int i,double k) {
C2 o2;C2 *p2; C2 *p2; C1::i = i; d = k; proc5(d); o2.proc2(i,d); p2 = New(C2); p2->proc2(i,d); .... }; Dịch 1 method
int C1_proc1(C1* p, int i, double d) {C2 o2; C2 *p2; C2 o2; C2 *p2; // truy xu ́t thu c t nh p->C1_i = i; p->C1_d = d; // goi ham C1_proc5(p,d); C2_proc2(&o2, i,d);
// gơi th ng bao : ki ̉m tra, load,// anh xa bang ₫ịa chỉmethod // anh xa bang ₫ịa chỉmethod for (i = 0; i <C1METHCNT; i ++) if (strcmp ("proc2", p2-> pvftbl[i].fname)==0) break; (*pvftbl[i].faddr)(p2,i,d); }; 1 2 3 Dịch 1 method (tt)
• t n method₫ươc chuy ̉n tư dang 'tương ₫ ́i' sang 'tuy t ₫ ́i'(n ́i k ́t t n class vao). (n ́i k ́t t n class vao).
• th m tham s ́₫ ̀u ti n cho ham sinh ra : mi u ta tham khao
₫ ́n ₫ ́i tương ma ham se truy xu ́t cac thu c t nh dư li u.• t n thu c t nh ₫ươc chuy ̉n tư dang 'tương ₫ ́i' sang 'tuy t ₫ ́i' • t n thu c t nh ₫ươc chuy ̉n tư dang 'tương ₫ ́i' sang 'tuy t ₫ ́i'
(n ́i k ́t t n class vao).
• goi ham internal →goi ham nhưng th m tham s ́₫ ̀u ti n.• gơi th ng bao 3 bươc : • gơi th ng bao 3 bươc :
— ki ̉m tra, t m, load va anh xa bang ₫ịa chỉ cac method cua
₫ ́i tương.
Bö mön Cöng nghï phền mï̀m Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 63
Chương 3: Nguy n tăc dịch OOP
Tö́i ưu hoa code tao ra
• co2 v ́n ₫ ̀ lơn trong qua tr nh dịch 1 class sang ng n ngư c ̉₫i ̉n. ₫i ̉n.
— bang ₫ịa chỉmethod chi ́m nhi ̀u ch ̃.
— t ́n thơi gian ₫ ̉ phuc vu l nh gơi th ng bao : ki ̉m tra, loadva anh xa bang ₫ịa chỉ, t m chỉ s ́method c ̀n goi va goi va anh xa bang ₫ịa chỉ, t m chỉ s ́method c ̀n goi va goi gian ti ́p qua₫ịa chỉ trong bang.
• 1 s ́ chương tr nh dịch t m cach t ́i ưu hoa cac v ́n ₫ ̀ nay.• slide sau la cac t ́i ưu hoa cua chương tr nh dịch C++ va cai gia • slide sau la cac t ́i ưu hoa cua chương tr nh dịch C++ va cai gia
phai tra.
Tö́i ưu hoa code tao ra (tt)
• trong C++, t ́t ca₫ ́i tương ₫ ̀u tam thơi va găn chăt vao ưng dung→bang ₫ịa chỉ cac method cua cac ₫ ́i tương lu n năm dung→bang ₫ịa chỉ cac method cua cac ₫ ́i tương lu n năm săn trong kh ng gian cua ưng dung.
• m ̃i l ̀n tao ₫ ́i tương, bi ́n pvftbl trong ₫ ́i tương ₫ươc gan ngay ₫ịa chỉ₫ ̀u bang method →kh ng c ̀n lam bươc 1 cho ngay ₫ịa chỉ₫ ̀u bang method →kh ng c ̀n lam bươc 1 cho m ̃i l ̀n gơi th ng bao.
• C++ chỉ dung m ́i quan h con/cha trong ki ̉m tra ki ̉u→c ng vi c 2₫ươc lam tai thơi ₫i ̉m dịch thay v tai thơi ₫i ̉m gơi th ng vi c 2₫ươc lam tai thơi ₫i ̉m dịch thay v tai thơi ₫i ̉m gơi th ng bao trong luc chay.
• c t t n gơi nhơmethod kh ng c ̀n phai lưu trư trong bang ₫ịa chỉ cac method. chỉ cac method.
Bö mön Cöng nghï phền mï̀m Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 65
Chương 3: Nguy n tăc dịch OOP
Tö́i ưu hoa code tao ra (tt)
• cai gia phai tra cua vi c t ́i ưu hoa trong C++ :
— ngươi l p tr nh phai tư quy ́t ₫ịnh method nao c ̀n xư ly
theo cơ ch ́₫a h nh, ham nao kh ng ? N ́u sư quy ́t ₫ịnh nay sai th se g y l ̃i khi chay, ma la ngươi th kho long nay sai th se g y l ̃i khi chay, ma la ngươi th kho long quy ́t ₫ịnh ch nh xac.
— t nh ₫a h nh chỉ₫ung giưa cac ₫ ́i tương co m ́i quan h
con/cha,ơ₫o thư tư cac ₫ịa chỉmethod cua moi class controng bang ₫ịa chỉ lu n gi ́ng thư tư cac method tương ưng trong bang ₫ịa chỉ lu n gi ́ng thư tư cac method tương ưng cua class cha, tuy nhi n giưa 2 class b ́t ky th kh ng th ̉ ₫am bao→ki ̉m tra ki ̉u trong C++ kh ng th ̉ n ng c ́p l n băng cach dung m ́i quan h "conformity".
Trương Đai Hoc Bach Khoa Tp. HCM Khoa Cöng nghï Thöng tin
Chương 4
QUI TRÒNH HƠP NHÊT & UML