Bài giảng Phương pháp lập trình hướng đối tượng - Tuần 2: Lớp và đối tượng - Nguyễn Lê Hoàng Dũng

LỚP VÀ ĐỐI TƯỢNG  
Nguyễn Lê Hoàng Dũng  
1
• KHÁI NIỆM LỚP VÀ ĐỐI  
TƯỢNG  
• TẦM VỰC  
NỘI DUNG  
• SỰ CHE CHẮN DỮ LIỆU VÀ  
PHƯƠNG THỨC  
• TẠO LẬP, SỬ DỤNG VÀ HỦY  
ĐỐI TƯỢNG  
• MỘT VÀI VÍ DỤ MINH HỌA  
2
ꢀ Phương pháp lập trình hướng đối tượng  
• KHÁI NIỆM LỚP VÀ ĐỐI  
TƯỢNG  
• TẦM VỰC  
NỘI DUNG  
• SỰ CHE CHẮN DỮ LIỆU VÀ  
PHƯƠNG THỨC  
• TẠO LẬP, SỬ DỤNG VÀ HỦY  
ĐỐI TƯỢNG  
• MỘT VÀI VÍ DỤ MINH HỌA  
3
ꢀ Phương pháp lập trình hướng đối tượng  
KHÁI NIỆM LỚP VÀ ĐỐI TƯỢNG  
• Lớp (class) hay còn gọi là lớp đối tượng được  
dùng để mô hình hóa một nhóm các thực thể  
(entity) hay đối tượng (object) cùng loại trong  
thế giới thực.  
• Một đối tượng thuộc về một lớp là một thể hiện  
(instance) hay một phần tử điển hình của lớp  
đó.  
• Các đối tượng thuộc về một lớp sẽ có cùng  
một cách ứng xử (behaviour) được thiết lập  
nhờ vào những phương thức (method) của  
lớp đó.  
4
ꢀ Phương pháp lập trình hướng đối tượng  
KHÁI NIỆM LỚP VÀ ĐỐI TƯỢNG  
Lecturer#1:  
NickName: Hạnh.  
Age: 30.  
Mô hình hóa để nhóm  
các thực thể giảng viên  
Hair Color: Black.  
Eye Color: Black.  
Job: Lecturer.  
Teach (web)  
Lecturer:  
Nickname.  
Age.  
Hair Color.  
Eye Color.  
Job.  
Lecturer#2:  
NickName: Phương.  
Age: 29.  
Teach (a course)  
Hair Color: White.  
Eye Color: Blue.  
Job: Lecturer.  
Teach (OOP)  
5
ꢀ Phương pháp lập trình hướng đối tượng  
KHÁI NIỆM LỚP VÀ ĐỐI TƯỢNG  
•
•
Tên lớp (class name): tên duy nhất để  
phân biệt các lớp trong cùng phạm vi  
Thuộc tính (attributes) hay thành  
phần dữ liệu (data members): lưu dữ  
liệu cho mỗi đối tượng của lớp đang  
mô tả  
Lecturer  
Nickname.  
Age.  
Hair Color.  
Eye Color.  
Job.  
•
Các phương thức của lớp (method  
hay functional members): các hàm  
xử lý của lớp nhằm tác động lên chính  
các đối tượng thuộc lớp này hoặc  
thực hiện các xử lý khác  
Teach (a  
course)  
6
ꢀ Phương pháp lập trình hướng đối tượng  
VÍ DỤ CÁC THÀNH PHẦN TRONG  
LỚP CLECTURER  
• Tên lớp: CLecturer  
• Các thuộc tính:  
• Nickname  
• Age  
• Hair Color  
• Eye Color  
• Job  
• Các phương thức:  
• Khởi tạo thông tin (nickname, age,…)  
• Teach  
7
ꢀ Phương pháp lập trình hướng đối tượng  
VÍ DỤ CÁC THÀNH PHẦN TRONG  
LỚP CPOINT2D  
• Tên lớp: CPoint2D  
• Các thuộc tính:  
• Hoành độ  
• Tung độ  
• Các phương thức:  
• Khởi tạo thông tin (hoành độ, tung độ)  
• Di chuyển đến tọa độ cho trước  
• Tính khoảng cách đến 1 điểm khác  
8
ꢀ Phương pháp lập trình hướng đối tượng  
KHAI BÁO VÀ ĐỊNH NGHĨA LỚP  
• Cú pháp khai báo lớp  
class ClassName  
.h  
{
private:  
//Các thuộc tính và phương thức private  
public:  
//Các thuộc tính và phương thức public  
};  
•
Cú pháp định nghĩa phương thức của lớp  
(Sử dụng toán tử phân giải phạm vi ::)  
type-name ClassName::MethodName()  
.cpp  
{
/* Các câu lệnh ... */  
}
9
ꢀ Phương pháp lập trình hướng đối tượng  
KHAI BÁO VÀ ĐỊNH NGHĨA LỚP  
• Các thuộc tính và phương thức có thể khai  
báo thành nhiều nhóm xem kẽ nhau giữa  
private và public (ý nghĩa!)  
• Mặc định là private (nếu nằm trên cùng của  
khai báo thì không cần ghi từ khóa private).  
class ClassName  
{
// Các thuộc tính và phương thức riêng cua lớp  
public:  
// Các thuộc tính và phương thức chung cua lớp  
private:  
// Các thuộc tính và phương thức riêng khác cua lớp  
.h  
̉
̉
̉
public:  
̉
// Các thuộc tính và phương thức chung khác cua lớp  
};  
10  
ꢀ Phương pháp lập trình hướng đối tượng  
KHAI BÁO VÀ ĐỊNH NGHĨA LỚP  
• Có thể thực hiện bằng một trong hai cách sau:  
• Khai báo lớp và cài đặt lớp trong cùng một  
tập tin mã nguồn .cpp  
Khai báo lớp trong tập tin tiêu đề .h (header)  
nhằm mô tả giao tiếp lập trình (programming  
interface) và cài đặt lớp trong tập tin mã  
nguồn .cpp (nên sử dụng cách này)  
•
11  
ꢀ Phương pháp lập trình hướng đối tượng  
DEMO  
KHAI BÁO VÀ ĐỊNH NGHĨA LỚP  
12  
KHAI BÁO VÀ ĐỊNH NGHĨA LỚP  
CPOINT2D  
• Gộp chung khai báo và định nghĩa lớp  
#include <stdio.h>  
.h  
#include <math.h>  
class CPoint2D  
{
float _hoanhDo, _tungDo; //Mặc định là private  
public:  
void KhoiTao(float hoanhDo, float tungDo){  
_hoanhDo = hoanhDo; _tungDo = tungDo; //nên code 2 dòng  
}
void DiChuyen(float hoanhDoMoi, float tungDoMoi){  
_hoanhDo=hoanhDoMoi; _tungDo=tungDoMoi;//nên code 2 dong  
}
float khoangCach(CPoint2D diemThuHai){  
float khoangCach = sqrtf((_hoanhDo-diemThuHai._hoanhDo)*  
(_hoanhDo-diemThuHai._hoanhDo) +  
(_tungDo-diemThuHai._tungDo)*  
(_tungDo-diemThuHai._tungDo));  
return khoangCach;  
}
};  
13  
ꢀ Phương pháp lập trình hướng đối tượng  
KHAI BÁO VÀ ĐỊNH NGHĨA LỚP  
CPOINT2D  
• Khai báo và định nghĩa lớp được tách riêng  
• Khai báo lớp CPoint2D  
#ifndef __OOP_W2__CPoint2D__  
#define __OOP_W2__CPoint2D__  
.h  
̉
̀
̉
// Có thê đặt #pragma once ơ đâu  
́
// để thay thê #ifndef #define #endif  
class CPoint2D  
{
float _hoanhDo, _tungDo; //Mặc định là private  
public:  
void KhoiTao(float hoanhDo, float tungDo);  
void DiChuyen(float hoanhDoMoi, float tungDoMoi);  
float khoangCach(CPoint2D diemThuHai);  
};  
#endif  
14  
ꢀ Phương pháp lập trình hướng đối tượng  
KHAI BÁO VÀ ĐỊNH NGHĨA LỚP  
CPOINT2D  
• Định nghĩa lớp  
#include "CPoint2D.h"  
#include <stdio.h>  
#include <math.h>  
.cpp  
void CPoint2D::KhoiTao(float hoanhDo, float tungDo){  
_hoanhDo = hoanhDo;  
_tungDo = tungDo;  
}
void CPoint2D::DiChuyen(float hoanhDoMoi, float tungDoMoi){  
_hoanhDo = hoanhDoMoi;  
_tungDo = tungDoMoi;  
}
float CPoint2D::khoangCach(CPoint2D diemThuHai){  
float khoangCach = sqrtf((_hoanhDo-diemThuHai._hoanhDo)*  
(_hoanhDo-diemThuHai._hoanhDo) +  
(_tungDo-diemThuHai._tungDo)*  
(_tungDo-diemThuHai._tungDo));  
return khoangCach;  
}
15  
ꢀ Phương pháp lập trình hướng đối tượng  
• KHÁI NIỆM LỚP VÀ ĐỐI  
TƯỢNG  
• TẦM VỰC  
NỘI DUNG  
• SỰ CHE CHẮN DỮ LIỆU VÀ  
PHƯƠNG THỨC  
• TẠO LẬP, SỬ DỤNG VÀ HỦY  
ĐỐI TƯỢNG  
• MỘT VÀI VÍ DỤ MINH HỌA  
16  
ꢀ Phương pháp lập trình hướng đối tượng  
TẦM VỰC  
• Khái nhiệm tầm vực:  
• Tầm ảnh hương, phạm vi truy xuất của  
thuộc tính và phương thức trong lớp  
• Tầm ảnh hưởng càng hẹp thì việc truy xuất  
càng hạn chế  
• Phân loại tầm vực:  
Tầm vực Tầm ảnh hưởng  
Phạm vi truy xuất  
Bên trong lớp  
private  
Hẹp  
public  
Rộng  
Vừa  
Bên trong lẫn bên ngoài lớp  
Bên trong lớp và lớp kế thừa  
protected  
17  
ꢀ Phương pháp lập trình hướng đối tượng  
TẦM VỰC  
• Ví dụ:  
class CTamVuc{  
.h  
int _thuocTinhPrivate;  
void phuongThucPrivate()  
{ cout << "Phương thức private" << endl; }  
public:  
int _thuocTinhPublic;  
void phuongThucPublic()  
{ cout << "Phương thức public" << endl; }  
};  
#include <CTamVuc.h>  
.cpp  
int main(int argc, const char * argv[]) {  
CTamVuc visiTest;  
visiTest._thuocTinhPrivate = 2912; //Lỗi!!!  
visiTest._thuocTinhPublic = 1706;  
visiTest.phuongThucPrivate(); //Lỗi!!!  
visiTest.phuongThucPublic();  
return 0;  
}
18  
ꢀ Phương pháp lập trình hướng đối tượng  
CON TRỎ THIS  
• Mỗi lớp đều có con trỏ this.  
• Đại diện cho đối tượng đang gọi phương thức.  
• Hữu dụng trong một số trường hợp (?)  
19  
ꢀ Phương pháp lập trình hướng đối tượng  
CON TRỎ THIS  
• Ví dụ:  
class CPoint2D  
{
.h  
float _hoanhDo, _tungDo; //Mặc định là private  
public:  
void KhoiTao(float hoanhDo, float tungDo){  
this->_hoanhDo = hoanhDo;  
this->_tungDo = tungDo;  
}
void Xuat(){  
cout<<“("<<_hoanhDo<<";"<<_tungDo<<")";  
}
//các phương thức khác  
};  
#include "CPoint2D.h"  
.cpp  
int main(int argc, const char * argv[]) {  
CPoint2D A;  
A.KhoiTao(5, 5);  
A.Xuat(); // (5,5)  
return 0;  
}
20  
ꢀ Phương pháp lập trình hướng đối tượng  
Tải về để xem bản đầy đủ
pdf 42 trang myanh 14160 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Phương pháp lập trình hướng đối tượng - Tuần 2: Lớp và đối tượng - Nguyễn Lê Hoàng Dũng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_phuong_phap_lap_trinh_huong_doi_tuong_tuan_2_lop_v.pdf
  • zipOOP-W2-Class_Object-Demo.zip