Lập trình hướng đối tượng C/C++ - OOP 02 basic concepts of object
Khái ni m b n v đ 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 Đ i tư ng l p p S d ng đ i tư ng C++ T m v c c Bài t p p Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy N i dung Đ i tư ng l p p S d ng đ i tư ng C++ T m v c c Bài t p p Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy Đ i tư ng l p Đ i tư ng gì? gì? Chương trình “c máy” ph c t p máy” p C u thành t nhi u lo i “chi ti t” t” Chi ti t b n: hàm, c u trúc n: hàm, trúc Đã đ t o chương trình t t? t? Chi ti t m i: Đ i tư ng!! Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy Đ i tư ng l p Đ c trưng c a đ i tư ng: ng: Bao g m c d li u x lý lý Thu c tính (attribute): d li u c a đ i tư ng ng Phương th c (method): x lý c a đ i tư ng ng Nhóm t o h y y Nhóm truy xu t thơng tin Nhóm x lý nghi p v Nhóm tốn t Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy Đ i tư ng l p L p trình hư ng đ i tư ng có khác bi t? t? Hư ng th t c (procedural oriented): L y hành đ ng làm trung tâm tâm Hàm xương s ng ng - L t (Rau) - Lu c (Rau) - N u (Cơm) Cơm) L y d li u làm trung tâm tâm Đ i tư ng xương s ng ng - Cá.Ư p - Cá.Kho Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy Verb Object L t Rau Ư p Cá N u - Ư p (Cá) Cá) - Kho (Cá) Cá) Hư ng đ i tư ng (object oriented): - Rau.L t - Rau.Lu c - Cơm.N u Các bư c n u ăn Cơm Kho Cá Lu c Rau Thay đ i tư l p trình!! Đ i tư ng l p Khái ni m l p: p: Person1: Name: Peter Age: 25 Hair Color: Brown Eye Color: Brown Job: Worker Person2: Name: Thomas Age: 50 Hair Color: White Eye Color: Blue Job: Teacher Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy T p h p đ i tư ng có thu c tính phương th c Human: Name Age Hair Color Eye Color Job B n mô t đ i tư ng Ki u c a đ i tư ng N i dung Đ i tư ng l p p S d ng đ i tư ng C++ T m v c c Bài t p p Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy S d ng đ i tư ng C++ Cách s d ng đ i tư ng: ng: Tương t bi n c u trúc trúc Các bư c s d ng: ng: Khai báo l p (file h): t o ki u cho đ i tư ng ng class p> { ; tính>; ; c>; }; Cài đ t l p (file cpp): cài đ t phương th c cho đ i tư ng .cpp): ng Tương t cài đ t hàm, kèm tên l p toán t :: hàm, S d ng đ i tư ng t l p: p: Khai báo đ i tư ng: bi n có ki u l p ng: p Truy xu t thành ph n đ i tư ng: dùng d u “.” ho c “->” ng: Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy S d ng đ i tư ng C++ Ví d : so sánh đ i tư ng c u trúc trúc // Khai báo l p, file PhanSo.h p, class PhanSo { private: int m_tuSo; m_tuSo; int m_mauSo; m_mauSo; public: PhanSo cong(PhanSo p); cong(PhanSo }; // Cài đ t l p, file PhanSo.cpp p, PhanSo PhanSo::cong(PhanSo p) PhanSo::cong(PhanSo { // Cài đ t c ng phân s } Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy // Khai báo ki u c u trúc, file PhanSo.h trúc, struct PhanSo { int m_tuSo; m_tuSo; int m_mauSo; m_mauSo; }; // Cài đ t hàm c ng, file PhanSo.cpp ng, PhanSo cong(PhanSo p1, PhanSo p2) cong(PhanSo { // Cài đ t c ng phân s } 10 S d ng đ i tư ng C++ Ví d : so sánh đ i tư ng c u trúc trúc // S d ng đ i tư ng, file main.cpp ng, void main() { PhanSo p1; PhanSo p2; p1.cong(p2); // S d ng c u trúc, file main.cpp trúc, void main() main() { PhanSo p1; PhanSo p2; cong(p1, p2); PhanSo *p3 = new PhanSo; PhanSo; p3->cong(p1); p3- PhanSo *p3 = new PhanSo; PhanSo; cong(*p3, p1); PhanSo *p4 = new PhanSo[2]; PhanSo[2]; p[0]p[0]->cong(p[1]); PhanSo *p4 = new PhanSo[2]; PhanSo[2]; cong(p[0], p[1]); } Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy } 11 N i dung Đ i tư ng l p p S d ng đ i tư ng C++ T m v c c Bài t p p Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 12 T mv c Khái ni m t m v c: c: T m nh hư ng, ph m vi ho t đ ng: ng, ng: Bi n block khai báo báo Hàm không h n ch Thành ph n c a l p có th u ch nh nh T m nh hư ng h p, truy xu t h n ch p, B ng phân lo i t m v c: c: T mv c T m nh hư ng Ph m vi ho t đ ng private H p Bên l p public R ng Bên l n bên l p protected V a Bên l p l p k th a a Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 13 T mv c Dr Guru khuyên: khuyên: Quy t c h p đen: đen: Thu c tính có t m v c private đ h n ch truy xu t t Phương th c có t m v c public đ cung c p tính năng class PhanSo { private: int m_tuSo; m_tuSo; int m_mauSo; m_mauSo; public: PhanSo cong(PhanSo p); cong(PhanSo PhanSo rutGon(); rutGon(); }; D li u (Thu c tính) Tính (Phương th c) Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 14 T mv c Toán t :: (b n ch m): (b m): L p 5A 5B đ u có h c sinh tên Lê Phương Phương Làm đ phân bi t? t? Trư ng h p 1: đ ng l p p Trư ng h p 2: đ ng l p p L p 5A Toán t :: Dùng g i tên thành ph n c a l p t bên ngoài :: p>:: Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy L p 5B 15 T mv c Ví d : class PhanSo { private: int m_iTuSo; m_iTuSo; int m_iMauSo; m_iMauSo; public: PhanSo cong(PhanSo p) cong( { // Cài đ t bên l p p } }; Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy PhanSo PhanSo::cong(PhanSo p) PhanSo::cong( { // Cài đ t bên ngồi l p p } 16 Tóm t t Đ i tư ng l p: p: Đ i tư ng m t thành t t o nên chương trình trình Đ i tư ng ch a d li u l n x lý lý L p b n mô t c a đ i tư ng ng S d ng đ i tư ng: ng: Khai báo l p b ng t khóa “class” Gi ng s d ng c u trúc trúc T m v c: c: T m nh hư ng, ph m vi ho t đ ng ng, ng Có m c: public, private, protected c: 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 2.1: Xây d ng l p phân s cho phép th c hi n thao tác: tác: Nh p, xu t p, t L yt s ,m us Gán giá tr cho t s , m u s Ngh ch đ o, rút g n o, n C ng, tr , nhân, chia, so sánh v i phân s khác ng, nhân, chia, khác Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 18 Bài t p Bài t p 2.2: D a l p phân s xây d ng t p 2.1, vi t chương trình s p x p tăng/gi m m ng phân s tăng/ 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 2.3: Xây d ng l p đơn th c cho phép th c hi n thao tác: tác: Nh p, xu t p, t L y h s , s mũ mũ Gán giá tr cho h s , s mũ mũ Tính giá tr , đ o hàm, nguyên hàm hàm, hàm C ng, tr , nhân, chia, so sánh v i đơn th c khác b c ng, nhân, chia, c 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 2.4: Thông tin m t h c sinh bao g m: m: H tên tên Đi m văn, toán văn, toán Xây d ng l p h c sinh cho phép th c hi n thao tác: tác: Nh p, xu t p, t L y h tên, m văn, toán tên, văn, toán Gán giá tr cho h tên, m văn, m toán tên, văn, toán Tính m trung bình bình X p lo i theo tiêu chí: chí: Gi i (>= 8.0), Khá (>= 7.0) Trung bình (>= 5.0), Y u (< 5) 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 2.5: Xây d ng l p m ng s nguyên cho phép th c hi n thao tác sau: sau: Nh p, xu t m ng p, ng L y kích thư c m ng ng L y ph n t t i v trí đó Gán giá tr cho ph n t t i v trí đó Tìm ph n t m ng ng S p x p tăng, gi m tăng, m Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy 22 ... (Rau) - Lu c (Rau) - N u (Cơm) Cơm) L y d li u làm trung tâm tâm Đ i tư ng xương s ng ng - Cá.Ư p - Cá.Kho Phương pháp l p trình hư ng đ i tư ng - Nguy n Minh Huy Verb Object L t Rau Ư p Cá N u -. .. Rau Ư p Cá N u - Ư p (Cá) Cá) - Kho (Cá) Cá) Hư ng đ i tư ng (object oriented): - Rau.L t - Rau.Lu c - Cơm.N u Các bư c n u ăn Cơm Kho Cá Lu c Rau Thay đ i tư l p trình! ! Đ i tư ng l p Khái ni... trình hư ng đ i tư ng - Nguy n Minh Huy 18 Bài t p Bài t p 2.2: D a l p phân s xây d ng t p 2.1, vi t chương trình s p x p tăng/gi m m ng phân s tăng/ Phương pháp l p trình hư ng đ i tư ng -