Giáo trình Lập trình hướng đối tượng - Chương 3: Lập trình hướng đối tượng với C++
Khái niệm: Lớp đối tượng
tượng hiểu một cách đơn
giản nhất là sự tích hợp của
hai thành phần: Thành phần
dữ liệu và Thành phần xử
lý.
Cú pháp khai báo lớp
1. class CTenLop
2. {
3. // Thành phần dữ liệu.
4. // Thành phần xử lý
5. };
d Xuat(HOCSINH); 21.void XuLy(HOCSINH &); Thành phần dữ liệu Thành phần xử lý LTHĐTKhoa CNTT Chương 03 - 5 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 1. LỚP ĐỐI TƢỢNG (class) 11.class CHocSinh 12.{ 13. private: 14. char hoten[31]; 15. int toan; 16. int van; 17. float dtb; 18. public: 19. void Nhap(); 20. void Xuat(); 21. void XuLy(); 22.}; LTHĐTKhoa CNTT Chương 03 - 6 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 2. ĐỐI TƢỢNG (object) Khái niệm: Đối tƣợng là một sự thể hiện của một lớp. Trong một lớp có thể có nhiều sự thể hiện khác nhau. Nói một cách khác: có thể có nhiều đối tƣợng cùng thuộc về một lớp. Cú pháp khai báo đối tượng. 1. CTenLop ; LTHĐTKhoa CNTT Chương 03 - 7 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 2. ĐỐI TƢỢNG (object) Ví dụ 1: CHocSinh x; Trong ví dụ trên ta nói x là một đối tượng thuộc về lớp đối tượng CHocSinh. Ví dụ 2: CHocSinh a,b; CHocSinh y; Trong ví dụ trên ta nói a,b,y là ba đối tượng thuộc về lớp đối tượng CHocSinh. Nói một cách khác: Lớp đối tượng CHocSinh có ba sự thể hiện khác nhau. LTHĐTKhoa CNTT Chương 03 - 8 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 3. PHƢƠNG THỨC (method) Khái niệm: Phương thức là khả năng mà đối tượng thuộc về lớp có thể thực hiện. Cú pháp định nghĩa phương thức: 1. KDL CTenLop::PhuongThuc () 2. { 3. // Thân Phương Thúc 4. } LTHĐTKhoa CNTT Chương 03 - 9 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 3. PHƢƠNG THỨC (method) Ví dụ 1: Định nghĩa phương thức nhập của lớp CHocSinh. 1. void CHocSinh::Nhap() 2. { 3. printf(“Nhap ho ten:”); 4. gets(hoten); 5. printf(“Nhap toan:”); 6. scanf(“%d”, &toan); 7. printf(“Nhap van:”); 8. scanf(“%d”, &van); 9. } LTHĐTKhoa CNTT Chương 03 - 10 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 3. PHƢƠNG THỨC (method) Ví dụ 2: Định nghĩa phương thức XuLy của lớp CHocSinh. 1. void CHocSinh::XuLy() 2. { 3. dtb=(float)(toan+van)/2; 4. } LTHĐTKhoa CNTT Chương 03 - 11 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 3. PHƢƠNG THỨC (method) Ví dụ 3: Định nghĩa phương thức Xuat của lớp CHocSinh. 1. void CHocSinh::Xuat() 2. { 3. printf(“\nHo ten:%s”, hoten); 4. printf(“\nToan: %d”,toan); 5. printf(“\nVan: %d”,van); 6. printf(“\nDTB: %f”,dtb); 7. } LTHĐTKhoa CNTT Chương 03 - 12 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 4. ĐỐI TƢỢNG HÀNH ĐỘNG Khái niệm: Đối tượng hành động là đối tượng gọi thực hiện phương thức mà lớp đối tượng nó thuộc về cung cấp. Cú pháp 1. …TenDoiTuong.PhuongThuc()… Ví dụ 1: 1. CHocSinh hs; 2. hs.Nhap(); LTHĐTKhoa CNTT Chương 03 - 13 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 4. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 1: 1. CHocSinh hs; 2. hs.Nhap(); Trong câu lệnh thứ hai của đoạn chương trình trên ta nói: đối tƣợng hs gọi thực hiện phƣơng thức Nhập. LTHĐTKhoa CNTT Chương 03 - 14 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 4. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 2: 1. CHocSinh a,b,c; 2. a.Nhap(); 3. b.Nhap(); 4. c.Nhap(); Trong câu lệnh thứ hai của đoạn chương trình trên ta nói: đối tƣợng a gọi thực hiện phƣơng thức Nhập. …v..v.. LTHĐTKhoa CNTT Chương 03 - 15 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang hoten toan van dtb hoten toan van dtb hoten toan van dtb void Nhap() void Xuat() void XuLy() a b c 1. CHocSinh a,b,c; 2. a.Nhap(); 3. b.Nhap(); 4. c.Nhap(); LTHĐTKhoa CNTT Chương 03 - 16 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 4. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 1: Định nghĩa phương thức nhập của lớp CHocSinh. 1. void CHocSinh::Nhap() 2. { 3. printf(“Nhap ho ten:”); 4. gets(hoten); 5. printf(“Nhap toan:”); 6. scanf(“%d”, &toan); 7. printf(“Nhap van:”); 8. scanf(“%d”, &van); 9. } LTHĐTKhoa CNTT Chương 03 - 17 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 4. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 2: Định nghĩa phương thức XuLy của lớp CHocSinh. 1. void CHocSinh::XuLy() 2. { 3. dtb=(float)(toan+van)/2; 4. } LTHĐTKhoa CNTT Chương 03 - 18 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 4. ĐỐI TƢỢNG HÀNH ĐỘNG Ví dụ 3: Định nghĩa phương thức Xuat của lớp CHocSinh. 1. void CHocSinh::Xuat() 2. { 3. printf(“\nHo ten:%s”, hoten); 4. printf(“\nToan: %d”,toan); 5. printf(“\nVan: %d”,van); 6. printf(“\nDTB: %f”,dtb); 7. } LTHĐTKhoa CNTT Chương 03 - 19 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. CHƢƠNG TRÌNH ĐẦU TIÊN Bài toán: Viết chƣơng trình nhập họ tên, điểm toán, điểm văn của một học sinh. Tính điểm trung bình và xuất kết quả. Chƣơng trình LTHĐTKhoa CNTT Chương 03 - 20 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. CHƢƠNG TRÌNH ĐẦU TIÊN 11.#include 12.#include 13.class CHocSinh 14.{ 15. private: 16. char hoten[31]; 17. int toan; 18. int van; 19. float dtb; 20. public: 21. void Nhap(); 22. void Xuat(); 23. void XuLy(); 24.}; LTHĐTKhoa CNTT Chương 03 - 21 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. CHƢƠNG TRÌNH ĐẦU TIÊN 11.void main() 12.{ 13. CHocSinh hs; 14. hs.Nhap(); 15. hs.XuLy(); 16. hs.Xuat(); 17.} 18.void CHocSinh::Xuat() 19.{ 20. printf(“\nHo ten:%s”, hoten); 21. printf(“\nToan: %d”,toan); 22. printf(“\nVan: %d”,van); 23. printf(“\nDTB: %f”,dtb); 24.} LTHĐTKhoa CNTT Chương 03 - 22 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 5. CHƢƠNG TRÌNH ĐẦU TIÊN 11. void CHocSinh::Nhap() 12. { 13. printf(“Nhap ho ten:”); 14. gets(hoten); 15. printf(“Nhap toan:”); 16. scanf(“%d”, &toan); 17. printf(“Nhap van:”); 18. scanf(“%d”, &van); 19. } 20. void CHocSinh::XuLy() 21. { 22. dtb=(float)(toan+van)/2; 23. } LTHĐTKhoa CNTT Chương 03 - 23 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 6.1 Ứng dụng 1: Viết chƣơng trình nhập vào một phân số. Rút gọn phân số đó và xuất kết quả. Chƣơng trình LTHĐTKhoa CNTT Chương 03 - 24 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11.#include 12.#include 13.class CPhanSo 14.{ 15. private: 16. int tu; 17. int mau; 18. public: 19. void Nhap(); 20. void Xuat(); 21. void RutGon(); 22.}; LTHĐTKhoa CNTT Chương 03 - 25 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11.void main() 12.{ 13. CPhanSo ps; 14. ps.Nhap(); 15. ps.RutGon(); 16. ps.Xuat(); 17.} 18.void CPhanSo::Nhap() 19.{ 20. printf(“Nhap tu: ”); 21. scanf(“%d”,&tu); 22. printf(“Nhap mau: ”); 23. scanf(“%d”,&mau); 24.} LTHĐTKhoa CNTT Chương 03 - 26 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11. void CPhanSo::RutGon() 12. { 13. 14. 15. 16. 17. 18. 19. } 20. void CPhanSo::Xuat() 21. { 22. printf(“%d/%d”,tu,mau); 23. } LTHĐTKhoa CNTT Chương 03 - 27 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 6.2 Ứng dụng 2: Viết chƣơng trình nhập vào tọa độ 2 điểm trong mặt phẳng Oxy. Tính khoảng cách giữa chúng và xuất kết quả. Chƣơng trình LTHĐTKhoa CNTT Chương 03 - 28 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11.#include 12.#include 13.#include 14.class CDiem 15.{ 16. private: 17. float x; 18. float y; 19. public: 20. void Nhap(); 21. void Xuat(); 22. float KhoangCach(CDiem); 23.}; LTHĐTKhoa CNTT Chương 03 - 29 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11.void main() 12.{ 13. CDiem A,B; 14. A.Nhap(); 15. B.Nhap(); 16. float kq = A.KhoangCach(B); 17. A.Xuat(); 18. B.Xuat(); 19. printf(“\n Khoang cach…: %f”, kq); 20.} LTHĐTKhoa CNTT Chương 03 - 30 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11. void CDiem::Nhap() 12. { 13. float temp; 14. printf(“Nhap x:”); 15. scanf(“%f”,&temp); 16. x = temp; 17. printf(“Nhap y:”); 18. scanf(“%f”,&temp); 19. y = temp; 20. } 21. void CDiem::Xuat() 22. { 23. printf(“(%f,%f)”,x,y); 24. } LTHĐTKhoa CNTT Chương 03 - 31 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11. float CDiem::KhoangCach(CDiem P) 12. { 13. return sqrt((x-P.x)*(x-P.x) 14. +(y-P.y)*(y-P.y)); 15. } LTHĐTKhoa CNTT Chương 03 - 32 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11.void main() 12.{ 13. CDiem A,B; 14. A.Nhap(); 15. B.Nhap(); 16. float kq = A.KhoangCach(B); 17. A.Xuat(); 18. B.Xuat(); 19. printf(“\n Khoang cach…: %f”, kq); 20.} LTHĐTKhoa CNTT Chương 03 - 33 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11.#include 12.#include 13.#include 14.class CDiem 15.{ 16. private: 17. float x; 18. float y; 19. public: 20. void Nhap(); 21. void Xuat(); 22. float KhoangCach(CDiem); 23.}; LTHĐTKhoa CNTT Chương 03 - 34 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11. float CDiem::KhoangCach(CDiem P) 12. { 13. return sqrt((x-P.x)*(x-P.x) 14. +(y-P.y)*(y-P.y)); 15. } LTHĐTKhoa CNTT Chương 03 - 35 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11. float CDiem::KhoangCach(CDiem P) 12. { 13. return sqrt((x-P.x)*(x-P.x) 14. +(y-P.y)*(y-P.y)); 15. } LTHĐTKhoa CNTT Chương 03 - 36 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11. float CDiem::KhoangCach(CDiem P) 12. { 13. return sqrt((x-P.x)*(x-P.x) 14. +(y-P.y)*(y-P.y)); 15. } LTHĐTKhoa CNTT Chương 03 - 37 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 6. ỨNG DỤNG 11. float CDiem::KhoangCach(CDiem P) 12. { 13. return sqrt((x-P.x)*(x-P.x) 14. +(y-P.y)*(y-P.y)); 15. } float kq = A.KhoangCach(B); float kq = B.KhoangCach(A); LTHĐTKhoa CNTT Chương 03 - 38 GV. Nguyễn Sơn Hoàng Quốc ThS. Nguyễn Tấn Trần Minh Khang 7. BÀI TẬP VỀ NHÀ Làm tất cả các bài tập của chương 01 bằng phương pháp lập trình hướng đối tượng (9 bài).
File đính kèm:
- Giáo trình Lập trình hướng đối tượng - Chương 3 Lập trình hướng đối tượng với C++.pdf