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

21 404 8
Lập trình hướng đối tượng tren C/C++ - OOP 08 object life cycle in inheritance

Đ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 tren C/C++ - OOP 08 object life cycle in inheritance

Vòng đ i đ i tư ng k th a 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 Kh i t o k th a a H y k th a a V n đ tr k th a a Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy N i dung Kh i t o k th a a H y k th a a V n đ tr k th a a Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy Kh i t o k th a Trình t t o l p đ i tư ng k th a: Nhà đư c xây t móng đ n mái Khái ni m đư c đ nh nghĩa t th p đ n cao Đ i tư ng đư c t o l p t lõi đ n v Thành ph n k th a t l p s đư c t o trư c Đ i tư ng k th a Đ i tư ng s Thành ph n s Thành ph n m i Xây móng đ n mái Đ nh nghĩa th p đ n cao Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy T o l p t lõi đ n v Kh i t o k th a Th t kh i t o đ i tư ng k th a: a: Phương th c kh i t o l p s đư c g i trư c c Ph n lõi s đư c t o trư c c Phương th c kh i t o l p k th a g i sau sau Ph n v m i đư c t o sau sau L p k th a có th l a ch n cách t o ph n lõi lõi Ch đ nh phương th c kh i t o l p s Không ch đ nh: kh i t o m c đ nh đư c g i Khơng nh: i Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy Kh i t o k th a Ví d : class GiaoVien { private: char *m_hoTen; m_hoTen; float m_mucLuong; m_mucLuong; int m_ngayNghi; m_ngayNghi; public: GiaoVien(); GiaoVien(); GiaoVien(char *hoTen, GiaoVien(char *hoTen, float mucLuong, mucLuong, int ngayNghi); ngayNghi); }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy class GVCN : public GiaoVien { private: char *m_lopCN; m_lopCN; public: GVCN(); GVCN(char *lopCN); *lopCN); GVCN(char *hoTen, *hoTen, float mucLuong, mucLuong, int ngayNghi, ngayNghi, char *lopCN); *lopCN); }; Kh i t o k th a Ví d : GVCN::GVCN(char *lopCN) : GiaoVien(“Minh”, 500000, 0) lopCN) GiaoVien(“Minh”, 0) { m_lopCN = new char[strlen(lopCN) + 1]; char[strlen(lopCN) 1]; strcpy(m_lopCN, lopCN); strcpy(m_lopCN, lopCN); } GVCN::GVCN(char hoTen, GVCN::GVCN(char *hoTen, float mucLuong, int ngayNghi, char *lopCN) mucLuong, ngayNghi, *lopCN) : GiaoVien(hoTen, mucLuong, ngayNghi) GiaoVien(hoTen, mucLuong, ngayNghi) { m_lopCN = new char[strlen(lopCN) + 1]; char[strlen(lopCN) 1]; strcpy(m_lopCN, lopCN); strcpy(m_lopCN, lopCN); } GVCN::GVCN() GVCN::GVCN() GiaoVien() đư c g i trư c { } Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy N i dung Kh i t o k th a a H y k th a a V n đ tr k th a a Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy H y k th a Trình t h y đ i tư ng k th a: a: Ngư c l i v i trình t t o l p p Phương th c h y l p k th a đư c g i trư c c Ph n v bên đư c h y trư c c Phương th c h y l p k s đư c g i sau sau Ph n lõi s đư c h y sau sau M i l p ch có m t cách h y Đ i tư ng k th L p k th a không c n Đ i tư ng s ch đ nh cách h y l p s a Thành ph n s Thành ph n m i H y t v đ n lõi Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy H y k th a Ví d : GiaoVien::~GiaoVien() GiaoVien::~GiaoVien() { delete m_hoTen; m_hoTen; } GVCN::~GVCN() GVCN::~GVCN() { delete m_lopCN; m_lopCN; } ~GiaoVien() đư c g i sau ~GVCN() đư c g i trư c Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 10 N i dung Kh i t o k th a a H y k th a a V n đ tr k th a a Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 11 V n đ tr k th a Lu t “ba ơng l n”: n” L p có thu c tính tr ? Ph i t thêm vào l p “ba ông l n”: n” Phương th c h y y Phương th c kh i t o chép chép Toán t gán gán L p k th a có thu c tính tr ? Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 12 V n đ tr k th a Dr Guru khuyên: khuyên: (Lu t “ba ông l n” k th a) n” a) L p k th a có thu c tính tr : Trang b “ba ông l n” cho l p k th a n” a Kích ho t “ba ông l n” c a l p s t n” c a l p k th a a Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy “ba ông l n” n” 13 V n đ tr k th a Ví d : class A { public: A(const A &a); A& operator =(const A &a); virtual ~A(); }; class B: public A { public: B(const B &b); B& operator =(const B &b); ~B(); }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy B::B(const B &b) : A(b) { // Cài đ t kh i t o chép B } B& operator =(const B &b) { A::operator =(b); // Cài đ t toán t = cho B } ~B() // T { } đ ng g i ~A() 14 Tóm t t Kh i t o k th a: a: Kh i t o t lõi đ n v T o lõi: phương th c kh i t o l p s g i trư c lõi: c T o v : phương th c kh i t o l p k th a g i sau, sau, Có th ch đ nh phương th c kh i t o l p s H y k th a: a: H y t v vào lõi lõi H y lõi: phương th c h y l p k th a lõi: a H y v : phương th c h y l p s Lu t “ba ông l n” k th a n” a Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 15 Bài t p Bài t p 8.1: class A { public: A(int iX) { } A(int iX) }; class B: public A { public: B(): A(0) { } B(int iX, int iY): A(iX) { } B(int iX, iY): A(iX) }; class C: public B { public: C() { } C(int iZ) { } C(int iZ) C(int iX, int iY, int iZ): B(iX, iY) { } C(int iX, iY, iZ): B(iX, iY) }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy Cho bi t th t g i hàm d ng v a) void main() { C obj(1, 2, 3); obj(1, b) void main() { C obj(4); obj(4); c) void main() { C obj; obj; i: i: } } } 16 Bài t p Bài t p 8.2: Gi i quy t ba v n đ tr cho l p GiaoVien GVCN Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 17 Bài t p Bài t p 8.3: class X { }; class Y: public X { public: Y(int i) { } Y(int Y(const Y &obj) { } &obj) }; class Z: public Y { public: Z(int i): Y(i++) { } Z(int Y(i }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy Cho bi t th t g i hàm d ng v i: i: a) void main() { Z obj(5); } obj(5); b) void main() { Y obj1(6); Y obj2(obj1); } c) void main() { Z obj1(7); Z obj2(obj1); } 18 Bài t p Bài t p 8.4: Hãy v k th a cho nh ng l p đ i tư ng hình h c: c: (có th phát sinh thêm nh ng l p s c n thi t) t) - Vuông Vng - Tam giác vng vng - Trịn Trịn - Tam giác cân cân - Ellipse - Tam giác vuông cân cân - Ch nh t t - Tam giác đ u u - Thoi Thoi - Bình hành hành - Thang vuông vuông - Thang cân cân Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 19 Bài t p Bài t p 8.5: M t r p chi u phim có M hàng gh , m i hàng gh có N gh Giá vé đư c tính theo v trí ng i cho xa hàng gh trung tâm (c trư c l n sau) giá vé r , xa m t hàng gh gi m 3000 sau) Có lo i r p: p: - R p thư ng: giá vé hàng gh trung tâm 80000 ng: - R p cao c p: giá vé hàng gh trung tâm 120000, p: r p có khuy n gi m 20% giá vé vào ngày th năm hàng tu n 20% n 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 8.5: Hãy xây d ng l p RapThuong RapCaoCap, cho phép: RapCaoCap, phép: - Kh i t o r p phim v i s lương gh M x N cho trư c c - Đ t vé t i m t v trí gh đó - Cho bi t giá vé t i m t v trí gh đó - Cho bi t m t v trí gh cịn tr ng khơng khơng - Cho bi t s gh cịn tr ng r p p - Tính t ng s ti n vé bán đư c c Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 21 ... th phát sinh thêm nh ng l p s c n thi t) t) - Vuông Vuông - Tam giác vng vng - Trịn Trịn - Tam giác cân cân - Ellipse - Tam giác vuông cân cân - Ch nh t t - Tam giác đ u u - Thoi Thoi - Bình hành... C(int iZ) { } C(int iZ) C(int iX, int iY, int iZ): B(iX, iY) { } C(int iX, iY, iZ): B(iX, iY) }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy Cho bi t th t g i hàm d ng v a) void main()... l p trình hư ng đ i tư ng - Nguy n Minh Huy 15 Bài t p Bài t p 8.1: class A { public: A(int iX) { } A(int iX) }; class B: public A { public: B(): A(0) { } B(int iX, int iY): A(iX) { } B(int iX,

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

Từ khóa liên quan

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

Tài liệu liên quan