Kursus Pembangunan Python Lanjutan
Bab
>
Tahap
Kelas Lanjutan
Polimorfisme Kelas
Objektif
Selesaikan penyediaan beberapa campuran wain supaya mereka boleh sedia untuk diproses dengan menggunakan class polymorphism.
Terdapat jenis wain istimewa tertentu yang memerlukan penyediaan lebih daripada yang lain dan memerlukan tambahan ekstra sebelum ia boleh dicampur dan diperam menjadi wain yang sebenar. Untuk mencapai ini, kita mesti menggunakan class polymorphism, iaitu satu cara untuk mengoptimumkan penggunaan objek yang dihasilkan menggunakan kelas. Ini dilakukan dengan membiarkan fungsi dalaman dalam kelas berkongsi sifat supaya semuanya boleh dipanggil dengan cara yang sama walaupun berasal dari kelas yang berbeza.
Dalam editor kod, anda akan menyediakan empat (4) kelas yang merangkumi empat jenis wain yang berbeza: grape , cherry , strawberry dan mango . Setiap kelas akan mempunyai dua fungsi yang dinamakan add() dan take_action(), walaupun fungsi-fungsi ini disusun dengan cara yang sama, kandungan fungsi-fungsi ini mungkin berbeza. Setiap kelas perlu mempunyai fungsi take_action() mereka diisi dengan bahan yang perlu diletakkan.
Untuk memulakan, berjalanlah ke tanda X yang ringan dan hadapi meja untuk membaca nota menggunakan fungsi read(). Catatkan maklumat yang ditulis yang akan memberitahu anda apa yang perlu ditambahkan kepada fungsi take_action() setiap kelas. Sebagai contoh, pada kelas grape perlu menambahkan "white oak" menggunakan fungsi place() seperti yang ditunjukkan di bawah:
# 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")
Setelah semua bahan yang perlu diletakkan ditambahkan kepada fungsi kelas, berjalanlah ke tanda X yang berwarna emas dan ambil bahan yang perlu diletakkan dalam campuran wain. Gunakan fungsi collect() untuk mengambil konstanta senarai yang dinamakan ingredients, dan semak kandungannya menggunakan fungsi speak().
Berjalanlah ke bahagian bawah peta dan kumpulkan empat (4) beg buah dan beri, supaya anda mempunyai komponen yang diperlukan untuk melengkapkan campuran wain.
Kini selepas segala-galanya dikumpulkan, tiba masanya untuk menambah semua bahan bagi melengkapkan campuran wain. Cipta objek daripada kelas-kelas tersebut dan sediakan argumennya, hendaklah terdapat empat (4) objek: grape_mix, cherry_mix, strawberry_mix dan mango_mix.
Pada setiap objek, tetapkan kelas yang sepadan dengan nama dan tambahkan bahan yang perlu dicampurkan mengikut senarai yang anda kumpulkan. Untuk grape tiada apa-apa yang ditambah ("nothing"), untuk cherry tambahkan "pure water", untuk strawberry tambahkan "sugar" dan untuk mango tambahkan "spice". Sebagai contoh, objek yang ditakrifkan sepatutnya kelihatan seperti ini: grape_mix = grape("nothing")
Setelah objek-objek tersebut dicipta, tiba masanya untuk menggunakan class polymorphism. Berjalanlah ke tanda X yang gelap di bawah permaidani merah, hadapi tong, dan gunakan gelung yang telah disediakan dalam editor kod. Gelung tersebut akan membolehkan anda mengunjungi setiap tong wain di barisan bawah dan membolehkan anda menambah elemen yang diperlukan untuk melengkapkan campuran mereka.
Permaidani red memerlukan strawberry_mix, permaidani purple memerlukan cherry_mix, permaidani green memerlukan grape_mix dan permaidani orange memerlukan mango_mix. Tambahkan elemen ke dalam gelung mengikut urutan yang dipersembahkan dalam peta dari kiri ke kanan. Sebagai contoh:
for mix in (strawberry_mix, mango_mix, cherry_mix): mix.add() mix.take_action() player.turn_right() player.move_forward(2) player.turn_left()
Seperti dalam contoh, campuran tersebut sepadan dengan cara permaidani diletakkan dari kiri ke kanan, bermaksud: red, orange, purple sepadan dengan strawberry_mix, mango_mix, cherry_mix. Setelah urutan selesai, berjalanlah ke tanda X yang gelap di atas permaidani hijau, hadapi tong, dan lakukan perkara yang sama dengan gelung kedua yang disediakan dalam editor kod. Kali ini, giliran dilakukan dari kanan ke kiri mengikut warna permaidani (green, purple, orange) seperti yang ditunjukkan dalam peta untuk melengkapkan tahap.