Hôm nay cafedev chia sẻ cho ace một số kiến thức, tài liệu, bài tập chọn lọc giúp mọi người rèn luyện, nâng cao, ôn luyện về hướng đối tượng[Object-oriented Programming [OOP]] một cách vững nhất.
Theo kinh nghiệm xương máu đi làm thực tế hơn 8 năm nay với các dự án cả trăm người cho tới 1,2 người tham gia. Những dự án đó hầu như 100% đều có dùng tới lập trình hướng đối tượng[Object-oriented Programming [OOP]] và nó cũng là một chủ đề khá hot trong phỏng vấn cho các ace mới lần đầu đi làm. Ngoài ra python là một ngôn ngữ khá mạnh mẽ và ứng dụng nhiều trong các lĩnh vực khác nhau, bạn có tham khảo thêm về nó tại đây.
Hầu hết các ngôn ngữ lập trình hiện nay đều có thể áp dụng lập trình hướng đối tượng, chỉ cần bạn hiểu sâu về nó và áp dụng nó trên một ngôn ngữ cụ thể thì các ngôn ngữ khác cũng tương tự như vậy. Trong bài này cafedev sẽ giúp các bạn học nó và làm bài tập trên ngôn ngữ python 3 một cách chi tiết + full bài hướng dẫn.
Nếu ace nào chưa rõ hoặc muốn ôn luyện c++ thì có thể tham khảo series tự học python sau.
Sau đây là các tài liệu, thực hành bạn cần biết khi học OOP với Python:
- 1. Tài liệu
- 2. Bài tập
- 3. Tóm tắt
1 | Python3 – Class |
2 | Lập trình hướng đối tượng trong Python | Phần 1 [lớp, đối tượng và các thành viên của lớp] |
3 | Lập trình hướng đối tượng trong Python | Phần 2 [che giấu dữ liệu và in đối tượng] |
4 | Lập trình hướng đối tượng trong Python | Phần 3 [Kế thừa, ví dụ về đối tượng, hàm issubclass[] và super[]] |
5 | Đa hình trong Python |
6 | Class variable và Static variable trong Python |
7 | Class method và static method trong Python |
8 | Thay đổi các biến thành viên trong Python |
9 | Hàm constructor trong Python |
10 | Hàm destructor trong Python |
11 | Hàm str[] và hàm repr[] trong Python |
12 | Metaprogramming bằng các Meta-classes trong Python |
13 | Các thuộc tính của Lớp và Các thuộc tính của Thể hiện trong Python |
14 | Reflection trong Python |
15 | Barrier Object trong Python |
16 | Timer objects trong Python |
17 | Garbage Collection trong Python |
2. Bài tập
1 | Bài tập hướng đối tượng trong python |
2 | Bài tập với json trong python |
3 | Bài tập với Cơ sở dữ liệu trong python |
4 | Bài tập với Thread-Multithread trong python |
5 | Bài tập GUI trong python |
6 | Bài tập GAME trong python |
3. Tóm tắt
Lập rình OOP rất cần và hữu ích cho ace trong công việc sau này. Cafedev khuyên chân thành các bạn mới hay bạn nào đã học nhưng chưa nắm rõ về nó, bạn nên học, tìm hiểu và làm bài tập nhiều vô để hiểu nó kỹ, sâu hơn. Chúc các bạn thành công.
Nguồn và Tài liệu tiếng anh tham khảo:
- w3school
- python.org
- geeksforgeeks
Tài liệu từ cafedev:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Ebook về python tại đây.
- Các series tự học lập trình khác
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
- Group Facebook
- Fanpage
- Youtube
- Trang chủ
Chào thân ái và quyết thắng!
Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!
1. Tìm hiểu về lập trình hướng đối tượng
– Lập trình hướng đối tượng là một kỹ thuật hỗ trợ, cho phép lập trình viên trực tiếp làm việc với các đối tượng mà họ định nghĩa. Giúp tăng năng suất, đơn giản hóa độ phức tạp khi bảo trì cũng như mở rộng phần mềm.
– Hiện nay có khá nhiều ngôn ngữ lập trình theo hướng đối tượng như C++, Java, PHP, … và còn cả Python
Một vài thuật ngữ hướng đối tượng
+ Lớp [Class]: kiểu dữ liệu do người dùng định nghĩa, tập hợp nhiều thuộc tính đặc trưng cho đối tượng được tạo ra từ lớp đó, các thuộc tính là các biến thành viên hoặc phương thức.
+ Đối tượng [Object]: Một thể hiện cụ thể của cấu trúc dữ liệu được định nghĩa trong lớp. Một đối tượng bao gồm cả các biến thành viên và phương thức.
+ Thuộc tính [Data member]: thuộc tính được định nghĩa trong lớp.
+ Phương thức [Method]: được định nghĩa trong lớp nhằm thực hiện một công việc.
+ Kế thừa [Inheritace]:tính chất của các ngôn ngữ lập trình hướng đối tượng cho phép các lớp mở rộng từ 1 lớp có sẵn.
2. Tìm hiểu về thao tác với lớp [class]
a. Khaibáolớp, đối tượng
– Khai báo lớp:
class :
#Constructor – Hàm khởi tạo
def __init__[self,[]]
[]
[]
– Khai báo đối tượng:
= [[]]
b. Tham chiếu đến thuộc tính và phương thức
– Tham chiếu đến thuộc tính:
.
– Tham chiếu đến phương thức:
.[]
c. Một số hàm khi làm việc với lớp
Hàm | Môtả |
getattr[obj, name[, default]] | Lấy 1 thuộc tính của đối tượng, nếu đối tượng này không có thuộc tính đó thì giá trị trả về là default. Khi default không được truyền vào thì giá trị trả về là None. |
hasattr[obj, name] | Kiểm tra thuộc tính có tồn tại trong đối tượng này hay không, nếu có thì trả về True và ngược lại. |
setattr[obj, name, value] | Gán giá trị value cho thuộc tính trong đối tượng. |
delattr[obj, name] | Xoá thuộc tính trong đối tượng. |
Lưu ý: name phải là kiểu xâu trong các hàm trên
4. Ví dụ về làm việc với class
class hocsinh:
#Constructor – Hàm khởi tạo
def __init__[self,hoten,dtoan,dvan]:
self.hoten = hoten
self.dtoan = dtoan
self.dvan = dvan
#Phương thức dtb tính điểm trung bình
def dtb[self]:
return [self.dtoan + self.dvan]/2
#Phương thức xuất ra màn hình một đối tượng
def in_hs[self]:
print[self.hoten,self.dtoan,self.dvan]
#Tạo đối tượng hs từ lớp hocsinh
hs = hocsinh["Nguyen Minh Anh",9,8]
#Tham chiếu đến phương thức dtb
print["Trung bình điểm của",hs.hoten,"là",hs.dtb[]]
#Tham chiếu đến phương thức in_hs
hs.in_hs[]