Chương 3: Lớp và đối tượng | Bài giảng Lập trình hướng đối tượng

Một lớp bao gồm các thành phần dữ liệu (thuộc tính) và các phương thức (hàm thành phần).Lớp trong C++ thực chất là một kiểu dữ liệu do người sử dụng định nghĩa. Bài giảng gtiúp bạn tham khảo, củng cố kiến thức và ôn tập đạt kết quả cao.

LỚP VÀ ĐI TƯỢNG
Khoa Công nghệ phần mềm
Nội dung
v pháp khai báo lớp
vĐịnh nghĩa hàm thành phần của lớp
vKhai báo tạo lập đối tượng
vPhạm vi truy xuất
vPhương thức thiết lập Constructor
vPhương thức hủy bỏ Destructor
vPhương thức Truy vấn, Cập nhật
vThành viên tĩnh static member
20/09/2020 Lập trình hướng đối tượng 2
Lớp trong C++
vMột lớp bao gồm các thành phần dữ liệu (thuộc
tính)
các phương thức (hàm thành phần).
vLớp trong C++ thực chất một kiểu dữ liệu do
người sử dụng định nghĩa.
vTrong C++, dùng từ khóa class để chỉ điểm bắt
đầu của một lớp sẽ được cài đặt.
20/09/2020 Lập trình hướng đối tượng 3
Lớp đối tượng
vLớp một tả trừu tượng của nhóm các đối
tượng cùng bản chất
, ngược lại mỗi một đối
tượng một
thể hiện cụ thể cho những tả
trừu tượng đó.
20/09/2020 Lập trình hướng đối tượng 4
Cú pháp khai báo lớp
class <tên_lớp>
{
//Thành phần dữ liệu
//Thành phần xử lý
};
20/09/2020 Lập trình hướng đối tượng 5
Cú pháp khai báo lớp
class <tên_lớp> {
private:
<khai báo thành phần riêng trong từng đối tượng>
protected:
<khai báo thành phần riêng trong từng đối tượng,
có thể truy cập từ lớp dẫn xuất >
public:
<khai báo thành phần công cộng>
};
20/09/2020 Lập trình hướng đối tượng 6
Cú pháp khai báo lớp
20/09/2020 Lập trình hướng đối tượng 7
class class_name
{
Access_Control_label:
members;
(data & code)
Access_Control_label :
members;
(data & code)
};
class Rectangle
{
private:
int width;
int length;
public:
void set(int w, int l);
int area();
};
Header
Các thành phần của lớp
vThuộc tính: Các thuộc tính được khai báo
giống như khai báo biến trong C
vPhương thức: Các phương thức được khai
báo giống như khai báo hàm trong C.
hai cách định nghĩa thi hành của một
phương thức
vĐịnh nghĩa thi hành trong lớp
vĐịnh nghĩa thi hành ngoài lớp
20/09/2020 Lập trình hướng đối tượng 8
Cơ chế tạo lập các lớp
vXác định các thuộc tính (dữ liệu)
§ Những ta biết về đối tượng giống như
một struct
vXác định các phương thức (hành vi)
§ Những đối tượng th làm
vXác định các quyền truy xuất
20/09/2020 Lập trình hướng đối tượng 9
Định nghĩa hàm thành phần
v pháp định nghĩa các hàm thành phần
bên ngoài khai báo lớp:
<tên kiểu giá trị trả v> <tên lớp>::<tên hàm> (<danh
sách tham số>)
{
<nội dung >
}
Ví dụ:
void point::display() {
//……..
}
20/09/2020 Lập trình hướng đối tượng 10
Định nghĩa hàm thành phần
20/09/2020 Lập trình hướng đối tượng 11
class Rectangle{
private:
int width, length;
public:
void set (int w, int l);
int area() { return width*length; }
};
void Rectangle :: set (int w, int l)
{
width = w;
length = l;
}
inline
class name
member function name
scope operator
Ví dụ lớp Time
20/09/2020 Lập trình hướng đối tượng 12
class Time {
public:
void Set (int hours , int minutes , int seconds);
void Increment ( );
void Write ( ) const;
Time (
int initHrs, int initMins, int initSecs ); //constructor
Time ( ); //default constructor
private:
int hrs;
int mins;
int secs;
} ;
Ví dụ lớp Time
20/09/2020 Lập trình hướng đối tượng 13
Private data:
hrs
mins
secs
Set
Increment
Write
Time
Time
Time class
Khai báo và tạo lập đối tượng
vKhai báo tạo đốiợng:
<tên lớp> <tên đối tượng>;
vGọi hàm thành phần của lớp
<tên đối tượng>.<tên hàm thành phần> (<danh
sách các tham số nếu có>);
<tên con trỏ đối tượng>à<tên hàm thành phần>
(<danh sách các tham số nếu có>);
20/09/2020 Lập trình hướng đối tượng 14
Khai báo và tạo lập đối tượng
20/09/2020 Lập trình hướng đối tượng 15
class Rectangle
{
private:
int width;
int length;
public:
void set(int w, int l);
int area();
};
void main()
{
Rectangle r1;
r1.set(5, 8);
}
r1 is statically allocated
width
length
r1
width = 5
length = 8
Khai báo và tạo lập đối tượng
20/09/2020 Lập trình hướng đối tượng 16
class Rectangle
{
private:
int width;
int length;
public:
void set(int w, int l);
int area();
};
main()
{
Rectangle r1;
r1.set(5, 8);
Rectangle *r2;
r2 = &r1;
r2->set(8,10);
}
r2 is a pointer to a Rectangle object
width
length
r1
width = 5
length = 8
5000
???
r2
6000
5000
width = 8
length = 10
//dot notation
//arrow notation
Khai báo và tạo lập đối tượng
20/09/2020 Lập trình hướng đối tượng 17
class Rectangle
{
private:
int width;
int length;
public:
void set(int w, int l);
int area();
};
main()
{
Rectangle *r3;
r3 = new Rectangle();
r3->set(80,100);
delete r3;
r3 = NULL;
}
r3 is dynamically allocated
???
r3
6000
NULL
//arrow notation
Ví dụ
vXây dựng lớp Điểm (Point) trong hình học 2D
§ Thuộc tính
Tung đ
Hoành độ
§ Thao tác (phương thức)
Khởi tạo
Di chuyển
In ra màn hình
20/09/2020 Lập trình hướng đối tượng 18
Ví dụ
20/09/2020 Lập trình hướng đối tượng 19
/*point.cpp*/
#include <iostream>
using namespace std;
class
point {
/*khai báo các thành phần dữ liệu riêng*/
private:
int
x,y;
/*khai báo các hàm thành phần công cộng*/
public:
void
init(int ox, int oy);
void move(int dx, int dy);
void display();
};
Ví dụ
20/09/2020 Lập trình hướng đối tượng 20
void point::init(int ox, int oy) {
cout<<"Ham thanh phan init\n";
x = ox; y = oy;
/*x,y là các thành phần của đối tượng gọi hàm thành phần*/
}
void point::move(int dx, int dy) {
cout<<"Ham thanh phan move\n";
x += dx; y += dy;
}
void point::display() {
cout<<"Ham thanh phan display\n";
cout<<"Toa do: "<<x<<" "<<y<<"\n";
}
| 1/66

Preview text:

LỚP VÀ ĐỐI TƯỢNG
Khoa Công nghệ phần mềm Nội dung vCú pháp khai báo lớp
vĐịnh nghĩa hàm thành phần của lớp
vKhai báo và tạo lập đối tượng vPhạm vi truy xuất
vPhương thức thiết lập – Constructor
vPhương thức hủy bỏ – Destructor
vPhương thức Truy vấn, Cập nhật
vThành viên tĩnh – static member 20/09/2020
Lập trình hướng đối tượng 2 Lớp trong C++
vMột lớp bao gồm các thành phần dữ liệu (thuộc
tính) và các phương thức (hàm thành phần).
vLớp trong C++ thực chất là một kiểu dữ liệu do
người sử dụng định nghĩa.
vTrong C++, dùng từ khóa class để chỉ điểm bắt
đầu của một lớp sẽ được cài đặt. 20/09/2020
Lập trình hướng đối tượng 3 Lớp đối tượng
vLớp là một mô tả trừu tượng của nhóm các đối
tượng cùng bản chất, ngược lại mỗi một đối
tượng là một thể hiện cụ thể cho những mô tả trừu tượng đó. 20/09/2020
Lập trình hướng đối tượng 4
Cú pháp khai báo lớp class { //Thành phần dữ liệu //Thành phần xử lý }; 20/09/2020
Lập trình hướng đối tượng 5
Cú pháp khai báo lớp class { private: protected:
có thể truy cập từ lớp dẫn xuất > public: }; 20/09/2020
Lập trình hướng đối tượng 6
Cú pháp khai báo lớp Header class Rectangle class class_name { { private: Access_Control_label: int width; int length; members; public: (data & code) void set(int w, int l); Access_Control_label : int area(); members; }; (data & code) }; 20/09/2020
Lập trình hướng đối tượng 7
Các thành phần của lớp
vThuộc tính: Các thuộc tính được khai báo
giống như khai báo biến trong C
vPhương thức: Các phương thức được khai
báo giống như khai báo hàm trong C. Có
hai cách định nghĩa thi hành của một phương thức
vĐịnh nghĩa thi hành trong lớp
vĐịnh nghĩa thi hành ngoài lớp 20/09/2020
Lập trình hướng đối tượng 8
Cơ chế tạo lập các lớp
vXác định các thuộc tính (dữ liệu)
§ Những gì mà ta biết về đối tượng – giống như một struct
vXác định các phương thức (hành vi)
§ Những gì mà đối tượng có thể làm
vXác định các quyền truy xuất 20/09/2020
Lập trình hướng đối tượng 9
Định nghĩa hàm thành phần
vCú pháp định nghĩa các hàm thành phần ở bên ngoài khai báo lớp: :: (sách tham số>) { } Ví dụ: void point::display() { //…….. } 20/09/2020
Lập trình hướng đối tượng 10
Định nghĩa hàm thành phần class Rectangle{ private: int width, length; public: class name void set (int w, int l);
int area() { return width*length; }
member function name };
void Rectangle :: set (int w, int l) { inline width = w; length = l; scope operator } 20/09/2020
Lập trình hướng đối tượng 11 Ví dụ lớp Time class Time { public:
void Set (int hours , int minutes , int seconds); void Increment ( ); void Write ( ) const;
Time (int initHrs, int initMins, int initSecs ); //constructor
Time ( );
//default constructor private: int hrs; int mins; int secs; } ; 20/09/2020
Lập trình hướng đối tượng 12 Ví dụ lớp Time Time class Set Private data: Increment hrs Write mins Time secs Time 20/09/2020
Lập trình hướng đối tượng 13
Khai báo và tạo lập đối tượng
vKhai báo và tạo đối tượng: ;
vGọi hàm thành phần của lớp
. (sách các tham số nếu có>); à (); 20/09/2020
Lập trình hướng đối tượng 14
Khai báo và tạo lập đối tượng class Rectangle
r1 is statically allocated { void main() private: { Rectangle r1; int width; int length; r1.set(5, 8); } public: void set(int w, int l); r1 int area(); width = 5 length = 8 }; 20/09/2020
Lập trình hướng đối tượng 15
Khai báo và tạo lập đối tượng class Rectangle
r2 is a pointer to a Rectangle object { main() private: { Rectangle r1; int width; r1.set(5, 8); //dot notation int length; Rectangle *r2; r2 = &r1; public: r2->set(8,10); //arrow notation void set(int w, int l); } int area(); 5000 r1 r2 }; width = 5 8 6000 length = 8 10 ??? 5000 20/09/2020
Lập trình hướng đối tượng 16
Khai báo và tạo lập đối tượng class Rectangle
r3 is dynamically allocated { main() { private: Rectangle *r3; int width; r3 = new Rectangle(); int length;
r3->set(80,100); //arrow notation public: delete r3; r3 = NULL; void set(int w, int l); } int area(); r3 }; 6000 ??? NULL 20/09/2020
Lập trình hướng đối tượng 17 Ví dụ
vXây dựng lớp Điểm (Point) trong hình học 2D § Thuộc tính • Tung độ • Hoành độ § Thao tác (phương thức) • Khởi tạo • Di chuyển • In ra màn hình • … 20/09/2020
Lập trình hướng đối tượng 18 Ví dụ /*point.cpp*/ #include using namespace std; class point {
/*khai báo các thành phần dữ liệu riêng*/ private: int x,y;
/*khai báo các hàm thành phần công cộng*/ public: void init(int ox, int oy); void move(int dx, int dy); void display(); }; 20/09/2020
Lập trình hướng đối tượng 19 Ví dụ
void point::init(int ox, int oy) {
cout<<"Ham thanh phan init\n"; x = ox; y = oy;
/*x,y là các thành phần của đối tượng gọi hàm thành phần*/ }
void point::move(int dx, int dy) {
cout<<"Ham thanh phan move\n"; x += dx; y += dy; } void point::display() {
cout<<"Ham thanh phan display\n"; cout<<"Toa do: "<} 20/09/2020
Lập trình hướng đối tượng 20