You are on page 1of 23

KHOA CÔNG NGHỆ THÔNG TIN

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG


(Programming Techniques)

CHƯƠNG 6. LỚP VÀ ĐỐI TƯỢNG (phần 1)


GIẢNG VIÊN: ThS. Võ Anh Tiến

HỌC KỲ II – NĂM HỌC 2023-2024

KHÓA 29
01. Khái niệm
02. Tạo lớp

NỘI DUNG 03. Khai báo và sử dụng đối tượng


04. Bài tập
05. Tổng kết bài học phần 1
1. Tổng quan
 Python là một ngôn ngữ lập trình hướng thủ tục (Procedural-oriented),
đồng thời cũng là ngôn ngữ lập trình hướng đối tượng (Object Oriented).

 Hướng thủ tục: Thể hiện ở việc sử dụng định nghĩa các hàm, và các
hàm này có thể sử dụng tại các module khác trong chương trình Python.

 Hướng đối tượng: Thể hiện ở việc sử dụng lớp (class). Có thể định
nghĩa một class, class là một nguyên mẫu (prototype) để tạo ra các đối
tượng (object/instance).

3
KHOA CÔNG NGHỆ THÔNG TIN
Đặt vấn đề
 Giả sử: Khi bạn muốn đăng ký khóa học Lập trình tại 1 Trung Tâm
ABC. Việc đầu tiên là bạn nhận 1 tờ khai thông tin theo một khuôn mẫu
cho trước. Tại sao lại như vậy? Tại sao trung tâm không đưa tờ giấy
trắng và yêu cầu bạn cung cấp thông tin. Rõ rang là họ muốn thông tin
được tổ chức, định dạng theo cùng một mẫu. Mẫu này gồm những thông
tin đã được chuẩn hóa. Giúp mọi việc dễ dàng hơn cho trung tâm và học
viên khi cung cấp và lưu trữ

4
KHOA CÔNG NGHỆ THÔNG TIN
2. Định nghĩa lớp trong Python
 Để định nghĩa một lớp trong Python chúng ta sử dụng từ khoá
class theo cú pháp sau:

class <tên_lớp>([tên_lớp_cha]):

[Chuỗi mô tả về lớp -docstring]

[Khai báo các thành phần dữ liệu chung của lớp]

Định nghĩa phương thức khởi tạo của lớp

Định nghĩa các hàm thành phần của lớp


5
KHOA CÔNG NGHỆ THÔNG TIN
2. Tạo lớp
 Trong đó:
 <tên lớp>: Là một chuỗi biểu diễn tên của một lớp do người
dùng đặt theo quy tắc đặt tên trong Python. Chúng ta sẽ tương
tác với các đối tượng sinh ra từ lớp bằng cách sử dụng tên này.

 docstrings: mô tả ngắn gọn về lớp, mặc dù là không bắt buộc.

 Các câu lệnh để định nghĩa các thuộc tính và hành vi (phương
thức) và phương thức khởi tạo ( Constructor).
6
KHOA CÔNG NGHỆ THÔNG TIN
2. Tạo lớp

 Ví dụ 1: class MyClass:
"Khởi tạo class cơ bản"
a = 10
str = "Tôi là class đầu tiên!"

 Ví dụ trên cho thấy rằng: Tạo class phải tuân thủ quy tắc trong
Python, phải thụt lề đối với các thành phần con trong class.

7
KHOA CÔNG NGHỆ THÔNG TIN
2.1. Thuộc tính

 Là thành viên của lớp.

 Ví dụ: thuộc tính của một lớp Hình chữ nhật là


Chiều rộng và Chiều cao.

 Truy cập vào thuộc tính của lớp theo cú pháp:

<Tên đối tượng>.<tên thuộc tính>


8
KHOA CÔNG NGHỆ THÔNG TIN
2.2. Getter/Setter
• Getter là phương thức dùng để lấy dữ liệu thuộc tính
của một lớp. Còn Setter là phương thức dùng để thiết
lập giá trị cho thuộc tính.
• Thực tế bạn có thể truy cập trực tiếp đến thuộc tính
bằng cách khai báo cho nó là public, sau đó gọi đến
một cách bình thường.
• Tuy nhiên, việc cho phép bên ngoài truy xuất đến dữ
liệu nhạy cảm như vậy sẽ không tốt. Vì vậy giải pháp
là tạo ra những hàm hỗ trợ việc xử lý truy cập đến
những thuộc tính đó, và ta gọi nó là setter và getter.
9
KHOA CÔNG NGHỆ THÔNG TIN
2.2. Phương thức

 Phương thức của lớp cũng giống như một hàm thông
thường, nhưng ở đây nó là một hàm của class, để sử
dụng cần phải gọi thông qua đối tượng của class.

 Tham số đầu tiên của phương thức luôn là self ( sefl từ


khóa xác định chính class đó).

10
KHOA CÔNG NGHỆ THÔNG TIN
2.2. Phương thức
 Cú pháp:

 Trong đó:

 <tên hàm>: Tên của hàm do người dùng đặt theo quy tắc đặt tên, chúng ta nên đặt tên hàm để
gợi nhớ đến nhiệm vụ hàm.

 self: Là từ khóa chỉ định hàm thuộc lớp hiện tại chúng ta đang xét.

 <danh sách tham số>: Là các tham số truyền vào làm giá trị đầu vào cho hàm giải quyết công
việc, nếu có nhiều tham số thì các tham số cách nhau bởi dấu phẩy dưới.

 <khối lệnh>: Gồm định nghĩa một hoặc các lệnh trong thân hàm, nhằm thực hiện một công việc
nào đó..

 <giá trị tv>: Là giá trị trả về của hàm sau khi hoàn thành công việc nếu có lệnh returrn.
11
KHOA CÔNG NGHỆ THÔNG TIN
2.3. Constructor
 Phương thức khởi tạo (Constructor) là một phương thức đặc biệt của lớp
(class), nó luôn có tên là __init__. Lưu ý rằng đó dấu gạch dưới kép (__)
 Tham số đầu tiên của constructor luôn là self (sefl từ khóa xác định chính
class đó).
 Constructor được sử dụng để tạo ra một đối tượng.
 Constructor gán các giá trị từ tham số vào các thuộc tính của đối tượng sẽ
được tạo ra.
 Trong một class chỉ định nghĩa một phương thức khởi tạo (constructor).
 Nếu class không được định nghĩa constructor, Python mặc định coi rằng
nó thừa kế từ constructor của lớp cha.

12
KHOA CÔNG NGHỆ THÔNG TIN
2.3. Constructor
Cú pháp:

Trong đó:
 self: Từ khoá self được dùng để chỉ đây là một thuộc tính của
đối tượng.
 thuộc tính: chính là tên của thuộc tính đối tượng của lớp.
 tham số: Là các tham số truyền vào chính là các giá trị cho
hàm.
13
KHOA CÔNG NGHỆ THÔNG TIN
2.3. Constructor
 Ví dụ 2: Tạo module rectangle.py và Xây dựng class Rectangle chứa
Constructor với 2 thuộc tính width, height và các phương thức
getWidth, getHeight, getArea.

14
KHOA CÔNG NGHỆ THÔNG TIN
2.4. Tham số mặc định trong Constructor
 Python chỉ có duy nhất 1 Constructor và cho phép gán giá trị mặc
định cho tham số.
 Ví dụ: Tạo module tên hocsinh.py và viết chương trình như sau:

15
KHOA CÔNG NGHỆ THÔNG TIN
3. Khai báo và sử dụng đối tượng
 Để truy cập đến các thành phần trong một lớp, phải khai báo một
đối tượng của lớp.
 Cú pháp tạo đối tượng của lớp như sau:
<tên_biến_đối_tượng> = <tên_lớp>([danh_sách_đối_số])
 Cú pháp truy cập đến thuộc tính đối tượng:
<tên_biến_đối tượng>.<tên thuộc tính>
Cú pháp gọi phương thức của lớp:
<tên biến đối tượng>.<tên phương thức>([danh sách tham số))

16
KHOA CÔNG NGHỆ THÔNG TIN
3. Khai báo và sử dụng đối tượng
 Ví dụ 4: Từ ví dụ 1, chúng ta khai báo và sử dụng đối tượng để truy
cập đến các thành phần của lớp như sau:

17
KHOA CÔNG NGHỆ THÔNG TIN
3. Khai báo và sử dụng đối tượng
 Ví dụ 5: Từ ví dụ 2, chúng ta khai báo và sử dụng đối tượng để truy
cập đến các thành phần của lớp như sau:

18
KHOA CÔNG NGHỆ THÔNG TIN
3. Khai báo và sử dụng đối tượng
 Ví dụ 6: Từ ví dụ 3, chúng ta khai báo và sử dụng đối tượng để truy
cập đến các thành phần của lớp có tham số mặc định như sau:

Kết quả

19
KHOA CÔNG NGHỆ THÔNG TIN
4. BÀI TẬP
1. Tạo một class Student có các thuộc tính name, age, course_name
 Viết hàm khởi tạo với đầy đủ các thông tin trên
 Viết hàm show_info() để hiển thị toàn bộ các thuộc tính trên
 Tạo một đối tượng từ class Student sau đó gọi hàm show_info()
để hiển thị thông tin của đối tượng đó (cho người dùng nhập vào 3
thông tin name, age, course_name)
2. Khai báo class để quản lý đối tượng Vehicle bao gồm các thông tin
sau: Số khung, Tên hãng, Loại (4 chỗ/ 7 chỗ ..), màu xe.
 Viết hàm khởi tạo với đầy đủ các thông tin trên
 Viết hàm hiểu thị thông tin xe
 Tạo một đối tượng từ lớp Vehicle và gọi hàm hiển thị thông tin
trên (các thông tin do người dùng nhập)

20
KHOA CÔNG NGHỆ THÔNG TIN
4. BÀI TẬP
1. Xây dựng lớp hình chữ nhật và tạo đối tượng kiểu lớp hình chữ nhật
sau đó gọi các thành phần của đối tượng có trong lớp hình chữ nhật.

Phân tích: Quan sát hình chữ nhật ta thấy hình chữ nhật có các dữ liệu
thành phần: chiều dài, chiều rộng, màu sắc. Các hàm thành phần gồm:
tính chu vi, tính diện tích và hiển thị thông tin hình chữ nhật ra màn hình.
Từ đó ta có thể biểu diễn lớp hình chữ nhật thông qua ngôn ngữ lập trình
từ các gợi ý trên.

class HinhChuNhat():
21
KHOA CÔNG NGHỆ THÔNG TIN
5. Tổng kết bài học phần 1
Bài học này đã cung cấp cho bạn đọc các khái niệm cơ bản về
phương pháp lập trình hướng đối tượng, các bước định nghĩa một lớp,
tạo các đối tượng và sử dụng đối tượng. Bài học cũng đã cung cấp một
số ví dụ minh hoạ đơn giãn giúp sinh viên có thể làm quen với phương
pháp lập trình này. Tuy nhiên để hiểu sâu hơn nữa, các bạn cần tìm
hiểu và rèn luyện thêm kỹ năng lập trình nữa.

22
KHOA CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ THÔNG TIN

You might also like