Coding for KidsCoding for Kids
ระดับสร้างสรรค์ความท้าทายคู่มือครู
โหวตสำหรับฟีเจอร์
หลักสูตรการพัฒนาด้วย Python ขั้นสูง
บทที่
>
ระดับ

คลาสขั้นสูง
พอลิมอร์ฟิซึมของคลาส

วัตถุประสงค์

เสร็จสิ้นการเตรียมส่วนผสมไวน์ให้พร้อมสำหรับการประมวลผลโดยใช้ polymorphism ของคลาส

มีไวน์ประเภทพิเศษบางชนิดที่ต้องการการเตรียมมากกว่าชนิดอื่น ๆ และจำเป็นต้องมีการเติมส่วนผสมพิเศษก่อนที่จะสามารถผสมและหมักให้เป็นไวน์ที่ถูกต้อง เพื่อบรรลุเป้าหมายนี้เราต้องใช้ polymorphism ของคลาส ซึ่งเป็นวิธีเพิ่มประสิทธิภาพในการใช้วัตถุที่สร้างจากคลาส โดยการที่ฟังก์ชันภายในคลาสจะแชร์คุณสมบัติบางอย่าง ทำให้สามารถเรียกใช้งานได้ในรูปแบบเดียวกันแม้ว่าจะมาจากคลาสต่าง ๆ

ในโปรแกรมแก้ไขโค้ด คุณจะได้ตั้งค่าคลาสสี่ (4) คลาสซึ่งรวมถึงไวน์ประเภทต่าง ๆ สี่ชนิด: grape , cherry , strawberry และ mango แต่ละคลาสจะมีฟังก์ชันสองตัว ชื่อ add() และ take_action() แม้ว่าฟังก์ชันเหล่านี้จะมีโครงสร้างในลักษณะเดียวกัน แต่เนื้อหาภายในอาจแตกต่างกันไป โดยแต่ละคลาสจำเป็นต้องเติมโค้ดในฟังก์ชัน take_action() เพื่อระบุวัสดุที่ต้องวาง

เริ่มต้นด้วยการเดินไปยังเครื่องหมาย X สีสว่างแล้วหันไปทางโต๊ะเพื่ออ่านจดหมายโดยใช้ฟังก์ชัน read() จดบันทึกข้อมูลที่เขียนไว้ซึ่งจะบอกคุณว่าต้องเพิ่มอะไรในฟังก์ชัน take_action() ของแต่ละคลาส ตัวอย่างเช่น ในคลาส grape ต้องเพิ่ม "white oak" โดยใช้ฟังก์ชัน place() ดังที่แสดงด้านล่าง:

# 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")

เมื่อวัสดุทั้งหมดที่ต้องวางได้ถูกเพิ่มในฟังก์ชันของคลาสแล้ว ให้เดินไปยังเครื่องหมาย X สีทองและเก็บส่วนผสมที่จำเป็นสำหรับไวน์ส่วนผสม ใช้ฟังก์ชัน collect() เพื่อเก็บค่าคงที่รายการชื่อ ingredients และตรวจสอบเนื้อหาด้วยฟังก์ชัน speak()

เดินไปยังส่วนล่างของแผนที่และเก็บถุงผลไม้และเบอร์รี่ทั้งหมดสี่ (4) ถุง เพื่อที่คุณจะมีส่วนประกอบที่จำเป็นในการเติมเต็มส่วนผสมไวน์

เมื่อทุกอย่างถูกเก็บครบแล้ว ก็ถึงเวลาที่จะเพิ่มวัสดุทั้งหมดเพื่อเติมเต็มส่วนผสมไวน์ สร้างวัตถุจากคลาสและกำหนดอาร์กิวเมนต์ให้เรียบร้อย ควรมีวัตถุสี่ (4) ชิ้น ได้แก่ grape_mix , cherry_mix , strawberry_mix และ mango_mix

ในแต่ละวัตถุ ให้ใช้คลาสที่สอดคล้องกับชื่อและเพิ่มสิ่งที่ต้องผสมลงไปตามรายการที่คุณเก็บไว้ สำหรับ grape ให้ใส่ "nothing" สำหรับ cherry ใส่ "pure water" สำหรับ strawberry ใส่ "sugar" และสำหรับ mango ใส่ "spice" ตัวอย่างเช่น วัตถุที่กำหนดควรมีลักษณะดังนี้: grape_mix = grape("nothing")

เมื่อวัตถุทั้งหมดถูกสร้างขึ้นแล้ว ก็ถึงเวลาที่จะนำ polymorphism ของคลาส ไปใช้ ให้เดินไปยังเครื่องหมาย X สีมืดใต้พรมสีแดง หันไปทางถังแล้วใช้ลูปที่ตั้งค่าไว้ในโปรแกรมแก้ไขโค้ด ลูปนี้จะช่วยให้คุณเดินไปยังถังไวน์แต่ละถังในแถวล่างและเพิ่มองค์ประกอบที่จำเป็นในการเติมเต็มส่วนผสม

พรมสี red ต้องการ strawberry_mix , พรมสี purple ต้องการ cherry_mix , พรมสี green ต้องการ grape_mix และพรมสี orange ต้องการ mango_mix ให้เพิ่มองค์ประกอบลงในลูปตามลำดับที่แสดงในแผนที่จากซ้ายไปขวา ตัวอย่างเช่น:

for mix in (strawberry_mix, mango_mix, cherry_mix): mix.add() mix.take_action() player.turn_right() player.move_forward(2) player.turn_left()

ตามที่ปรากฏในตัวอย่าง ส่วนผสมตรงกับการจัดวางพรมจากซ้ายไปขวา นั่นคือ: red , orange , purple ตรงกับ strawberry_mix, mango_mix, cherry_mix เมื่อขั้นตอนนี้เสร็จแล้ว ให้เดินไปยังเครื่องหมาย X สีมืดบนพรมสีเขียว หันไปยังถัง และทำสิ่งเดียวกันกับลูปที่สองที่ตั้งค่าไว้ในโปรแกรมแก้ไขโค้ด ครั้งนี้ให้ดำเนินการจากขวาไปซ้าย โดยใช้สีของพรม (green , purple , orange) ตามที่แสดงในแผนที่เพื่อให้ผ่านด่านนี้

หนังสือโค้ด