שיעור 8: Value Objects ו־records
כשמחיר הוא סתם decimal ומטבע הוא סתם string, שום דבר לא מונע לחבר שקלים לדולרים או לשנות סכום באמצע חישוב. בשיעור הזה נבנה Value Objects עם record — ערכים בלתי־משתנים שמושווים לפי ערך, כך שטעויות כאלה נחסמות עוד בקומפילציה.
Value Object הוא כמו שטר של 20 שקל: לא משנה איזה שטר בדיוק קיבלת — רק הערך קובע. ואי אפשר "לתקן" שטר — רק להחליף אותו בשטר אחר.
- אובייקט ערך (Value Object)
- ערך שמוגדר רק על ידי הנתונים שבו — שני מחירים של 10 ILS הם אותו ערך, בלי זהות נפרדת. תמיד בלתי־ניתן לשינוי.
- טיפוס record
- טיפוס ב-C# שבו הקומפיילר מייצר מהכרזה אחת השוואת ערך (Equals/==), מאפייני init, בנאי ו-ToString.
- אי־שינוי (Immutability)
- מצב האובייקט לא משתנה אחרי היצירה. "שינוי" מבוצע עם with — עותק חדש עם הערך המעודכן, והמקור נשאר שלם.