Menu
Coddy logo textTech

סיכום – צורות והתנהגויות

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-GO של Coddy. שיעור 19 מתוך 68.

challenge icon

אתגר

קל

באתגר הזה תיצרו מערכת תקשורת שמדגימה פולימורפיזם באמצעות ממשקים. תבנו ממשק Speaker ותממשו אותו באמצעות סוגים שונים שיכולים "לדבר" בדרכים הייחודיות להם.

תקבלו שלושה קלטים:

  • מחרוזת שמייצגת את מספר הדוברים שיש ליצור (למשל, "3")
  • מחרוזת שמכילה סוגי דוברים המופרדים בפסיקים (למשל, "person,parrot,person")
  • מחרוזת שמכילה שמות דוברים המופרדים בפסיקים (למשל, "Alice,Polly,Bob")

המשימה שלכם היא:

  1. להגדיר ממשק Speaker עם חתימת מתודה אחת: Speak() שמחזירה מחרוזת
  2. להגדיר מבנה Person עם שדה Name (מחרוזת)
  3. להגדיר מבנה Parrot עם שדה Name (מחרוזת)
  4. לממש את המתודה Speak() עבור שני המבנים:
    • על Person להחזיר: "Hello, I'm [name]"
    • על Parrot להחזיר: "Squawk! [name] says hello!"
  5. ליצור פונקציה בשם makeAllSpeak שמקבלת פרוסה של ממשקי Speaker כפרמטר
  6. בתוך makeAllSpeak, לעבור על הפרוסה ולקרוא למתודה Speak() של כל דובר, תוך הדפסת התוצאה
  7. לנתח את הקלטים כדי ליצור מופעים מתאימים של דוברים על סמך הסוגים והשמות שסופקו
  8. לאחסן את כל הדוברים בפרוסה של ממשקי Speaker
  9. לקרוא ל-makeAllSpeak עם פרוסת הדוברים שלכם

יש ליצור את הדוברים לפי הסדר שבו הם מופיעים בקלט. לדוגמה, אם הסוגים הם "person,parrot,person" והשמות הם "Alice,Polly,Bob", צרו Person בשם Alice, אחריו Parrot בשם Polly, ואז Person בשם Bob. האתגר הזה מדגים כיצד אפשר להתייחס לסוגים שונים באופן אחיד באמצעות ממשק משותף, ומציג את העוצמה של פולימורפיזם ב-Go.

נסו בעצמכם

package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	// קראו את הקלט
	var numSpeakersStr string
	var speakerTypesStr string
	var speakerNamesStr string
	
	fmt.Scanln(&numSpeakersStr)
	fmt.Scanln(&speakerTypesStr)
	fmt.Scanln(&speakerNamesStr)
	
	// נתחו את הקלט
	numSpeakers, _ := strconv.Atoi(numSpeakersStr)
	speakerTypes := strings.Split(speakerTypesStr, ",")
	speakerNames := strings.Split(speakerNamesStr, ",")
	
	// TODO: כתבו את הקוד שלכם למטה
	// 1. הגדירו את הממשק Speaker
	// 2. הגדירו את המבנים Person ו-Parrot
	// 3. ממשו את המתודות Speak() עבור שני המבנים
	// 4. צרו את הפונקציה makeAllSpeak
	// 5. צרו דוברים על סמך הקלט ושמרו אותם ב-slice
	// 6. קראו לפונקציה makeAllSpeak עם ה-slice שלכם
	
}

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Go אונליין