כתיבת קוד — שיעור 7
OOP חלק א׳ — Classes ו-Encapsulation
כל 2 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.
T2 · בסיסי250 נק'~20 דק'algorithmic
Vector2D עם Magic Methods
ממש מחלקה Vector2D המייצגת וקטור דו-ממדי עם x,y. עליה לתמוך ב: חיבור וקטורים באמצעות + (__add__), השוואת שוויון עם == (__eq__), ייצוג טקסטואלי repr בפורמט המדויק 'Vector2D(x, y)' (__repr__), ומתודה magnitude() המחזירה את גודל הווקטור (שורש סכום הריבועים).
דוגמאות
Vector2D(1,2) + Vector2D(3,4) → Vector2D(4, 6)
repr(Vector2D(4, 6)) → 'Vector2D(4, 6)'
Vector2D(3,4).magnitude() → 5.0
הפתרון נשמר מקומית אוטומטית.
T3 · בינוני350 נק'~25 דק'algorithmic
BankAccount — אינקפסולציה וחריגות
ממש מחלקה BankAccount עם יתרה מוסתרת (name mangling). דרישות: __init__(balance=0) — יתרה שלילית זורקת ValueError. deposit(amt) ו-withdraw(amt) — סכום ≤ 0 זורק ValueError; משיכה מעבר ליתרה זורקת ValueError. balance חשוף כ-property לקריאה בלבד (אי אפשר לבצע account.balance = X מבחוץ).
דוגמאות
a=BankAccount(100); a.deposit(50); a.balance → 150
a.withdraw(30); a.balance → 120
a.withdraw(1000) → ValueError
הפתרון נשמר מקומית אוטומטית.