סיכום – צורות והתנהגויות
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-GO של Coddy. שיעור 19 מתוך 68.
אתגר
קלבאתגר הזה תיצרו מערכת תקשורת שמדגימה פולימורפיזם באמצעות ממשקים. תבנו ממשק Speaker ותממשו אותו באמצעות סוגים שונים שיכולים "לדבר" בדרכים הייחודיות להם.
תקבלו שלושה קלטים:
- מחרוזת שמייצגת את מספר הדוברים שיש ליצור (למשל,
"3") - מחרוזת שמכילה סוגי דוברים המופרדים בפסיקים (למשל,
"person,parrot,person") - מחרוזת שמכילה שמות דוברים המופרדים בפסיקים (למשל,
"Alice,Polly,Bob")
המשימה שלכם היא:
- להגדיר ממשק
Speakerעם חתימת מתודה אחת:Speak()שמחזירה מחרוזת - להגדיר מבנה
Personעם שדהName(מחרוזת) - להגדיר מבנה
Parrotעם שדהName(מחרוזת) - לממש את המתודה
Speak()עבור שני המבנים:- על Person להחזיר:
"Hello, I'm [name]" - על Parrot להחזיר:
"Squawk! [name] says hello!"
- על Person להחזיר:
- ליצור פונקציה בשם
makeAllSpeakשמקבלת פרוסה של ממשקיSpeakerכפרמטר - בתוך
makeAllSpeak, לעבור על הפרוסה ולקרוא למתודהSpeak()של כל דובר, תוך הדפסת התוצאה - לנתח את הקלטים כדי ליצור מופעים מתאימים של דוברים על סמך הסוגים והשמות שסופקו
- לאחסן את כל הדוברים בפרוסה של ממשקי
Speaker - לקרוא ל-
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 שלכם
}כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1בקרת זרימה מתקדמת
switch עם `fallthrough`יציאה מלולאות מקוננותהמשך לולאה מסוימתהצהרת `goto`סיכום – שליטה מתקדמת בלולאות4פרויקט: רשימת משימות פשוטה
הגדרת הפרויקטהוספת משימה2מבנים ושיטות
הגדרת שיטות במבניםמקבלי ערךמקבלי מצביעבחירת מקבליםשיטות לעומת פונקציותסיכום — התנהגות המבנים5מפות לעומק
מפות של Structsמצביעים כערכים במפהבדיקה אם מפות הן nilהשוואת מפותסיכום - מונה תדירות מילים8פרויקט: ניהול מלאי פשוט
סקירת הפרויקטבדיקת המלאי3ממשקים (הבסיס)
מהו ממשק?הגדרת ממשקמימוש ממשקשימוש בטיפוסי ממשקממשק ריקבדיקות טיפוסמתג טיפוסיםסיכום – צורות והתנהגויותתרגלו בעצמכם: קומפיילר Go אונליין