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
• 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 đủ
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:
bai_giang_phuong_phap_lap_trinh_huong_doi_tuong_tuan_2_lop_v.pdf
OOP-W2-Class_Object-Demo.zip

