Gelişmiş Python Geliştirme Kursu
Bölüm
>
Seviye
İleri Düzey Sınıflar
Sınıf Polimorfizmi
Amaç
Sınıf polimorfizmini kullanarak şarap karışımlarını işlenmeye hazır hale getirmek için hazırlamayı bitirin.
Bazı özel şarap türleri, diğerlerinden daha fazla hazırlık gerektirir ve karıştırılıp doğru şarap haline gelmeden önce ekstra eklemeler gerektirir. Bunu başarmak için sınıf polimorfizmi kullanmalıyız; bu, sınıflar kullanılarak oluşturulan nesnelerin kullanımını optimize etmenin bir yoludur. Bu, iç sınıf fonksiyonlarının özellikleri paylaşması yoluyla yapılır, böylece farklı sınıflardan olsalar da hepsi aynı şekilde çağrılabilir.
Kod editöründe, dört (4) farklı şarap türünü içeren dört (4) sınıf oluşturmuş olacaksınız: grape , cherry , strawberry ve mango. Her sınıfın add() ve take_action() adında iki fonksiyonu olacak; bu fonksiyonlar aynı yapıda oluşturulmuş olsa da, içerdikleri farklı olabilir. Her bir sınıfın take_action() fonksiyonunun yerleştirilecek bir malzeme ile doldurulması gerekmektedir.
Başlamak için, hafif X işaretine yürüyün ve read() fonksiyonunu kullanarak notu okumak için masaya dönün. Yazılan bilgileri not alın; bu bilgiler her sınıfın take_action() fonksiyonuna nelerin eklenmesi gerektiğini size söyleyecektir. Örneğin, grape sınıfında place() fonksiyonunu kullanarak "white oak" eklenmesi gerekmektedir asşağıda gösterildiği gibi:
# 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")
Yerleştirilmesi gereken tüm malzemeler sınıf fonksiyonlarına eklendikten sonra, altın X işaretine yürüyün ve şarap karışımlarına eklenmesi gereken malzemeleri alın. collect() fonksiyonunu kullanarak ingredients adlı sabit listeyi toplayın ve içeriğini speak() fonksiyonu ile kontrol edin.
Haritanın alt kısmına yürüyün ve şarap karışımını tamamlamak için gereken bileşenleri elde etmek amacıyla dört (4) meyve ve böğürtlen çantasını toplayın.
Artık her şey toplandığına göre, şarap karışımlarını tamamlamak için tüm malzemeleri ekleme zamanı. Sınıfların nesnelerini oluşturun ve argümanlarını doldurun; dört (4) nesne olmalıdır: grape_mix , cherry_mix , strawberry_mix ve mango_mix.
Her nesnede, isme karşılık gelen sınıfı ayarlayın ve topladığınız listeye göre karıştırılması gereken öğeyi ekleyin. grape için "nothing", cherry için "pure water", strawberry için "sugar" ve mango için "spice" eklenmelidir. Örneğin, tanımlanmış bir nesne şu şekilde görünmelidir: grape_mix = grape("nothing")
Nesneler oluşturulduktan sonra sınıf polimorfizmini devreye sokma zamanı; kırmızı halının altındaki koyu X işaretine yürüyün, varana doğru yüz dönün ve kod editöründe ayarlanan döngüyü kullanın. Döngü, alt sıralardaki her şarap varanına gitmenize ve karışımları tamamlamak için gereken öğeleri eklemenize olanak tanıyacaktır.
Kırmızı halı strawberry_mix, mor halı cherry_mix, yeşil halı grape_mix ve turuncu halı mango_mix gerektirmektedir. Öğeleri, haritada sol-to-sağ sırasıyla göründükleri şekilde döngüye ekleyin. Örneğin:
for mix in (strawberry_mix, mango_mix, cherry_mix): mix.add() mix.take_action() player.turn_right() player.move_forward(2) player.turn_left()
Örnekte olduğu gibi, karışımlar sol-to-sağ sırasıyla halıların yerleştirilme biçimiyle eşleşmektedir; yani: red, orange, purple sırasıyla strawberry_mix, mango_mix, cherry_mix anlamına gelir. Dizi tamamlandığında, yeşil halıdaki koyu X işaretine yürüyün, varana doğru yüz dönün ve kod editöründe ayarlanan ikinci döngü ile aynı şeyi yapın. Bu sefer, seviyeyi tamamlamak için haritada gösterildiği gibi halı renkleri (green, purple, orange) sağdan sola olacak şekilde yapın.