Khóa học Phát triển Python Nâng cao
Chương
>
Cấp độ
Các lớp nâng cao
Đa hình lớp
Mục tiêu
Hoàn thành việc chuẩn bị một số hỗn hợp rượu để chúng có thể sẵn sàng cho quá trình chế biến bằng cách sử dụng đa hình lớp.
Có một số loại rượu đặc sản cần được chuẩn bị kỹ lưỡng hơn so với những loại khác và yêu cầu thêm các vật liệu phụ trước khi chúng được trộn lẫn và ủ thành rượu đúng chuẩn. Để thực hiện điều này, chúng ta phải sử dụng đa hình lớp, một cách tối ưu hóa việc sử dụng các đối tượng được tạo từ các lớp. Điều này được thực hiện bằng cách cho các hàm nội bộ của lớp chia sẻ các thuộc tính, do đó chúng có thể được gọi theo cùng một cách mặc dù thuộc các lớp khác nhau.
Trong trình soạn thảo mã, bạn đã thiết lập bốn (4) lớp bao gồm bốn loại rượu khác nhau: grape, cherry, strawberry và mango. Mỗi lớp sẽ có hai hàm có tên là add() và take_action(), mặc dù các hàm này có cấu trúc giống nhau nhưng nội dung bên trong của chúng có thể khác nhau. Mỗi lớp cần phải có hàm take_action() chứa thông tin về vật liệu cần được đặt vào.
Để bắt đầu, hãy đi đến dấu X sáng và hướng về chiếc bàn để đọc ghi chú bằng cách sử dụng hàm read(). Hãy lưu ý thông tin được ghi, thông tin này sẽ chỉ ra những gì cần được thêm vào hàm take_action() của mỗi lớp. Ví dụ, đối với lớp grape cần phải thêm "white oak" bằng cách sử dụng hàm place() như minh họa dưới đây:
# Class for making grape wine
class grape:
def __init__(self,item):
self.name = "grape"
self.item = item
# Adds materials
def add(self):
player.speak("%s are added to the %s mixture." % (self.item, self.name))
# Take actions
def take_action(self):
player.place(self.name)
# New code added
player.place("white oak")
Sau khi tất cả các vật liệu cần được đặt đã được thêm vào các hàm của lớp, hãy đi đến dấu X vàng và lấy các thành phần cần được đặt vào hỗn hợp rượu. Sử dụng hàm collect() để lấy hằng số danh sách có tên ingredients và kiểm tra nội dung của nó bằng hàm speak().
Hãy đi đến cuối bản đồ và thu thập bốn (4) túi trái cây và quả mọng, để bạn có được các thành phần cần thiết để hoàn thiện hỗn hợp rượu.
Bây giờ, khi mọi thứ đã được thu thập, đã đến lúc thêm tất cả các vật liệu để hoàn thiện hỗn hợp rượu. Hãy tạo các đối tượng của các lớp và cung cấp đối số cho chúng; sẽ có bốn (4) đối tượng: grape_mix, cherry_mix, strawberry_mix và mango_mix.
Ở mỗi đối tượng, hãy thiết lập lớp tương ứng với tên và thêm mục cần được trộn theo danh sách bạn đã thu thập. Đối với grape thì thêm "nothing", đối với cherry thì thêm "pure water", đối với strawberry thì thêm "sugar" và đối với mango thì thêm "spice". Ví dụ, một đối tượng được định nghĩa sẽ trông như sau: grape_mix = grape("nothing")
Sau khi các đối tượng đã được tạo, đã đến lúc áp dụng đa hình lớp. Hãy đi đến dấu X tối dưới tấm thảm đỏ, hướng về thùng rượu và sử dụng vòng lặp được thiết lập trong trình soạn thảo mã. Vòng lặp sẽ cho phép bạn điều hướng đến từng thùng rượu ở hàng dưới cùng và thêm các thành phần cần thiết để hoàn thiện hỗn hợp của chúng.
Tấm thảm red cần strawberry_mix, tấm thảm purple cần cherry_mix, tấm thảm green cần grape_mix và tấm thảm orange cần mango_mix. Hãy thêm các thành phần vào vòng lặp theo thứ tự chúng được trình bày trên bản đồ từ trái sang phải. Ví dụ:
for mix in (strawberry_mix, mango_mix, cherry_mix): mix.add() mix.take_action() player.turn_right() player.move_forward(2) player.turn_left()
Như trong ví dụ, các hỗn hợp tương ứng với cách bố trí của các tấm thảm từ trái sang phải, nghĩa là: red, orange, purple tương ứng với strawberry_mix, mango_mix, cherry_mix. Khi chuỗi hoàn thành, hãy đi đến dấu X tối trên tấm thảm green, hướng về thùng rượu và thực hiện điều tương tự với vòng lặp thứ hai được thiết lập trong trình soạn thảo mã. Lần này, hãy thực hiện từ phải sang trái với thứ tự màu của các tấm thảm (green, purple, orange) như được hiển thị trên bản đồ để hoàn thành cấp độ.