חלק III: מבוא לשפת סמולטוק • סעיפים 4.1–4.4 הכרות מעשית עם סביבת Squeak

סביבת Squeak: הורדה, קובצי הליבה, ממשק העכבר ותפריט העולם

איך מורידים ומתקינים את חבילת ה-All-in-One, מהו השילוש של קובצי המערכת (image, sources, changes), איך פועלת מוסכמת שלושת צבעי העכבר (אדום, צהוב, כחול) וה-Morphic Halo, וכיצד שומרים ויוצאים מהעולם החי.

📥
🧠

מודל מנטלי ועיקרון מנחה: לחיות ולנשום בתוך "עולם" זיכרון חי של עצמים!

💡 האנלוגיה המוחשית

בניגוד לסביבות פיתוח רגילות (כמו Eclipse או Visual Studio) שבהן כותבים קוד טקסטואלי שמקומפל לקבצים חיצוניים, ב-Squeak אנחנו חיים בתוך "אקווריום" חי: כל חלון, כפתור ושורת קוד הם עצמים (Objects) חיים השמורים כצילום מצב בזיכרון (`.image`).

⚖️ חוק הברזל הפדגוגי

לפני ההפעלה הראשונית חובה לגבות את קובץ התמונה (`.image`) ואת קובץ השינויים (`.changes`)! במהלך העבודה קבצים אלו מתעדכנים ברציפות, וגיבוי מקדים מאפשר לחזור לנקודת התחלה נקייה במקרה של שגיאה מערכתית.

🎯 תובנת המפתח

השליטה בעולם של Squeak מתבססת על מוסכמת שלושת צבעי העכבר: אדום (שמאלי) לבחירה ולתפריט העולם, צהוב (ימני) לתפריט הקשר, וכחול (אמצעי) להילת ה-Morphic Halo.

1. סעיף 4.1: הורדה והתקנה של סביבת העבודה ושלושת קובצי היסוד

חבילת ה-All-in-One, קובצי האצווה ותיקיית Resources

ברוך הבא לחלק המעשי של המסע שלנו! אחרי שהכרנו את הרעיונות של תכנות מונחה עצמים, הגיע הזמן שנפתח יחד את סביבת הפיתוח החיה Squeak ונלמד לשלוט בה בידיים. סביבת Squeak ניתנת להורדה ללא תשלום מהאתר הרשמי (http://www.squeak.org/). כדי לחסוך כל התעסקות מיותרת בהגדרות תשתית, מומלץ להוריד את חבילת ה-All-in-One, הכוללת סביבה מוכנה להפעלה עבור כל מערכות ההפעלה העיקריות (Windows, Linux, macOS).

לאחר שנפרוס את החבילה, תיווצר תיקייה הנושאת את שם הגרסה (למשל Squeak5.1-16549-32bit-All-in-One או בקיצור SqueakX). בתוך התיקייה הזו נמצא קובצי אצווה להפעלה ישירה ומהירה (squeak.bat עבור Windows ו-squeak.sh עבור Linux), ולצידם תת-ספרייה מרכזית בשם Resources. כאן מסתתר הסוד הארכיטקטוני של Squeak: הסביבה אינה קובץ הרצה סטנדרטי בודד, אלא נשענת על שלושה קובצי ליבה קריטיים הפועלים יחד בתוך ספריית Resources:

SqueakX.image 🖼️

1. קובץ התמונה (.image)

הלב הפועם של המערכת! קובץ זה מכיל את "תמונת" (Snapshot) מצב הזיכרון המדויקת של סביבת הריצה כפי שנשמרה לאחרונה — כולל המצב של כל העצמים הפעילים, המחלקות והמתודות הקיימות במערכת בנקודת השמירה.

SqueakX.sources 📚

2. קובץ המקורות (.sources)

קובץ לקריאה בלבד (Read-Only) המכיל את קוד המקור (Source Code) הבסיסי של מחלקות המערכת המתאימות לגרסה זו (החל מאותה גרסה X). הוא אינו משתנה במהלך העבודה שלך.

SqueakX.changes 📝

3. קובץ השינויים (.changes)

יומן דינמי המתעד את רשימת כל השינויים, התוספות ועריכות הקוד שביצעת במערכת על גבי קובצי המקור מאז יצירת קובץ ה-sources והפעלת הסביבה.

2. סעיף 4.2: הפעלת הסביבה, גיבוי, מבנה "העולם" ומוסכמת שלושת כפתורי העכבר

המכונה הווירטואלית (VM), חלון Welcome to Squeak, פקדי החלונות והעכבר התלת-צבעוני

🛡️ המלצת גיבוי קריטית לפני ההפעלה הראשונית!

רגע לפני שאתה מפעיל את הסביבה בפעם הראשונה, אני ממליץ לך בחום לגבות את קובץ התמונה (.image) ואת קובץ השינויים (.changes)! מדוע? משום שבמהלך העבודה השוטפת שני הקבצים האלה מתעדכנים ומשתנים באופן רציף. גיבוי מקדים יאפשר לך תמיד לחזור ל"נקודת התחלה" נקייה במקרה של שגיאה מערכתית.

איך מפעילים את הסביבה? ההפעלה מתבצעת על ידי הרצת המכונה הווירטואלית (Virtual Machine – VM) והעברת קובץ התמונה כפרמטר אליה (למשל: Squeak.exe Squeak5.1-16549-32bit.image), או בצורה מהירה ופשוטה באמצעות קובצי האצווה (squeak.bat / squeak.sh).

ברגע שהסביבה עולה, נפגוש את המרכיבים הבאים על המסך:

  • חלון הפתיחה (Welcome to Squeak): מופיע בהפעלה הראשונית ומאפשר להגדיר את המראה והתחושה (Look and Feel) של הסביבה (ניתן לבחור Configure או Skip).
  • העולם (World): שטח הרקע המרכזי של כל סביבת העבודה מתפקד כ"שולחן עבודה" חי ואינטראקטיבי ונקרא "העולם" (World).
  • שורת התפריטים העליונה: כוללת תפריטים מובנים (Projects, Tools, Apps ועוד), שעון, שורת חיפוש מהירה וכפתור למסך מלא.
  • פקדי החלונות: כותרת כל חלון מכילה כפתורי שליטה — סגירה (x), פתיחת תפריט פנימי של החלון, הרחבה למסך מלא (+), ומזעור/צמצום למינימום (-). הצבת סמן העכבר מעל כל פקד מציגה בועת הסבר (Tooltip) המתארת את פעולתו.

🖱️ מוסכמת שלושת כפתורי העכבר (אדום, צהוב, כחול)

סביבת Squeak נשענת על מודל היסטורי הממפה את פעולות הממשק לשלושה צבעים של כפתורי עכבר:

🔴
1. הכפתור האדום (Red Button)
ממופה לכפתור השמאלי בעכבר

הכפתור הראשי: משמש לבחירת פריטים מתפריטים ומרשימות, סימון טקסט ולחיצה על פקדים. לחיצה איתו על הרקע החופשי מעלה את תפריט העולם (World Menu).

🟡
2. הכפתור הצהוב (Yellow Button)
ממופה לכפתור הימני בעכבר

כפתור תלוי-הקשר: מעלה תפריט הקשר (Context Menu) התלוי בעצם או בחלון שעליו לחצו (למשל, לחיצה ימנית על אזור הטקסט של חלון Welcome to Squeak תציג תפריט עריכת טקסט ופעולות קוד).

🔵
3. הכפתור הכחול (Blue Button)
ממופה לכפתור האמצעי / גלגלת

מקיף את העצם הנבחר במסגרת צלמיות ייעודית הנקראת Morphic Halo (הילת מורפיק), המשמשת לשינוי ישיר של תכונותיו החזותיות: הזזה, סיבוב, שינוי גודל, מחיקה או שכפול!

3. סעיפים 4.3–4.4: תפריט העולם (World Menu), שמירה ויציאה מהמערכת

קיבוע התפריט באמצעות נעץ (Pin), תפריט המשנה open..., מקשי קיצור ופקודות save and quit

🌍 סעיף 4.3: תפריט העולם (World Menu)

  • פתיחה וקיבוע: נפתח בלחיצה שמאלית (כפתור אדום) על הרקע החופשי של העולם, ונעלם בלחיצה שנייה. ניתן לקבע אותו לצמיתות למסך על ידי לחיצה על צלמית הנעץ (Pin) שבפינת הכותרת שלו.
  • פתיחת כלים מרכזיים: מאפשר גישה ישירה ל-Browser, Workspace, Transcript, Test Runner.
  • תפריט משנה open...: פותח תפריט נוסף עם מגוון עשיר של כלי מערכת כגון class browser, workspace, Method Finder, Process Browser, File List ועוד.
  • מקשי קיצור: לצד פריטים רבים מופיע מקש קיצור בסוגריים; צירופו עם מקש Ctrl מפעיל את הפקודה ישירות (למשל Ctrl+t פותח חלון Transcript).

💾 סעיף 4.4: שמירה ויציאה מסביבת העבודה

  • save and quit (שמירה מלאה ויציאה): ממוקמת בתחתית תפריט העולם. שומרת את תמונת הזיכרון המדויקת של המערכת אל תוך קובץ ה-.image ויוצאת. בהפעלה הבאה המערכת חוזרת בדיוק לאותו המצב שבו נשמרה (כולל חלונות פתוחים, מיקומם והעצמים שנוצרו)!
  • save: שמירת התמונה הנוכחית תוך המשך עבודה שוטפת.
  • save as...: שמירת תמונת המערכת בשם קובץ חדש (מומלץ ליצירת נקודות גיבוי).
  • save as new version: שמירה כגרסה ממוספרת עוקבת.
  • quit: יציאה מהסביבה ללא שמירת שינויים.
עזר גרפי 4.1 • השילוש הקדוש של קובצי Squeak ומיפוי שלושת כפתורי העכבר

המכונה הווירטואלית (VM) מול קובצי Resources ומוסכמת האדום-צהוב-כחול

Files & Mouse Model
א. השילוש הקדוש של קובצי Squeak (תיקיית Resources) SqueakX.image תמונת זיכרון חיה (קריאה/כתיבה) SqueakX.sources קוד מקור בסיסי (קריאה בלבד) SqueakX.changes יומן כל עריכות הקוד (דינמי) מנוע ההרצה Virtual Machine (VM) Squeak.exe / squeak.sh מקבלת את .image כפרמטר ב. מוסכמת שלושת כפתורי העכבר ב-Squeak L כפתור אדום (שמאלי בעכבר) בחירת פריטים, סימון טקסט, ולחיצה על הרקע ל-World Menu M כפתור כחול (אמצעי / גלגלת) מקיף את העצם ב-Morphic Halo להזזה, סיבוב, גודל, מחיקה/שכפול R כפתור צהוב (ימני בעכבר) מעלה תפריט תלוי-הקשר (Context Menu) עריכה / הרצת קוד
🔍

מיני-סימולציה 4.1: סייר קובצי הליבה, העכבר התלת-כפתורי ואפשרויות השמירה

לחץ על כל רכיב לניתוח מלא
🔵
סימולציה אינטראקטיבית גדולה 4.1

מעבדת העולם (World), שלושת כפתורי העכבר וה-Morphic Halo

התנסה בשולחן העבודה החי של Squeak: הפעל את שלושת כפתורי העכבר (אדום/שמאלי לפתיחת תפריט העולם וקיבועו בנעץ 📌, צהוב/ימני לתפריט ההקשר, וכחול/אמצעי להילת ה-Morphic Halo שמאפשרת לסובב, לשנות גודל, להזיז, לשכפל או למחוק את העצם), ובדוק את פעולת save and quit!

🐭 Squeak Projects Tools Apps
Search... 14:55
x ≡ + -
Welcome to Squeak

חלון הפתיחה החי ב-"World": בחר Configure או Skip, או הפעל עליי Morphic Halo!

Configure Skip
רקע המערכת: World ("העולם") World Menu: לא מקובע
🖱️ הפעל את שלושת כפתורי העכבר של Squeak:
[Squeak VM] קובץ ה-.image נטען! לחץ על אחד משלושת כפתורי העכבר למעלה כדי לתפעל את העולם.
⚡

הגשר הנרטיבי: הכרנו את קובצי המערכת, תפריט העולם והעכבר – אבל איפה אנחנו כותבים ומריצים קוד חי?

עכשיו, כשאנחנו יודעים לפתוח את תפריט העולם (World Menu) ולשמור את תמונת הזיכרון שלנו ב-.image, הגיע הזמן לפתוח את שני החלונות הראשונים שלנו: חלון העבודה (Workspace) וחלון ההודעות (Transcript)! בלשונית הבאה נגלה את ההבדל המכריע בין do it לבין print it, נלמד לשרשר הודעות (Cascade) באמצעות נקודה-פסיק (;), ונצלול אל תוך הבטן של העצמים בעזרת ה-Inspector וה-Explorer!

סוף יחידה 4.1–4.4 • התקנה, קובצי ליבה וממשק המשתמש
חלק III: מבוא לשפת סמולטוק • סעיפים 4.5–4.6 חלונות עבודה ובחינת עצמים

פקודות חיות: Workspace, Transcript, כלי בחינת עצמים (Inspector / Explorer) ו-SqueakMap

איך מריצים קטעי קוד ב-Workspace, מה ההבדל המהותי בין do it לבין print it, איך משרשרים הודעות (Cascade) לאותו עצם באמצעות נקודה-פסיק (;), ואיך בוחנים את מצבו הפנימי של עצם חי בעזרת Inspector ו-Explorer.

💻
🧠

מודל מנטלי ועיקרון מנחה: כל ביטוי מחזיר עצם — השאלה היא מה אנחנו עושים עם העצם שחזר!

💡 האנלוגיה המוחשית

פקודת do it היא כמו לבקש משף להכין מנה במטבח הסגור — המנה הוכנה (החישוב התבצע), אך אם לא ביקשת להגיש אותה, לא תראה דבר! לעומת זאת, print it מבקשת מהמנה שחזרה לתאר את עצמה בטקסט (printString) ומדפיסה אותה מיד מולך.

⚖️ חוק הברזל הפדגוגי

הפרדת משפטים שונים נעשית בנקודה (.), אך כאשר שולחים מספר הודעות ברצף אל אותו העצם המקבל, נשתמש בשרשור הודעות (Cascade) עם נקודה-פסיק (;): Transcript show: 'hello world'; cr..

🎯 תובנת המפתח

ב-Inspector (`Ctrl+i`) כותרת החלון מציינת את שם המחלקה של העצם הנבדק (ולא את שם המשתנה!), והחלונית התחתונה היא Mini-Workspace שבו self מקושר ישירות לעצם הנבדק.

1. סעיף 4.5 א': חלון עבודה (Workspace), חלון הודעות (Transcript) וביצוע ביטויים

הרצת קוד באמצעות do it (d), ירידת שורה עם cr, ושרשור הודעות (Cascade) באמצעות נקודה-פסיק (;)

כדי להתחיל לדבר עם העצמים החיים בסביבת Squeak, אנחנו פותחים שני חלונות יסודיים מתוך תפריט העולם (World Menu) או מסרגל התפריטים העליון תחת האפשרות Tools:

📝 חלון עבודה (Workspace)

חלון עבודה רב-שימושי המשמש כמשטח טיוטה אינטראקטיבי לכתיבה ולהצגה של טקסט, ובעיקר — להרצה ולביצוע של קטעי קוד (Scripts) בשפת Smalltalk.

📟 חלון הודעות (Transcript)

משמש כקונסול פלט (Console) ראשי של המערכת להצגת הודעות טקסטואליות ונתונים (קיצור מקלדת לפתיחתו: Ctrl+t). כדי להדפיס אליו, אנו שולחים אליו הודעות ישירות!

▶️ ביצוע ביטוי באמצעות do it (d) ושרשור הודעות (Cascade)

בוא נכתוב את שורת הקוד הראשונה שלנו בתוך ה-Workspace:

Transcript show: 'hello world'.

מה קורה בשורה הזו? הביטוי שולח לעצם הגלובלי Transcript את ההודעה show: עם הארגומנט (המחרוזת) 'hello world'. כדי להריץ את השורה, אנחנו מסמנים את הטקסט ובוחרים באפשרות do it (d) מתוך תפריט ההקשר הצהוב (כפתור ימני בעכבר), או לוחצים על קיצור המקלדת Ctrl+d (או Alt+d). מיד לאחר הביצוע, המחרוזת hello world תופיע בתוך חלון ה-Transcript!

אם נבצע את הפקודה הזו שוב, הטקסט החדש יודפס באותה השורה בצמוד לטקסט הקודם. כדי לבקש מה-Transcript לרדת לשורה חדשה (Carriage Return), נשלח אליו את ההודעה האונרית cr:

Transcript show: 'hello world'.
Transcript cr.

שים לב שאפשר לבצע מספר ביטויים ברצף על ידי הפרדתם בנקודה (.). אבל יש דרך אלגנטית הרבה יותר! כאשר אנחנו שולחים מספר הודעות ברצף אל אותו העצם המקבל (כאן: Transcript), אנחנו יכולים להשתמש בתחביר מקוצר שנקרא שרשור הודעות (Cascade) באמצעות נקודה-פסיק (;) — כותבים את שם המקבל פעם אחת בלבד, ומפרידים בין ההודעות הנשלחות אליו באמצעות ;:

Transcript show: 'hello world'; cr.

2. סעיף 4.5 ב': ההבדל המכריע בין do it (d) לבין print it (p)

למה הרצת 3 + 4 עם do it אינה מציגה דבר, ואיך print it משתמשת בהודעה printString?

בוא נעשה ניסוי מחשבתי חשוב: מה יקרה אם נרשום ב-Workspace את הביטוי 3 + 4, נסמן אותו ונבצע do it (Ctrl+d)? הביטוי שולח למספר 3 את ההודעה + עם הארגומנט 4. המספר 3 מבצע את החישוב ומחזיר את העצם 7. אבל על המסך לא יוצג שום דבר! לא ב-Workspace ולא ב-Transcript. מדוע? כי פקודת do it מריצה את הקוד בלבד ואינה עושה שום שימוש בעצם החוזר מהביטוי!

כדי לראות את התוצאה של ביטוי, אנו משתמשים בפקודה print it (p) (קיצור מקלדת: Ctrl+p או Alt+p):

⚙️ do it (d) — ביצוע שקט ללא הצגת הערך החוזר

מחשבת את הביטוי המסומן "מאחורי הקלעים" ומתעלמת מהעצם המוחזר. מתאימה לפקודות שיש להן תופעת לוואי גלויה משל עצמן (כמו Transcript show: 'hello world'. או פתיחת חלון).

🖨️ print it (p) — חישוב + שליחת printString והדפסה

מעריכה תחילה את הביטוי (כמו do it), ולאחר מכן תופסת את העצם המוחזר ושולחת אליו אוטומטית את ההודעה printString! הודעה זו מחזירה ייצוג טקסטואלי של העצם, והתוצאה מודפסת ומודגשת בחלון ה-Workspace מיד לאחר הביטוי המסומן (באותה השורה):
• הרצת 3 + 4 עם print it תציג: 7
• הרצת Time now עם print it תציג את השעה הנוכחית!

3. סעיפים 4.5 ג'–4.6: בחינת עצמים (Inspector ו-Explorer) וטעינת חבילות ב-SqueakMap

ניתוח מצבו הפנימי של עצם ב-Inspector, תצוגת עץ היררכית ב-Explorer וקטלוג החבילות הקהילתי SqueakMap

אחת היכולות היפות ביותר בסביבת Squeak היא שאנחנו לא צריכים לנחש מה קורה בתוך עצם חי — אנחנו יכולים לפתוח אותו ולחקור את מצבו הפנימי באמצעות שני כלים משלימים:

inspect it (i) · Ctrl+i 🔎

מפקח העצמים (Inspector)

כלי המאפשר לנתח את מצבו הפנימי ("הבטן") של עצם ולשלוח אליו הודעות (למשל על העצם 7 מופע של SmallInteger או על Time now):

  • כותרת החלון: מציינת את שם המחלקה של העצם הנבדק (ולא את שם המשתנה!).
  • החלונית השמאלית: מציגה את self (העצם עצמו), את all inst vars, ואת רשימת כל משתני המופע (Instance Variables) של העצם.
  • החלונית הימנית: מציגה את הערך / הייצוג הטקסטואלי של המשתנה שנבחר משמאל.
  • החלונית התחתונה: מתפקדת כחלון עבודה מקומי (Mini-Workspace) שבו המשתנה self מקושר ישירות לעצם הנבדק! כתיבת self squared בחלונית זו וביצוע print it על העצם 7 תחזיר את הערך 49.
explore it (I) · Shift+Alt+i 🌳

סייר העצמים ההיררכי (Explorer)

כלי מתקדם המציג את העצם ומבנהו בצורת עץ היררכי (Tree View) ומאפשר ניווט נוח בין תתי-עצמים:

  • לחיצה על המשולשים הקטנים פותחת ופורסת את מבנה העצם ומציגה פרטים כגון מחלקת-העל (superclass), מילון המתודות (methodDict), format, רשימת משתני המופע (instanceVariables) ועוד.
  • מעבר מהיר: ניתן לעבור בקלות בין Inspector ל-Explorer ולהיפך באמצעות כפתור ייעודי בפינה הימנית-תחתונה של החלון!

🌐 סעיף 4.6: טעינת חבילות תוכנה באמצעות SqueakMap

כלי ה-SqueakMap משמש כקטלוג ומנגנון מובנה לטעינת חבילות תוכנה (Software Packages) מרשת האינטרנט ישירות לתוך סביבת העבודה Squeak. באמצעותו ניתן לאתר, להוריד ולהתקין תוספות, ספריות ויישומים חיצוניים שפותחו ופורסמו על ידי קהילת המפתחים העולמית של Squeak.

עזר גרפי 4.2 • השוואת מנגנון ההרצה ואנטומיית חלון ה-Inspector

מסלול הביצוע של do it מול print it ומבנה 3 החלוניות של ה-Inspector

Execution & Inspection
א. ביצוע ביטוי ב-Workspace: do it מול print it 1. פקודת do it (Ctrl+d) על הביטוי 3 + 4: המספר 3 מקבל את ההודעה + 4 ומחזיר את העצם 7. אין שימוש בעצם החוזר ⟵ לא מוצג דבר על המסך! 2. פקודת print it (Ctrl+p) על הביטוי 3 + 4: מעריכה את הביטוי (מחזיר 7) + שולחת ל-7 את ההודעה printString הייצוג הטקסטואלי '7' מודפס ומודגש מיד לצד הביטוי! SmallInteger (כותרת ה-Inspector: שם המחלקה!) חלונית שמאלית self all inst vars (רשימת משתני המופע) חלונית ימנית (ערך המשתנה הנבחר) 7 הייצוג הטקסטואלי של הפריט שנבחר משמאל חלונית תחתונה (Mini-Workspace שבו self הוא העצם הנבדק): self squared ──(print it)──► 49
🔬

מיני-סימולציה 4.2: בוחן הפקודות וכלי הבחינה (do it, print it, Cascade, Inspector, Explorer, SqueakMap)

לחץ על כל פקודה או כלי להשוואה
💻
סימולציה אינטראקטיבית גדולה 4.2

מעבדת Workspace, Transcript ומפקח העצמים החי (Inspector & Explorer)

בחר ביטוי ב-Workspace והרץ אותו באמצעות do it (d), print it (p), inspect it (i) או explore it (I). שים לב כיצד 3 + 4 עם do it אינו מדפיס דבר, כיצד print it מדגיש את התוצאה לצד הקוד, וכיצד ניתן לשלוח לעצם הנבדק ב-Inspector את ההודעה self squared!

📝 Workspace בחר פעולה לביצוע על הביטוי:
Transcript show: 'hello world'.
בחר אחת מארבע הפקודות למעלה כדי להריץ את הביטוי שב-Workspace.
📟 Transcript (קונסול המערכת)

                                        
🔎 Inspector: SmallInteger
חלונית תחתונה ב-Inspector (self מקושר לעצם הנבדק!):
self squared
⚡

הגשר הנרטיבי: הרצנו ביטויים ובחנו עצמים – אבל איך מנווטים בין אלפי המחלקות והמתודות של המערכת?

בשפות כמו ++C או Java אנחנו מחפשים קוד בתוך קובצי טקסט במערכת הקבצים. אבל ב-Smalltalk אין קובצי טקסט חיצוניים — כל הקוד חי בזיכרון כמחלקות ומתודות! בלשונית הבאה נכיר את כלי הפיתוח החשוב ביותר בסביבה: דפדפן המערכת (System Browser) על ארבע חלוניות הניווט שלו, נלמד 4 אסטרטגיות לחיפוש מחלקות, ונגלה את הקסם של Method Finder שמאפשר למצוא מתודה לפי דוגמה בלבד (כגון 4 . 16)!

חלק III: מבוא לשפת סמולטוק • סעיפים 4.7–4.9 ניווט בים הקוד

דפדפן המערכת (System Browser), חיפוש מחלקות וחיפוש מתודות ב-Method Finder

הכרת המבנה האנטומי של ה-System Browser (4 חלוניות הניווט, בורר instance / ? / class ושורת כפתורי הפעולה), ארבע הדרכים לאיתור מחלקה, וחיפוש מתודות לפי שם או לפי דוגמה התנהגותית ב-Method Finder.

🔍
🧠

מודל מנטלי ועיקרון מנחה: סינון הדרגתי מן הכלל אל הפרט וחיפוש מתודות לפי התנהגות!

💡 האנלוגיה המוחשית

ארבע החלוניות העליונות של ה-System Browser פועלות כמו מיקוד של זכוכית מגדלת משמאל לימין: קטגוריה ⟵ מחלקה ⟵ פרוטוקול ⟵ מתודה. בכל צעד אנחנו מצמצמים את המיקוד עד שנגלה קוד המקור של המתודה למטה!

⚖️ חוק הברזל הפדגוגי

כאשר בוחרים מחלקה ב-System Browser אך לא בוחרים מתודה, החלונית התחתונה מציגה את תבנית הגדרת המחלקה — שהיא בעצמה ביטוי Smalltalk השולח הודעה למחלקת-העל (כגון Object subclass: #MyClass...)!

🎯 תובנת המפתח

בכלי ה-Method Finder אינך חייב לזכור את שם המתודה! תוכל לחפש לפי דוגמה (התנהגות) ע"י הפרדה בנקודה: הקלדת 4 . 16 תגלה מיד ש-4 squared --> 16!

1. סעיף 4.7: דפדפן המערכת (System Browser) — כלי הפיתוח המרכזי

ארבע חלוניות הניווט העליונות, כפתורי בורר המצב (instance / ? / class), שורת כפתורי הפעולה וחלונית הקוד

בשפות תכנות כמו ++C או Java, כשאנחנו רוצים לקרוא או לערוך קוד, אנחנו מחפשים קובצי טקסט במערכת הקבצים. ב-Smalltalk אין קובצי טקסט חיצוניים — כל הקוד מאורגן כמחלקות ומתודות חיות בזיכרון המערכת. הכלי המרכזי והחשוב ביותר בסביבה לבחינת מחלקות קיימות, להגדרת מחלקות חדשות ולעדכון מחלקות ומתודות נקרא דפדפן המערכת (System Browser). ניתן לפתוח אותו מתפריט העולם (World -> Browser או open... -> class browser) או משורת התפריטים העליונה (Tools -> Browser).

🧭 ארבע חלוניות הניווט העליונות (משמאל לימין – מן הכלל אל הפרט)

חלונית 1 (שמאלית)
חלונית הקטגוריות (Package / Category Pane)

מציגה רשימה של קטגוריות מערכת, כאשר כל קטגוריה מאגדת אוסף של מחלקות בעלות זיקה משותפת (לדוגמה: Kernel-Objects, Collections-Strings, Morphic-Basic).

חלונית 2
חלונית המחלקות (Class Pane)

מציגה את רשימת המחלקות השייכות לקטגוריה שנבחרה בחלונית הראשונה (למשל בחירה ב-Kernel-Objects תציג את Object, Boolean ועוד).

חלונית 3
חלונית הפרוטוקולים (Protocol / Message Category)

מציגה את קבוצות המתודות (הפרוטוקולים) של המחלקה שנבחרה. פרוטוקול הוא סיווג נושאי של מתודות הקשורות זו לזו (כגון: accessing, comparing, testing, converting, initialization או --all--).

חלונית 4 (ימנית)
חלונית המתודות (Method / Selector Pane)

מציגה את רשימת שמות המתודות (הסלקטורים) השייכות לפרוטוקול שנבחר (או את כלל המתודות של המחלקה אם נבחר --all--). בחירת מתודה מציגה את קוד המקור שלה למטה!

🎛️ כפתורי בורר המצב (מתחת לחלונית המחלקות)

  • instance: מצב ברירת המחדל, המיועד לצפייה ולעריכה של מתודות מופע (Instance Methods) ומשתני מופע.
  • ? (סימן שאלה): לחיצה עליו מציגה את תיעוד המחלקה (Class Comment) בחלונית המרכזית.
  • class: מעבר לצפייה ולעריכה של מתודות מחלקה (Class Methods, המוגדרות במטה-מחלקה) ומשתני מחלקה.

📄 החלונית המרכזית/התחתונה ושורת הסטטוס

  • כאשר לא נבחרה מתודה ספציפית: מוצגת תבנית הגדרת המחלקה — ביטוי Smalltalk המבוסס על שליחת הודעה למחלקת-העל (למשל: Object subclass: #MyClass instanceVariableNames: '' ...).
  • כאשר נבחרת מתודה ספציפית: מוצג קוד המקור של אותה מתודה.
  • שורת הסטטוס בתחתית החלון: מציגה את חותמת הזמן, שם המחבר שעדכן את המתודה, ומספר המממשים שלה.

🛠️ שורת כפתורי הפעולה (Action Bar) בין הפאנל העליון לתחתון

browse פותח חלון System Browser חדש וממוקד עבור הפריט הנבחר (קיצור: Ctrl+b).
senders פותח דפדפן ייעודי המציג את כל המתודות במערכת השולחות את ההודעה הנבחרת.
implementors פותח דפדפן המציג את כל המחלקות במערכת המממשות את המתודה הנבחרת.
versions מציג את היסטוריית השינויים והגרסאות של המתודה הנבחרת מתוך קובץ ה-.changes.
inheritance מציג את שרשרת הירושה של המתודה ומסמן בצבעים האם היא נדרסת (Overridden) וכיצד (שימוש ב-super ועוד).
hierarchy מפעיל את ה-Hierarchy Browser ומציג את עץ הירושה המלא של המחלקה הנבחרת ללא תלות בחלוקת הקטגוריות.
vars מציג את רשימת משתני המופע או המחלקה (כולל אלו שנורשו ממחלקות-העל) ובאילו מתודות נעשה בהם שימוש.
source שולט על אופן הצגת קוד המקור בחלונית העריכה.

2. סעיפים 4.8–4.9: ארבע דרכים לחיפוש מחלקות וחיפוש מתודות ב-Method Finder

איתור מהיר של מחלקות, וחיפוש מתודות לפי שם או לפי דוגמה התנהגותית (4 . 16)

📦 סעיף 4.8: ארבע דרכים לאיתור מחלקה ולהצגתה ב-System Browser

  1. ניווט ישיר דרך הקטגוריות: איתור ידני של הקטגוריה המתאימה בחלונית השמאלית ביותר ובחירת המחלקה מתוכה.
  2. שליחת ההודעה browse בקוד: כתיבת שם המחלקה ב-Workspace ושליחת ההודעה browse — למשל Boolean browse וביצוע do it (Ctrl+d) יפתח ישירות חלון System Browser ממוקד במחלקה Boolean. לחלופין, ניתן לסמן את שם המחלקה בכל טקסט במערכת וללחוץ על מקש הקיצור Ctrl+b.
  3. איתור דרך עץ הירושה (hierarchy): אם מחפשים תת-מחלקה של מחלקה ידועה, פותחים את המחלקה הידועה ולוחצים על hierarchy כדי לפתוח את ה-Hierarchy Browser ולנווט אל תת-המחלקה.
  4. חיפוש לפי שם באמצעות find class... (f): פתיחת תפריט ההקשר (כפתור ימני / צהוב) בחלונית הקטגוריות של ה-System Browser ובחירה ב-find class... (או לחיצה על מקש f). הקלדת שם מדויק תטען את המחלקה ישירות; הקלדת שם חלקי תציג רשימת מחלקות תואמות לבחירה.

🪄 סעיף 4.9: חיפוש מתודות באמצעות Method Finder (Selector Browser)

נפתח מתפריט העולם (World -> open... -> method finder) או משורת התפריטים (Tools -> Method Finder), ומציע שתי דרכי חיפוש עוצמתיות:

1. חיפוש לפי שם או מחרוזת: מקלידים מחרוזת (לדוגמה time) בחלונית השמאלית העליונה ⟵ בחלונית שמתחתיה מתקבלת רשימת כל המתודות שהמחרוזת כלולה בשמן ⟵ בחירת מתודה מציגה בחלונית הימנית את כל המחלקות המממשות אותה ⟵ לחיצה על שם המחלקה תפתח אותה ב-System Browser ישירות על גבי המתודה!
2. חיפוש לפי דוגמה / התנהגות (Example-based / Behavioral Search): מאפשר למצוא מתודה על פי קלט ותוצאה צפויה, כאשר איברי הביטוי מופרדים בנקודה (.): עצם מקבל . ארגומנטים . תוצאה צפויה.
• הקלדת 4 . 16 ולחיצה על Enter תציג: 4 squared --> 16!
• הקלדת 10 . 2 . 5 תציג: 10 / 2 --> 5 ו-10 // 2 --> 5!
עזר גרפי 4.3 • המבנה האנטומי של ה-System Browser וזרימת החיפוש ב-Method Finder

סינון 4 החלוניות (קטגוריה ⟵ מחלקה ⟵ פרוטוקול ⟵ מתודה) וחיפוש לפי התנהגות

System Browser & Method Finder
System Browser — ארבע חלוניות הניווט העליונות (משמאל לימין) 1. Categories (קטגוריות) Kernel-Objects Collections-Strings 2. Classes (מחלקות) String instance ? class 3. Protocols (פרוטוקולים) accessing / comparing converting 4. Methods (מתודות) asUppercase asLowercase browse | senders | implementors | versions | inheritance | hierarchy | vars | source asUppercase "Answer a String made up from the receiver whose characters are all uppercase." ^ self copy translateToUppercase שורת סטטוס: חותמת זמן, ראשי תיבות מחבר ומספר מממשים
🧭

מיני-סימולציה 4.3: סייר כפתורי הפעולה של ה-System Browser ו-4 דרכי חיפוש מחלקות

לחץ על כל כפתור כדי לראות מה הוא פותח
🔍
סימולציה אינטראקטיבית גדולה 4.3

דפדפן המערכת החי (System Browser) ומעבדת החיפוש לפי דוגמה ב-Method Finder

🧭 סימולטור 4 חלוניות ה-System Browser (נווט משמאל לימין!):
1. Category
2. Class
3. Protocol
4. Method

                                            
🪄 מעבדת Method Finder: חיפוש לפי התנהגות או לפי שם!

נסה חיפוש לפי דוגמה (עצם מקבל, ארגומנטים ותוצאה מופרדים בנקודה .) או חיפוש לפי מחרוזת בשם המתודה:

⚡

הגשר הנרטיבי: למדנו לנווט ולמצוא כל מחלקה ומתודה ב-System Browser – עכשיו בוא נכתוב מתודה חדשה משלנו ונרחיב את השפה!

ב-Smalltalk אין חומה שמפרידה בין הקוד "של המערכת" לבין הקוד "שלך"! רוצים שכל מחרוזת במערכת (מופע של המחלקה המובנית String) תדע להגיב להודעה חדשה בשם shout ולהחזיר את עצמה באותיות גדולות עם סימן קריאה ('HELLO!')? בלשונית הבאה נלמד צעד אחר צעד את תבנית המתודה (Method Template), ננתח לעומק כל תו בשורת הקוד ^ self asUppercase, '!', נשמור באמצעות accept (s) ונריץ!

חלק III: מבוא לשפת סמולטוק • סעיף 4.10 כתיבת קוד והרחבת השפה

להרחיב את שפת האם: הגדרת מתודה חדשה, תבנית המתודה והוספת shout ל-String

איך כותבים, מסווגים, מקמפלים ושומרים מתודה חדשה ב-System Browser: אנטומיית תבנית המתודה (Method Template), ניתוח הפקודה ^ self asUppercase, '!', המשולש הצהוב, שמירה ב-accept (s), ראשי תיבות ובדיקה ב-Workspace.

🛠️
🧠

מודל מנטלי ועיקרון מנחה: אין הפרדה בין "קוד המערכת" לבין "הקוד שלך" — וחץ ה-Return (^) הוא קריטי!

💡 האנלוגיה המוחשית

בשפות רבות, מחלקת המחרוזות המובנית (String) היא "קופסה נעולה" שלא ניתן להוסיף לה מתודות. ב-Smalltalk כל המערכת פתוחה: ברגע שנוסיף למחלקה String את המתודה shout, כל מחרוזת בעולם תדע לצעוק!

⚖️ חוק הברזל הפדגוגי

מתודה ללא ^ (חץ למעלה) מחזירה כברירת מחדל את self (העצם המקורי)! כדי להחזיר את הערך המחושב החדש (כמו 'HELLO!'), חובה להציב ^ בתחילת משפט ההחזרה.

🎯 תובנת המפתח

הפסיק (,) ב-Smalltalk אינו סתם סימן פיסוק תחבירי — הוא הודעה בינארית (Binary Message) המבצעת שרשור (Concatenation) של מחרוזות!

1. סעיף 4.10 א': תבנית המתודה (Method Template) ב-System Browser

ארבעת החלקים של הגדרת מתודה חדשה: כותרת (Method Pattern), הערה במירכאות כפולות, משתנים מקומיים בין קווים אנכיים ומשפטי הביצוע

הגענו לרגע המרגש ביותר בפרק שלנו: אנחנו הולכים לכתוב מתודה חדשה משלנו ולהטמיע אותה בזמן אמת בתוך המערכת החיה! כפי שלמדנו, ב-Smalltalk אין שום הפרדה בין הקוד "שלנו" לבין הקוד "של המערכת". איך מתחילים? ב-System Browser אנחנו מבצעים שלושה צעדים פשוטים:

  1. מאתרים ופותחים את המחלקה שאליה אנו רוצים להוסיף את המתודה.
  2. בוחרים את הפרוטוקול המתאים בחלונית הפרוטוקולים (למשל הפרוטוקול converting להמרת נתונים).
  3. מיד עם בחירת הפרוטוקול, בחלונית התחתונה תוצג תבנית מתודה (Method Template) המנחה אותנו במבנה הכתיבה:
messageSelectorAndArgumentNames
    "comment stating purpose of message"
    | temporary variable names |
    statements

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

1. messageSelectorAndArgumentNames

תבנית המתודה (Method Pattern)

השורה הראשונה מגדירה את שם המתודה (ה-Selector שאליו היא תגיב) ואת שמות הפרמטרים שלה (שנפתחים באות קטנה).

2. "comment stating purpose of message"

הערת תיעוד (Comment)

נכתבת מוקפת במירכאות כפולות (" ") ומבהירה לקורא הקוד את מטרת המתודה ומשמעותה.

3. | temporary variable names |

הצהרת משתנים מקומיים (זמניים)

שמות המשתנים המקומיים (הזמניים) של המתודה נרשמים תחומים בין שני קווים אנכיים (| |) ומתחילים באות קטנה.

4. statements

החלק הביצועי (גוף המתודה והחזרת ערך ^)

משפטי הפעולה מופרדים בנקודות (.). החזרת ערך מתבצעת באמצעות החץ הפונה כלפי מעלה / כובע (^). זכור: מתודה ללא ^ מחזירה כברירת מחדל את self!

2. סעיף 4.10 ב': דוגמה מעשית מודרכת — הוספת המתודה shout למחלקה String

אנטומיה מלאה של שורת הקוד ^ self asUppercase, '!' ושמירה באמצעות accept (s)

בוא נגדיר יחד משימה מעשית: אנחנו רוצים שכל מחרוזת במערכת תוכל לקבל את ההודעה האונרית shout ("לצעוק"), ותחזיר בתגובה מחרוזת חדשה שבה כל האותיות הומרו לאותיות רישיות (גדולות) ובסופה מופיע סימן קריאה (!). לשם כך אנו פותחים ב-System Browser את המחלקה String, בוחרים בפרוטוקול converting, ומקלידים בחלונית העריכה התחתונה את הקוד הבא במקום תבנית המתודה:

shout
    "Answer a String converted to Uppercase followed by an exclamation mark."
    ^ self asUppercase, '!'

🔬 אנטומיה של הפקודה: ניתוח כל רכיב בשורה ^ self asUppercase, '!'

self
משתנה-פסאודו (העצם המקבל)

מילה שמורה המאפשרת לעצם להתייחס אל עצמו — מצביעה על העצם הספציפי שקיבל את ההודעה shout (במקרה שלנו: המחרוזת עצמה).

asUppercase
הודעה אונרית (Unary Message)

ההודעה הראשונה (ללא פרמטרים) הנשלחת אל self. היא מחזירה עותק חדש של המחרוזת שבו כל האותיות הומרו לאותיות רישיות (גדולות).

, '!'
הודעה בינארית לשרשור (פסיק)

הפסיק (,) הוא הודעה בינארית ב-Smalltalk המבצעת שרשור (Concatenation) של מחרוזות! הוא נשלח אל המחרוזת שחזרה מ-asUppercase ומחבר בסופה את הארגומנט '!'.

^ (Return)
חץ למעלה — החזרת ערך מפורשת

מחזיר את תוצאת השרשור הסופית בתור הערך החוזר מהמתודה למי ששלח את ההודעה shout (ללא ^ היה מוחזר self המקורי!).

3. סעיף 4.10 ג': המשולש הצהוב, שמירה ב-accept (s), ראשי תיבות ובדיקה ב-Workspace

איך מקמפלים את המתודה לתוך המערכת החיה ומתעדים אותה בקובץ השינויים (.changes)

Dirty Indicator 📐

1. המשולש הצהוב בפינה

ברגע שמקלידים שינויים בחלונית העריכה, מופיע משולש צהוב בפינה הימנית העליונה של החלונית. הוא מסמן שישנם שינויים בטקסט שטרם נשמרו וטרם קומפלו למערכת!

accept (s) · Ctrl+s ✍️

2. שמירה והזנת ראשי תיבות (Initials)

שומרים ומקמפלים על ידי בחירה ב-accept (s) מתפריט ההקשר (או Ctrl+s). בשמירה הראשונה במערכת תופיע תיבת שיח המבקשת להזין את ראשי התיבות של המתכנת (למשל rm), הנרשמים עם חותמת הזמן לצד המתודה ובקובץ ה-.changes!

'hello' shout 🚀

3. בדיקת המתודה ב-Workspace

פותחים חלון Workspace, מקלידים 'hello' shout, מסמנים ומבצעים print it (Ctrl+p). התוצאה המודפסת היא 'HELLO!' — המתודה זמינה כעת לכל המחרוזות במערכת!

עזר גרפי 4.4 • פירוק חזותי של המתודה shout ומסלול הקימפול

אנטומיית השורה ^ self asUppercase, '!' ושלבי השמירה ב-accept (s)

Method Anatomy
משולש צהוב = שינויים שטרם נשמרו ▴ ^ self asUppercase , '!' 1. חץ החזרה (^) מחזיר את תוצאת החישוב. ללא ^ מוחזר self המקורי! 2. self asUppercase שולח לעצם המקבל (self) הודעה אונרית להמרה לרישיות 3. פסיק (,) = הודעה בינארית מבצעת שרשור (Concatenation) של המחרוזת עם הארגומנט '!' 4. accept (s) / Ctrl+s מקמפל, מבקש ראשי תיבות (rm) ומתעד בקובץ ה-.changes!
🔍

מיני-סימולציה 4.4: מנתח רכיבי תבנית המתודה והפקודה shout

לחץ על כל רכיב כדי לראות מה יקרה אם נשמיט או נשנה אותו!
🛠️
סימולציה אינטראקטיבית גדולה 4.4

מעבדת פיתוח מתודה חיה: כתוב, קמפל ב-accept (s) ובדוק את shout ב-Workspace!

התנסה בתהליך המלא של הגדרת מתודה חדשה במחלקה String (בפרוטוקול converting): בדוק מה קורה כשיש משולש צהוב (לפני שמירה), מה קורה אם שוכחים את החץ ^, הזן את ראשי התיבות שלך ב-accept (s), והרץ 'hello' shout ב-Workspace!

System Browser: String >> converting ▴משולש צהוב: טרם נשמר!
shout
    "Answer a String converted to Uppercase followed by an exclamation mark."
    ^ self asUppercase, '!'
ראשי תיבות (Initials):
🧪 בדיקת המתודה shout בחלון ה-Workspace:

הקלד כל מחרוזת שתרצה, שלח אליה את ההודעה shout, ובצע print it (Ctrl+p):

' ' shout
💡 טיפ: נסה להריץ 'hello' shout לפני שלחצת על accept (s), ואז לחץ על accept (s) והרץ שוב!
⚡

הגשר הנרטיבי: השלמנו את כל סעיפי פרק 4 (4.1 עד 4.10) – בוא נסכם ונתרגל בכרטיסיות תלת-ממד!

כל הכבוד! למדת להתקין ולהפעיל את Squeak, לשלוט בשלושת כפתורי העכבר וב-Morphic Halo, להריץ קוד ב-Workspace וב-Transcript, לחקור עצמים ב-Inspector וב-Explorer, לנווט ולחפש ב-System Browser וב-Method Finder, ולהוסיף מתודה חדשה משלך (shout) למחלקה String! בלשונית החמישית והאחרונה של הפרק מחכה לנו מפת סינתזה מלאה ומילון מושגים אינטראקטיבי בכרטיסיות תלת-ממד (3D Flashcards)!

חלק III: מבוא לשפת סמולטוק • יחידה 4.11 סיכום אינטגרטיבי וכרטיסיות זיכרון

מילון מושגים אינטראקטיבי וסיכום פרק 4 (הכרות עם סביבת העבודה Squeak)

אינטגרציה של כל עקרונות פרק 4 (סעיפים 4.1 עד 4.10), בוחן קיצורי מקלדת וכלים מהיר, ו-12 כרטיסיות תלת-ממד (3D Flashcards) לבחינה עצמית ולמידה.

🏆
🧠

מודל מנטלי ועיקרון מנחה: ארבעת המעגלים של עבודה חיה ב-Squeak

💡 1. תשתית הזיכרון והממשק (4.1–4.4)

שלושת קובצי היסוד (.image, .sources, .changes), גיבוי לפני הפעלה, עכבר תלת-כפתורי (אדום, צהוב, כחול + Morphic Halo), תפריט העולם עם נעץ ו-save and quit.

⚖️ 2. הרצה ובחינת עצמים (4.5–4.6)

הרצה ב-Workspace מול פלט ב-Transcript, הבחנה בין do it ל-print it (printString), שרשור הודעות ב-Cascade (;), צלילה לעצמים ב-Inspector/Explorer וטעינת חבילות ב-SqueakMap.

🎯 3. ניווט ופיתוח קוד (4.7–4.10)

ניווט ב-4 חלוניות ה-System Browser, 4 דרכים לחיפוש מחלקות, חיפוש מתודות לפי שם או לפי דוגמה ב-Method Finder, והגדרת מתודה חדשה (shout) עם ^ ושמירה ב-accept (s).

עזר גרפי 4.5 • מפת העבודה השלמה בסביבת Squeak (סעיפים 4.1–4.10)

מחזור החיים של מתכנת Smalltalk: מטעינת ה-image ועד כתיבת מתודה ובדיקתה

Full Workflow Synthesis
1. קבצים וממשק (4.1–4.4) • .image, .sources, .changes • גיבוי לפני הפעלה ראשונה • עכבר: אדום, צהוב, כחול (Halo) • World Menu (נעץ לקיבוע) • שמירה ב-save and quit ⟵ 2. הרצה ובחינה (4.5–4.6) • Workspace ו-Transcript • do it (d) מול print it (p) • שרשור Cascade עם ; • Inspector (i) ו-Explorer (I) • חבילות מרשת ב-SqueakMap ⟵ 3. ניווט ואיתור (4.7–4.9) • System Browser (4 חלוניות) • מצבי instance / ? / class • 4 דרכים לחיפוש מחלקות • Method Finder לפי שם • ולפי דוגמה: 4 . 16 ➔ squared ⟵ 4. הגדרת מתודה (4.10) • תבנית מתודה: שם, "הערה", | משתנים |, משפטי ביצוע • ^ self asUppercase, '!' • משולש צהוב ➔ accept (s) • ראשי תיבות ובדיקת shout
⚡

מיני-סימולציה 4.5: מרכז השליטה בקיצורי המקלדת והתחביר של פרק 4

לחץ על כל קיצור או סימן תחבירי
🃏
סימולציה אינטראקטיבית גדולה 4.5

כרטיסיות זיכרון תלת-ממדיות (3D Flashcards) לכל 12 מושגי פרק 4

לחץ על כל כרטיסייה כדי להפוך אותה ולבחון את עצמך על כל אחד מ-12 מושגי המפתח של פרק 4:

נחשפו: 0 / 12
🚀

סיימנו במלואו את פרק 4! מה מחכה לנו בפרק 5?

עכשיו, כשאתה שולט בסביבת העבודה Squeak, יודע להריץ ביטויים ב-Workspace, לבחון עצמים ב-Inspector וב-Explorer, לנווט ב-System Browser ולהגדיר מתודות חדשות — אנחנו מוכנים לבנות תוכנית שלמה מאפס!

🎯 בפרק 5 (הרצת תכנית ראשונה) נבנה צעד אחר צעד את המשחק Quinto: • נכיר את חוקי משחק ה-Quinto.
• ניצור מחלקה חדשה משלנו בשם SBECell כיורשת של SimpleSwitchMorph.
• נאתחל את התא במתודת initialize ונבחן אותו בחי באמצעות ה-Inspector!
⛶

מעבדת חקר אינטראקטיבית במסך מלא

❓

5 שאלות פתוחות מדורגות + 5 שאלות אמריקאיות עם הסברים מלאים ותיבת הרחבה לכל יחידה

🚀 התחנה הבאה שלנו: פרק 5 – הרצת תכנית ראשונה (המשחק Quinto)

השלמנו במלואו את פרק 4: הכרות עם סביבת העבודה Squeak (סעיפים 4.1 עד 4.10)! בפרק 5 נבנה צעד אחר צעד משחק שלם בשם Quinto: