ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
L?p tr¨¬nh h??ng ??i t??ng
                      L?p tr¨¬nh h??ng ??i t??ng


 H¨¤ V?n Sang      H¨¤ V?n Sang
 B? m?n: Tin h?c TC ¨C KT
 Khoa: H? Th?ng Th?ng HTTT, t? - H?c Vi?n T¨¤i Ch¨ªnh
                  Khoa Tin Kinh
 Tel: 0982.165.568Academy Of Finance, Hanoi
 Email: sanghv@hvtc.edu.vn
 Website: http://www.hvtc.edu.vn/sanghv



05/03/12 07:09
L?p tr¨¬nh h??ng ??i t??ng
                                  CH??NG V




                 H¨¤ V?n Sang
                 Khoa HTTT,
                 Academy Of Finance, Hanoi




05/03/12 07:09
1. Kh¨¢i ni?m

  K?t g¨¢n s?m v¨¤ k?t g¨¢n mu?n

      ?Khi ??i t??ng nh?n m?t th?ng b¨¢o th?c hi?n m?t
      ph??ng th?c, h? th?ng s?:
             ? Ki?m tra c¨² ph¨¢p c?a th?ng b¨¢o
             ?G?n th?ng b¨¢o ?¨® v?i 1 ??nh ngh?a h¨¤m c? th?
         Vi?c k?t g¨¢n c¨® th? x?y ra ? hai th?i ?i?m:
          ?L¨²c bi¨ºn d?ch ch??ng tr¨¬nh ? K?t g¨¢n s?m
           ?L¨²c ch?y ch??ng tr¨¬nh ? K?t g¨¢n mu?n

Object Oriented Programing¨C Information Systems Department   3
2. Ph??ng th?c ?o
   ?    ??nh ngh?a:
        ? H¨¤m ?o l¨¤ h¨¤m th¨¤nh ph?n c?a l?p

        ? ???c khai b¨¢o trong l?p c? s? v¨¤ ??nh ngh?a l?i trong l?p d?n xu?t

   ?    C¨² ph¨¢p
                         virtual <ki?u tr? v?> <t¨ºn h¨¤m>([ts?])
   ?    M?t s? ch¨² ?:
        ? ??nh ngh?a c¨¢c ph??ng th?c ¨¢o nh? c¨¢c ph??ng th?c th?ng th??ng

        ? S? d?ng con tr? ?? truy c?p t?i h¨¤m ?o

        ? ??nh ngh?a trong l?p c? s? ngay c? khi n¨® kh?ng ???c s? d?ng

        ? Kh?ng c¨® h¨¤m kh?i t?o ?o nh?ng c¨® th? c¨® h¨¤m hu? ?o

        ? Con tr? c?a l?p c? s? c¨® th? ch?a ??a ch? c?a ??i t??ng l?p d?n

           xu?t




Object Oriented Programing¨C Information Systems Department                     4
2. Ph??ng th?c ?o
   ?    C? ch? k?t g¨¢n mu?n:
        ?   Khi m?t l?p c¨® ph??ng th?c ?o ho?c l?p c? s? c¨® ph??ng th?c ¨¢o
        ?   Ch??ng tr¨¬nh d?ch s? ph¨¢t sinh th¨ºm m?t con tr? ?o (virtual pointer)
        ?   Con tr? n¨¤y tr? t?i m?t b?ng ?o (Vtable)
        ?   B?ng ?o c¨® ch?a ??a ch? c?a c¨¢c ph??ng th?c ?o
   ?    Qu¨¢ tr¨¬nh ph¨¢t sinh m?t ??i t??ng l?p d?n xu?t:
        ?   B1: x¨¢c ??nh c¨¢c th¨¤nh ph?n ( ko ?o) k? c? c? c¨¢c th¨¤nh ph?n c?a
            l¨®p c? s?
        ?   B??c 2: X?y d?ng con tr? ?o v¨¤ b?ng ¨¢o
   ?    Khi k?t g¨¢n mu?n, c?n c? v¨¤o con tr? ?o ?? x¨¢c ??nh
        ph??ng th?c trong b?ng ?o v¨¤ ph??ng th?c c?a l?p d?n
        xu?t



Object Oriented Programing¨C Information Systems Department                         5
V¨ª d?:
   ?  X?y d?ng l?p gi¨¢o vi¨ºn v¨¤ sinh vi¨ºn k? th?a t? l?p ng??i
   NGUOI
   {
      - ht,namsinh
      - nhap, in
      - loai(){returrn 0};
   }
   SV:NGUOI
   {
      -lop,dtb
      -nhap, in
      -loai(){ return 1;}
   }
   GV:NGUOI
   {
      -hsl, dv
      -nhap,in
      -loai(){return 2;}
   }

Object Oriented Programing¨C Information Systems Department       6
Ch¨² ?:
   ?    C? ch? k?t g¨¢n ph??ng th?c ?o ch? c¨® th? th?c hi?n qua
        ph¨¦p g¨¢n con tr? ho?c tham chi?u
            NGUOI a,*p;
            GV b;
            a=b;
            a.nhap(); //k?t g¨¢n s?m
            p=&b;
            p?nhap(); //k?t g¨¢n mu?n

        NGUOI &q=b;
        q?nhap(); //k?t g¨¢n mu?n
        void f(NGUOI x)
        { x.nhap(); //k?t g¨¢n s?m}
        void f(NGUOI &x)
        { x.nhap(); //k?t g¨¢n mu?n }

Object Oriented Programing¨C Information Systems Department       7
3. Ph??ng th?c ?o thu?n tu?
   ?    M?c ?¨ªch:
        ?   Tr¨¢nh l?ng ph¨ª b? nh?
        ?   Cung c?p m?t ph??ng th?c th?ng nh?t l¨¤m giao di?n chung.
   ?    Khai b¨¢o:
            virtual <ki?u tr? v?> <t¨ºn ph??ng th?c>([ts?])=0;
   ?    ??c ?i?m:
        ?   Kh?ng b?t bu?c ??nh ngh?a trong l?p c? s?
        ?   Kh?ng th? khai b¨¢o ??i t??ng thu?c l?p c¨® ph??ng th?c ?o thu?n
            tu?
        ?   L?p c¨® ph??ng th?c ?o thu?n tu? ch? l¨¤m l?p c? s? cho l?p kh¨¢c v¨¤
            g?i l¨¤ l?p c? s? tr?u t??ng
        ?   L?p d?n xu?t k? th?a l?p c? s? tr?u t??ng m¨¤ kh?ng ??nh ngh?a l?i
            ph??ng th?c ?o thu?n tu? ? n¨® tr? th¨¤nh l?p c? s? tr?u t??ng


Object Oriented Programing¨C Information Systems Department                      8
Qui c¨¢ch n?p b¨¤i
   G?i t?i ??a ch?: sanghv@gmail.com
   CC: sanghv@hvtc.edu.vn
   Ti¨ºu ??:
   [L?p][BT6][Stt][H? v¨¤ t¨ºn]
   V¨ª d?:
   [K43/41.01][BT3][14][L¨º ho¨¤ng V?]
   H?n n?p: 23h59¡¯ ng¨¤y 29/01/2008




Object Oriented Programing¨C Information Systems Department   9

More Related Content

Chapter 5

  • 1. L?p tr¨¬nh h??ng ??i t??ng L?p tr¨¬nh h??ng ??i t??ng H¨¤ V?n Sang H¨¤ V?n Sang B? m?n: Tin h?c TC ¨C KT Khoa: H? Th?ng Th?ng HTTT, t? - H?c Vi?n T¨¤i Ch¨ªnh Khoa Tin Kinh Tel: 0982.165.568Academy Of Finance, Hanoi Email: sanghv@hvtc.edu.vn Website: http://www.hvtc.edu.vn/sanghv 05/03/12 07:09
  • 2. L?p tr¨¬nh h??ng ??i t??ng CH??NG V H¨¤ V?n Sang Khoa HTTT, Academy Of Finance, Hanoi 05/03/12 07:09
  • 3. 1. Kh¨¢i ni?m K?t g¨¢n s?m v¨¤ k?t g¨¢n mu?n ?Khi ??i t??ng nh?n m?t th?ng b¨¢o th?c hi?n m?t ph??ng th?c, h? th?ng s?: ? Ki?m tra c¨² ph¨¢p c?a th?ng b¨¢o ?G?n th?ng b¨¢o ?¨® v?i 1 ??nh ngh?a h¨¤m c? th? Vi?c k?t g¨¢n c¨® th? x?y ra ? hai th?i ?i?m: ?L¨²c bi¨ºn d?ch ch??ng tr¨¬nh ? K?t g¨¢n s?m ?L¨²c ch?y ch??ng tr¨¬nh ? K?t g¨¢n mu?n Object Oriented Programing¨C Information Systems Department 3
  • 4. 2. Ph??ng th?c ?o ? ??nh ngh?a: ? H¨¤m ?o l¨¤ h¨¤m th¨¤nh ph?n c?a l?p ? ???c khai b¨¢o trong l?p c? s? v¨¤ ??nh ngh?a l?i trong l?p d?n xu?t ? C¨² ph¨¢p virtual <ki?u tr? v?> <t¨ºn h¨¤m>([ts?]) ? M?t s? ch¨² ?: ? ??nh ngh?a c¨¢c ph??ng th?c ¨¢o nh? c¨¢c ph??ng th?c th?ng th??ng ? S? d?ng con tr? ?? truy c?p t?i h¨¤m ?o ? ??nh ngh?a trong l?p c? s? ngay c? khi n¨® kh?ng ???c s? d?ng ? Kh?ng c¨® h¨¤m kh?i t?o ?o nh?ng c¨® th? c¨® h¨¤m hu? ?o ? Con tr? c?a l?p c? s? c¨® th? ch?a ??a ch? c?a ??i t??ng l?p d?n xu?t Object Oriented Programing¨C Information Systems Department 4
  • 5. 2. Ph??ng th?c ?o ? C? ch? k?t g¨¢n mu?n: ? Khi m?t l?p c¨® ph??ng th?c ?o ho?c l?p c? s? c¨® ph??ng th?c ¨¢o ? Ch??ng tr¨¬nh d?ch s? ph¨¢t sinh th¨ºm m?t con tr? ?o (virtual pointer) ? Con tr? n¨¤y tr? t?i m?t b?ng ?o (Vtable) ? B?ng ?o c¨® ch?a ??a ch? c?a c¨¢c ph??ng th?c ?o ? Qu¨¢ tr¨¬nh ph¨¢t sinh m?t ??i t??ng l?p d?n xu?t: ? B1: x¨¢c ??nh c¨¢c th¨¤nh ph?n ( ko ?o) k? c? c? c¨¢c th¨¤nh ph?n c?a l¨®p c? s? ? B??c 2: X?y d?ng con tr? ?o v¨¤ b?ng ¨¢o ? Khi k?t g¨¢n mu?n, c?n c? v¨¤o con tr? ?o ?? x¨¢c ??nh ph??ng th?c trong b?ng ?o v¨¤ ph??ng th?c c?a l?p d?n xu?t Object Oriented Programing¨C Information Systems Department 5
  • 6. V¨ª d?: ? X?y d?ng l?p gi¨¢o vi¨ºn v¨¤ sinh vi¨ºn k? th?a t? l?p ng??i NGUOI { - ht,namsinh - nhap, in - loai(){returrn 0}; } SV:NGUOI { -lop,dtb -nhap, in -loai(){ return 1;} } GV:NGUOI { -hsl, dv -nhap,in -loai(){return 2;} } Object Oriented Programing¨C Information Systems Department 6
  • 7. Ch¨² ?: ? C? ch? k?t g¨¢n ph??ng th?c ?o ch? c¨® th? th?c hi?n qua ph¨¦p g¨¢n con tr? ho?c tham chi?u NGUOI a,*p; GV b; a=b; a.nhap(); //k?t g¨¢n s?m p=&b; p?nhap(); //k?t g¨¢n mu?n NGUOI &q=b; q?nhap(); //k?t g¨¢n mu?n void f(NGUOI x) { x.nhap(); //k?t g¨¢n s?m} void f(NGUOI &x) { x.nhap(); //k?t g¨¢n mu?n } Object Oriented Programing¨C Information Systems Department 7
  • 8. 3. Ph??ng th?c ?o thu?n tu? ? M?c ?¨ªch: ? Tr¨¢nh l?ng ph¨ª b? nh? ? Cung c?p m?t ph??ng th?c th?ng nh?t l¨¤m giao di?n chung. ? Khai b¨¢o: virtual <ki?u tr? v?> <t¨ºn ph??ng th?c>([ts?])=0; ? ??c ?i?m: ? Kh?ng b?t bu?c ??nh ngh?a trong l?p c? s? ? Kh?ng th? khai b¨¢o ??i t??ng thu?c l?p c¨® ph??ng th?c ?o thu?n tu? ? L?p c¨® ph??ng th?c ?o thu?n tu? ch? l¨¤m l?p c? s? cho l?p kh¨¢c v¨¤ g?i l¨¤ l?p c? s? tr?u t??ng ? L?p d?n xu?t k? th?a l?p c? s? tr?u t??ng m¨¤ kh?ng ??nh ngh?a l?i ph??ng th?c ?o thu?n tu? ? n¨® tr? th¨¤nh l?p c? s? tr?u t??ng Object Oriented Programing¨C Information Systems Department 8
  • 9. Qui c¨¢ch n?p b¨¤i G?i t?i ??a ch?: sanghv@gmail.com CC: sanghv@hvtc.edu.vn Ti¨ºu ??: [L?p][BT6][Stt][H? v¨¤ t¨ºn] V¨ª d?: [K43/41.01][BT3][14][L¨º ho¨¤ng V?] H?n n?p: 23h59¡¯ ng¨¤y 29/01/2008 Object Oriented Programing¨C Information Systems Department 9