Lập trình hướng đối tượng C/C++ -OOP 03 object life cycle

25 467 7
Lập trình hướng đối tượng C/C++ -OOP 03 object life cycle

Đ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

Lập trình hướng đối tượng C/C++ -OOP 03 object life cycle

Vòng đ i đ i tư ng GV Nguy n Minh Huy Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy N i dung Phương th c kh i t o o Phương th c h y y Thành ph n tĩnh tĩnh Class Template Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy N i dung Phương th c kh i t o o Phương th c h y y Thành ph n tĩnh tĩnh Class Template Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy Phương th c kh i t o V n đ kh i t o thông tin đ i tư ng: ng: Giá tr ban đ u c a thu c tính? tính? class PhanSo { private: int m_tu; m_tu; int m_mau; m_mau; }; void main() main() { PhanSo p; // Giá tr c a p?? } Kh i t o b ng phương th c truy xu t t class PhanSo { public: void ganTu(int tu); ganTu( tu); void ganMau(int mau); ganMau( mau); }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy void main() main() { PhanSo p; p.ganTu(1); p.ganTu(1); p.ganMau(3); p.ganMau(3); } Phương th c kh i t o V n đ kh i t o thông tin đ i tư ng: ng: Như c m c a phương th c truy xu t: t: Vi ph m “tính ch t h p đen” đen” Ngư i dùng quên g i i “Làm khai sinh” cho đ i tư ng sinh” ng Phương th c kh i t o o Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy Phương th c kh i t o Tính ch t phương th c kh i t o: o: B t bu c g i khai báo đ i tư ng ng Có th n p ch ng nhi u phương th c c Khơng có giá tr tr v Có tên trùng tên l p (trong C++) class PhanSo { private: int m_tu; m_tu; int m_mau; m_mau; public: PhanSo( tu, PhanSo(int tu, int mau); mau); PhanSo( giaTri); PhanSo(int giaTri); }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy void main() main() { PhanSo p1(1, 2); 2); PhanSo p2(1, 3); PhanSo *p3 = new PhanSo(2, 3); PhanSo(2, 3); }s Phương th c kh i t o Phương th c kh i t o m c đ nh: nh: “Làm khai sinh” m c đ nh cho đ i tư ng sinh” ng Khơng có tham s N u l p khơng có phương th c kh i t o o Trình biên d ch t c p p class PhanSo { private: int m_tuSo; m_tuSo; int m_mauSo; m_mauSo; public: PhanSo(); PhanSo(); }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy void main() main() { PhanSo p; PhanSo *q = new PhanSo; PhanSo; } Phương th c kh i t o Phương th c kh i t o chép: chép: “Làm khai sinh” b ng chép đ i tư ng khác sinh” khác Tham s đ i tư ng l p p Luôn t n t i l p (trình biên d ch c p) p) class PhanSo { private: int m_tuSo; m_tuSo; int m_mauSo; m_mauSo; public: PhanSo(const PhanSo(const PhanSo &p); }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy void main() main() { PhanSo p1(1, 2); 2); PhanSo p2(p1); p2(p1); PhanSo p3 = p2; p2; } Phương th c kh i t o Dr Guru khuyên: khuyên: M t l p nên có t i thi u phương th c kh i t o: o: Kh i t o m c đ nh nh Kh i t o chép chép Kh i t o v i đ y đ thông tin class PhanSo { private: int m_tu; m_tu; int m_mau; m_mau; public: PhanSo(); PhanSo(); PhanSo(const PhanSo(const PhanSo &p); PhanSo( tu, PhanSo(int tu, int mau); mau); }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy N i dung Phương th c kh i t o o Phương th c h y y Thành ph n tĩnh tĩnh Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 10 Phương th c h y V n đ rò r b nh (memory leak): B nh c p cho tr không t đư c thu h i i Làm thu h i? i? Xây d ng phương th c thu h i i Ngư i dùng quên g i i “Làm di chúc” cho đ i tư ng chúc” ng Phương th c h y y class HocSinh { private: char *m_hoTen; m_hoTen; public: void thuHoiBoNho() { thuHoiBoNho() delete m_hoTen; } m_hoTen; }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy HocSinh H tên Đi m văn Đi m toán void main() main() { HocSinh h; h.thuHoiBoNho(); h.thuHoiBoNho(); } 11 Phương th c h y Tính ch t phương th c h y: y: T đ ng g i đ i tư ng b h y y Duy nh t cho m i l p p Có tên ~ (trong C++) ~ class HocSinh { private: char *m_hoTen; m_hoTen; float m_diemVan; m_diemVan; float m_diemToan; m_diemToan; public: ~HocSinh() { delete m_hoTen; } HocSinh() m_hoTen; }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy void main() main() { HocSinh h; HocSinh *p = new HocSinh; HocSinh; delete p; } 12 N i dung Phương th c kh i t o o Phương th c h y y Thành ph n tĩnh tĩnh Class Template Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 13 Thành ph n tĩnh Chia s gi a đ i tư ng l p: p: M i đ i tư ng có b n riêng: riêng: Thu c tính tính Phương th c c PhanSo Thành ph n đ i tư ng ng Mu n dùng chung thông tin? Thành ph n tĩnh tĩnh T s M us Rút g n() p1: PhanSo T s :1 M us :2 Rút g n() Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy p2: PhanSo T s :1 M us :3 Rút g n() 14 Thành ph n tĩnh Tính ch t thành ph n tĩnh: tĩnh: Thu c tính, phương th c thu c ph m vi l p tính, p Dùng chung cho m i đ i tư ng c a l p p Khai báo b ng t khóa “static” (trong C++) (trong Truy xu t b ng toán t :: (trong C++) (trong class PhanSo { private: static public: static private: int int }; PhanSo::m_giaTriLN PhanSo::m_giaTriLN = 10000; int m_giaTriLN; m_giaTriLN; int layGiaTriLN(); layGiaTriLN(); void main() main() { int x = PhanSo::layGiaTriLN(); PhanSo::layGiaTriLN(); } m_tu; m_tu; m_mau; m_mau; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 15 N i dung Phương th c kh i t o o Phương th c h y y Thành ph n tĩnh tĩnh Class Template Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 16 Class Template Xét l p m ng: ng: Các ph n t s nguyên nguyên T ng quát: ph n t ki u b t kỳ quát: kỳ Tham s hóa thu c tính, phương th c tính, c Class Template Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 17 Class Template Cách s d ng Class Template: template class Mang { private: int m_kichThuoc; m_kichThuoc; T *m_duLieu; m_duLieu; public: Mang( kichThuoc); Mang(int kichThuoc); T layPhanTu(int viTri); layPhanTu( viTri); }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy void main() { Mang Mang m1(10); int a = m1.layPhanTu(5); Mang Mang m2(5); PhanSo p = m2.layPhanTu(2); } 18 Tóm t t Phương th c kh i t o: o: “Làm khai sinh” cho đ i tư ng sinh” ng B t bu c g i khai báo báo Có th n p ch ng ng Phương th c h y: y: “Làm di chúc” cho đ i tư ng chúc” ng T đ ng g i h y y Có nh t m t t Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 19 Tóm t t Thành ph n tĩnh: tĩnh: Dùng chung cho đ i tư ng c a l p p Khai báo b ng t khóa “static” Truy xu t b ng tốn t :: Class Template: Tham s hóa ki u d li u thu c tính tính Lưu tr x lý t ng quát nhi u ki u u Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 20 Bài t p Bài t p 3.1: Trang b cho l Kh i t Kh i t Kh i t Kh i t p phân s nh ng cách kh i t o sau: sau: o m c đ nh phân s = o v i t m u cho trư c c o t giá tr nguyên cho trư c c o t m t phân s khác khác Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 21 Bài t p Bài t p 3.2: Trang b cho l p h c sinh nh ng cách kh i t o h y sau: sau: Kh i t o v i h tên m văn, toán cho trư c văn, c Kh i t o v i h tên cho trư c, m văn, toán = c, văn, Kh i t o t m t h c sinh khác khác H y đ i tư ng h c sinh, thu h i b nh sinh, Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 22 Bài t p Bài t p 3.3: Trang b cho l p m ng s nguyên nh ng cách kh i t o h y sau: sau: Kh i t o m c đ nh m ng kích thư c = Kh i t o v i kích thư c cho trư c, ph n t = c, Kh i t o t m t m ng int [ ] v i kích thư c cho trư c c Kh i t o t m t đ i tư ng m ng khác khác H y đ i tư ng m ng, thu h i b nh ng, Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 23 Bài t p Bài t p 3.4: Trang b cho l p phân s nh ng phương th c sau: sau: Đ m s lư ng phân s đư c t o ra T o tr v phân s v i t m u cho trư c c Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 24 Bài t p Bài t p 3.5: Xây d ng l p m ng ki u d li u b t kỳ kỳ Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 25 ... Template Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy N i dung Phương th c kh i t o o Phương th c h y y Thành ph n tĩnh tĩnh Class Template Phương pháp l p trình hư ng đ i tư ng - Nguy... khơng có phương th c kh i t o o Trình biên d ch t c p p class PhanSo { private: int m_tuSo; m_tuSo; int m_mauSo; m_mauSo; public: PhanSo(); PhanSo(); }; Phương pháp l p trình hư ng đ i tư ng - Nguy... Luôn t n t i l p (trình biên d ch c p) p) class PhanSo { private: int m_tuSo; m_tuSo; int m_mauSo; m_mauSo; public: PhanSo(const PhanSo(const PhanSo &p); }; Phương pháp l p trình hư ng đ i tư

Ngày đăng: 12/01/2014, 16:57

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan