1. Trang chủ
  2. » Công Nghệ Thông Tin

Ngôn ngữ lập trình C - Chương 7 doc

24 175 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 311,76 KB

Nội dung

Ch Ch −¬ −¬ ng ng 7 7 Thõa kÕ Thõa kÕ v v μ μ ® ® a h a h × × nh nh Bài ging C++. 19/11/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 2 7.1 T 7.1 T æ æ ng quan vÒ thõa kÕ v ng quan vÒ thõa kÕ v µ µ ® ® a h a h × × nh nh  7.1.1 Tha k trong lp trình HT – Khái nim • Tha k là mt trong ba nguyên tc c bn caLTHT. • Lp c s và lp dn xut: – Lp đc tha k å lp c s, lp tha k å lp dn xut. – Mt lp có th là lp c s cho nhiu lp dn xut. – Mt lp dn xut có th là lp c s cho mt lp khác. • S tha k trong lp dn xut: – Lp dn xut s tha k các thành phn (d liu, hàm) ca lp c s, đng thi thêm vào các thành phn mi. • Lp dn xut s “làm tt hn” (hoc “làm li”) nhng công vic mà lp c s “làm cha tt” (hoc không còn “phù hp” vi lp dn xut). – Lp c s thng đc x lý ging nh mt thành phn có kiu là đi tng ( å khái nim kt tp). Bài ging C++. 19/11/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 3 7.1 T 7.1 T æ æ ng quan vÒ thõa kÕ v ng quan vÒ thõa kÕ v µ µ ® ® a h a h × × nh nh  7.1.1 Tha k trong lp trình HT – c đim • Tha k cho phép to kiu mi trên c s lp đang tn ti. – M rng chúng vi nhng thuc tính mi å to đi tng ging mt phn đi tng c. • Tha k cho phép nâng cao kh nng s dng li chng trình. – Không phi biên dch li các thành phn chng trình đã có trong các lp c s. åKhông cn phi có chng trình ngun tng ng: ngi lp trình đc phép tha k các lp đnh ngha trc đó. å Ngi dùng hoàn toàn không th và không cn phi bit rõ phn chng trình ngun tng ng. • Trình dch có th cung cp mt th vin lp, đi tng làm c s đ xây dng giao din ng dng. Bài ging C++. 19/11/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 4 7.1 T 7.1 T æ æ ng quan vÒ thõa kÕ v ng quan vÒ thõa kÕ v µ µ ® ® a h a h × × nh nh  7.1.2 a hình trong lp trình hng đi tng – Khái nim • a hình là mt trong ba nguyên tc c bn ca LTHT. – Tính đa hình đc thit lp trên c s tha k. • a hình: đi tng có th có biu hin khác nhau tu thuc tình hung c th. – Tính đa hình có th th hin trên mt hành vi (phng thc ca lp) hoc trên toàn b đi tng. – Tính đa hình cung cp kh nng x lý các lp liên h nhau ca các đi tng theo mt cách tng quát. – nh ngha li hàm thành phn • nh ngha li HTP ca lp c s trong lp dn xut là c s cho vic thit đt tính đa hình. • Phân bit đnh ngha li và đnh ngha chng (xem chng 4 & 6) Bài ging C++. 19/11/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 5 7.2 Thõa kÕ 7.2 Thõa kÕ  7.2.1 Tha k lp – Cú pháp đnh ngha tha k class Lop_TK : access Lop_CS { //Khai báo và đnh ngha các thành phn mi [d liu thành phn mi] [hàm thành phn mi] }; – Chú ý: • access: thuc tính tha k – Là mt trong ba thuc tính: public, private, protected. • Lop_CS : lp c s (là lp có trc). • Lop_TK : lp tha k trc tip - lp dn xut (là lp đc đnh ngha trên c s ca lp B). Bài ging C++. 19/11/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 6 7.2 Thõa kÕ 7.2 Thõa kÕ  7.2.1 Tha k lp – Thành phn ca lp dn xut • DLTP : lp dn xut tha k tt c DLTP ca lp c s. • HTP : lp dn xut tha k tt c HTP ca lp c s tr hàm to, hàm hy, hàm bn và hàm phép toán gán. – Truy nhp thành phn • Các thành phn private trong lp c s không th truy nhp đc t các lp dn xut (thành phn, hàm bn và đi tng). • HTP ca lp dn xut đc phép truy nhp đn các thành phn protected và public ca lp c s. å Phm vi lp ch m rng cho hàm bn, lp bn mà không đc m rng đn các lp tha k. Bài ging C++. 19/11/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 7 7.2 Thõa kÕ 7.2 Thõa kÕ  7.2.1 Tha k lp – Thuc tính tha k • Dn xut public: không thay đi thuc tính ca các thành phn tha k t lp c s. • Dn xut protected: – Thành phn public, protected trong lp c s å thành phn protected trong lp dn xut. – Thành phn private ca lp c s å thành phn private trong lp dn xut. • Dn xut private: – Tt c thành phn ca lp c s (public, protected, private) å thành phn private trong lp dn xut. – Dn xut private đc dùng khi không cn khai báo thêm HTP mi mà ch đnh ngha li các hàm đã có trong lp c s. Bài ging C++. 19/11/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 8 7.2 Thõa kÕ 7.2 Thõa kÕ  7.2.1 Tha k lp – nh ngha li thành phn (d liu, hàm) • t tên DLTP trong lp dn xut trùng tên DLTP trong lp c s. – DLTP mi s “che khut” DLTP ca lp c s. – Có th truy nhp ti thành phn trong lp c s theo cú pháp: tên_lp::tên_thành_phn; • nh ngha li hàm thành phn. – Hàm đnh ngha li ging hàm nguyên thy c v tên, tham s và giá tr tr v. – Các hàm này ch khác nhau  v trí: mt hàm nm trong lp dn xut và hàm kia nm trong lp c s. • Tránh đnh ngha chng hàm trong phân cp tha k. – Các hàm trùng tên  lp c s s b “che khut”. Bài ging C++. 19/11/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 9 7.2 Thõa kÕ 7.2 Thõa kÕ  7.2.1 Tha k lp – Tính tha k trong lp dn xut • i tng lp dn xut và lp c s. – Mt đi tng ca lp dn xut có th “thay th”mt đi tng ca lp c s å có th chuyn kiu ngm đnh t mt đi tng ca lp dn xut sang mt đi tng ca lp c s. – VD: Lop_TK: dt_tk; Lop_CS: dt_cs = dt_tk; – iu ngc li không đúng nu không đnh ngha chng phép toán gán trên lp c s và lp dn xut. • Con tr, tham chiu lp dn xut và lp c s. – Con tr (tham chiu) lp c s có th tr đn đi tng lp dn xut. – Con tr (tham chiu) lp dn xut không th nhn đa ch (gán giá tr) ca đi tng lp c s (tr trng hp ép kiu). Bài ging C++. 19/11/2008 V.S.Nam. B/m KTHT, khoa CNTT, HXD 7.2 Thõa kÕ 7.2 Thõa kÕ  7.2.2 Hàm to, hàm hy và tính tha k – Hàm to trong lp dn xut • Lp dn xut không th tha k hàm to ca lp c s. • C ch chung gi hàm to ca lp dn xut: – Gi hàm to ca lp c s. å DLTP tha k t lp c s đc khi to trc. – Gi hàm to ca lp dn xut. å Phn còn li ca đi tng đc khi to. • Nh vy, hàm to lp c s luôn đc gi trc khi DLTP trong lp dn xut đc khi to và trc khi thc thi các lnh khác. – C ch trên đc thc hin mt cách ngm đnh, không cn phi gi tng minh hàm to ca lp c s trong hàm to ca lp dn xut. – Trong thc t cng không th thc hin đc vic gi hàm to ca mt lp nào đómt cách tng minh. [...]... khoa CNTT, HXD Bài gi ng C+ + 19/11/2008 7. 4 §a thõa kÕ 7. 4.3 C u tr c d li u å Bài t p l n! ng v i l p – c c c tài li u liên quan – L p trình c i t: • M r ng bài t p l n ch ng 3, s d ng c c ki n th c v l p trình H T (l p, th a k l p, hàm o, l p o…) • C c thao t c x lý trên danh sách liên k t, ng n x p, hàng i, c y và c c c u tr c kh c • C c bài toán trên c u tr c d li u ng (s p x p, tìm ki m, …) • C c. .. h y: ng c l i • M t l p c s c th c th a k nhi u l n trong m t l p d n xu t kh c å xung t th a k – C c ngôn ng u ph i c gi i pháp kh c ph c – C+ + a ra khái ni m th a k o V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 19/11/2008 7. 4 §a thõa kÕ 7. 4.2 C i – L pc s t a th a k trong C+ + o • C pháp chung: class Lop_TK1 virtual Lop_CS { }; class Lop_TK2 virtual Lop_CS { }; class Lop_TK3: public Lop_TK1,... t hàm c khai báo bình th ng l p c s nh ng l i c khai báo o l p d n xu t å trình d ch s xem chúng c ki u g n k t kh c nhau • Hàm xu t l pc s c coi là c ki u g n k t t nh, c n hàm c coi là c ki u g n k t ng – L p c s ” và l p “d n xu t” th a k V.S.Nam B/m KTHT, khoa CNTT, HXD ây l pd n c hi u r ng h n, xét trên c y Bài gi ng C+ + 19/11/2008 7. 3 §a h×nh 7. 3.2 C c v n – kh c v hàm o nh ngh a ch ng... m tham chi u it ng nh th nào? • G n k t t nh (s m): x c nh HTP trong quá trình biên d ch – Trong g n k t t nh, vi c g i HTP c x c trình và không thay i trong khi th c thi • G nk t ng (mu n): x c – Trong g n k t trình d a trên c trong ch ng nh HTP trong quá trình th c thi ng, vi c g i HTP i t ng mà con tr V.S.Nam B/m KTHT, khoa CNTT, HXD nh tr c x c nh khi th c thi ch ang ch a a ch Bài gi ng C+ + 19/11/2008... m c dù nó c th kh c v i hàm hu c a l p c s • Gi i pháp cho v n này là khai báo hàm hu o cho l p c s – Khi ó hàm hu c a c c l p d n xu t là o mà không yêu c u chúng ph i c c ng tên Ta g i ây là tính a hình c a hàm o V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 19/11/2008 7. 3 §a h×nh 7. 3.2 C c v n kh c v hàm o – Hàm o thu n túy và l p tr u t ng • Hàm o thu n tuý là hàm không c ph n nh ngh a – C ... vi c x c nh l i g i hàm n gi n h n V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 19/11/2008 7. 3 §a h×nh 7. 3.2 C c v n – Hàm hu kh c v hàm o o • Hàm t o không th là hàm o, trong khi ó hàm hu thì c th • Xét tr ng h p c c i t ng trong c y th a k c c p phát ng – L c này hàm h y c a l p c s c g i mà không c n bi t n ki u c a i t ng (là i t ng mà con tr tr n), ngoài ra nó c ng không bi t n tên hàm hu c. .. 19/11/2008 7. 2 Thõa kÕ 7. 2.2 Hàm t o, hàm h y và tính th a k – Hàm t o sao chép trong l p d n xu t • Trong nh ngh a c a HTSC l p d n xu t c th mô t b t k hàm t o nào c m t trong l p c s • C pháp chung: Lop_TK(Lop_TK &dt_tk) : Lop_CS(ds_giá_tr ) { // } • C th s d ng m t c ch làm kh c: g i HTSC c a l p c s trong nh ngh a c a HTSC l p d n xu t – C pháp: Lop_TK(Lop_TK &dt_tk) : Lop_CS((Lop_CS &)dt_cs)... t ph i c g i – N u không nh ngh a hàm t o cho l p d n xu t å trình d ch t ng t o ra m t hàm t o ng m nh • Trình t kh i t o DLTP c a it ng l p d n xu t: – t ch cho i t ng (tr ng thái ch a c x c nh c th ) – Hàm t o t ng ng c a l p c s c g i (ng m nh ho c qua danh sách kh i t o c a hàm t o l p d n xu t) – Hàm t o c a l p d n xu t c g i b sung DLTP m i V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 19/11/2008... o c a l p d n xu t – C th thay i tham s truy n cho hàm t o l p c s V.S.Nam B/m KTHT, khoa CNTT, HXD nh ngh a Bài gi ng C+ + 19/11/2008 7. 2 Thõa kÕ 7. 2.2 Hàm t o, hàm h y và tính th a k – Hàm t o trong l p d n xu t (ti p) • L i g i t i hàm t o ng m c ch t ng nh c a l p c s c sinh ra m t – N u l p c s không c hàm t o ng m nh, m t trong c c hàm t o c a l p c s trong danh sách kh i t o c a hàm t o c. .. // ho c g n h n: D(D &d) : B(b) } V.S.Nam B/m KTHT, khoa CNTT, HXD Bài gi ng C+ + 19/11/2008 7. 2 Thõa kÕ 7. 2.2 Hàm t o, hàm h y và tính th a k – Hàm h y trong l p d n xu t • L p d n xu t không th th a k hàm h y c a l p c s • C ch chung g i hàm h y: – Khi i t ng thu c l p d n xu t c gi i phóng å c c i t ng thành ph n và c c i t ng th a k t l p c s c ng b gi i phóng theo å hàm h y s c g i n – Ch c n quan . c . • Tha k cho phép nâng cao kh nng s dng li chng trình. – Không phi biên dch li c c thành phn chng trình đã c trong c c lp c s. åKhông c n phi c chng trình ngun tng. lp dn xut đ c khi to và tr c khi th c thi c c lnh kh c. – C ch trên đ c th c hin mt c ch ngm đnh, không c n phi gi tng minh hàm to c a lp c s trong hàm to c a lp dn xut. –. c a lp c s đ c sinh ra mt c ch t đng. – Nu lp c s không c hàm to ngm đnh, mt trong c c hàm to c a lp c s trong danh sách khi to c a hàm to c a lp dn xut phi đc

Ngày đăng: 06/08/2014, 01:20

TỪ KHÓA LIÊN QUAN

w