Chào mừng trở lại.
Điều tôi chưa nói với bạn là khi học lại về lập trình hướng đối tượng và không chỉ trong
Python, mà trong bất kỳ ngôn ngữ lập trình nào hỗ trợ mô hình OP, thì ý tưởng về bốn trụ cột của OP có
phải là bốn điều mà lập trình hướng đối tượng thực sự làm được không, rất tốt.
Và trên thực tế, chúng tôi đã thực sự học được điều đầu tiên, và đó là ý tưởng về sự đóng gói.
Đóng gói là gì?
Đóng gói là sự ràng buộc của dữ liệu và các chức năng thao tác với dữ liệu đó.
Và chúng tôi đóng gói thành một đối tượng lớn để chúng tôi giữ mọi thứ trong hộp này mà người dùng hoặc mã hoặc các máy
khác có thể tương tác.
Và dữ liệu và chức năng này là những gì chúng ta gọi là thuộc tính và phương thức, phải không?
Chúng tôi có thể đóng gói chức năng của nhân vật người chơi của mình bằng cách có dữ liệu tên và tuổi hoặc các
thuộc tính và cũng có các chức năng có thể hoạt động dựa trên tên và tuổi này.
Vì vậy, ví dụ, tôi có thể có một phương pháp.
Ở đây nói rằng hãy hét lên.
Hoặc nói.
Và phương pháp speake bây giờ có thể sử dụng tên và tuổi.
Tôi có thể nói.
Tên tôi là Tự Dodd tên.
Và tôi là.
Bản thân.
Tám tuổi.
Vì vậy, nếu tôi làm người chơi một dấu chấm nói.
Và tôi chạy cái này.
Tên tôi là Andre, và tôi 100 tuổi.
Tôi đang đóng gói các chức năng.
Nếu tôi không có lớp này, tôi sẽ có một số biến và sau đó là hai hàm.
Nhưng bằng cách sử dụng tính năng đóng gói, tôi đã đóng gói điều này thành một bản thiết kế mà tôi
có thể tạo nhiều đối tượng để khi người khác nhìn thấy mã của tôi, họ biết, Này, đây là toàn bộ đối tượng mà tôi có thể tương tác.
Tôi có thể sử dụng theo những cách nhất định mà nhân vật người chơi mô tả.
Và chúng tôi cũng đã thấy điều này trong các kiểu dữ liệu Python được xây dựng của chúng tôi, phải không?
Khi tôi tạo một chuỗi.
Như thế này.
Bởi vì tính đóng gói, tôi có sẵn tất cả chức năng này cho tôi, tất cả các phương thức này mà tôi có thể
truy cập để nếu tôi làm vậy, giả sử viết hoa, nó sẽ tận dụng tất cả các điểm mạnh của tôi.
Tôi có tất cả chức năng này được gói gọn để tôi sử dụng.
Hiện nay.
Tại sao chúng ta muốn đóng gói dữ liệu và chức năng thành các thuộc tính và phương thức?
Chà, bởi vì điều này mang lại cho chúng ta thêm sức mạnh, phải không?
Ví dụ: nếu nhân vật người chơi này không có bất kỳ hành động, bất kỳ phương pháp nào và chỉ có thuộc tính.
Chà, trong trường hợp đó, nó giống như một cuốn từ điển, phải không?
Thật là vô ích nếu tôi in một trình phát ở đây và tôi nhấp vào chạy.
Tôi có đối tượng người chơi này nhưng tôi có thể truy cập tên như thế này.
Và tôi cũng có thể truy cập H.
Như thế này.
Nhưng tôi thực sự không thể làm bất cứ điều gì với nó.
Tôi có thể có cùng một từ điển ở đây.
Giả sử người chơi thứ hai sẽ cân bằng một từ điển có tên Andre và sau đó là 100 tuổi.
Và sự khác biệt thực sự duy nhất giữa hai là cách tôi truy cập thông tin này.
Thay vì ký hiệu dấu chấm, tôi sử dụng ký hiệu dấu ngoặc để truy cập các khóa.
Vì vậy, khi tôi nhấp vào Chạy.
Ồ.
Tôi phải đảm bảo rằng tôi làm hai ở đây cho cầu thủ hai.
Nếu tôi bấm Chạy.
Lại.
Đó là một thứ tương tự.
Chắc chắn tôi có thể làm theo cách này, nhưng nó hơi vô ích.
Tại sao không chỉ tạo một từ điển nếu tất cả những gì tôi muốn là dữ liệu?
Nhưng sử dụng cách này, tôi đang kết hợp mọi thứ, đóng gói mọi thứ vào những trường hợp đó, vào những chiếc
hộp có thể hữu ích và cả những thứ có ý nghĩa.
Đúng?
Bởi vì thế giới của chúng ta chứa đầy dữ liệu và hành động, phải không?
Ngay cả một cái cây, chẳng hạn, nếu chúng ta có một lớp cây trong thế giới thực của chúng ta, thì cái
cây đó có thể là cây thường xanh hay lâu năm, nó sẽ có cho dù nó có cho thuê hay không, nó cao bao nhiêu.
Chúng tôi sẽ có tất cả thông tin đó, nhưng cũng có các hành động.
Đúng?
Tôi có thể chặt một cái cây.
Cây có thể phát triển, cây có thể vươn rễ.
Vì vậy, bằng cách này, chúng tôi có thể bắt chước những gì xảy ra trong thế giới thực với mã của chúng tôi.
Vì vậy, đó là sự đóng gói và chúng tôi đã thấy nó.
Nhưng hãy nói về trụ cột thứ hai của chúng ta trong video tiếp theo.