
readonly: שדה שמקבל ערך רק בזמן היצירה, ואי אפשר לשנות אותו אחר כך.Person עם שם פרטי, שם משפחה ותעודת זהות. השם יכול להשתנות, למשל בעת נישואין, אבל תעודת הזהות לא משתנה.public readonly string ID; מאפשר להכניס את הערך רק בבנאי או בשורת ההגדרה. כל ניסיון לשנות אותו מחוץ לבנאי נכשל בקומפילציה.Point עם x ו-y יכולה להשתמש ב-readonly, אם רוצים שהערכים לא ישתנו אחרי היצירה. ערך לשדה readonly אפשר לתת גם בשורת ההגדרה שלו.הטקסט המלא של הדקות הראשונות בהרצאה «משתנים לקריאה בלבד - readonly» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו מגיעים לכלי נוסף שקיים לנו כאשר אנחנו מתעסקים עם מחלקות באובג'קט אוריינטד והכלי הזה זה פשוט המילה השמורה read-only. בואו נסתכל מה זה אומר. בואו נניח שאנחנו רוצים להתעסק עם אנשים בתוכנית שלנו.
כלומר, כל מיני אנשים או תפקידים, נניח לקוחות, ספקים וכו'. ואנחנו רוצים לייצג ישות כזאת שמתארת לנו בן אדם. אז אנחנו יכולים לייצג את זה על ידי קלאס ולכתוב מחלקה שנקראת person.
נניח בן אדם, מה יש לבן אדם מבחינתנו? לבן אדם יש כמובן שם פרטי, לבן אדם יש שם משפחה ולבן אדם יש תעודת זהות. אז בואו נגדיר פה public string first name, public string last name ו-public string ID. אוקיי, אז קודם כל למה תעודת הזהות זה סטרינג במקרה הזה?
תעודת הזהות זה סטרינג בגלל שיש אפס בתחילת המספר לפעמים ואנחנו לא רוצים לאבד את האפס הזה אם זה היה אינטג'ל. אז נהוג שתעודת זהות זה סטרינג.
ואנחנו רוצים עכשיו ללכת ולבצע פונקציה שמציגה את הנתונים. בואו נכתוב פה פונקציה שמציגה לנו first name, פונקציה שמציגה לנו את ה-last name, פונקציה שמציגה לנו את תעודת הזהות.
בואו נבנה קונסטרקטור ריק, קונסטרקטור שמקבל את כל הפרמטרים, ומהתחלת המשתנים first name עם f גדולה שווה first name עם f קטנה last name last name ו-id id וכעת סיימנו לבנות את המחלקה ואנחנו רוצים לגשת ולבנות אובייקט ממנה אז יש לנו פה את הפרוגרם נשים את המחלקה ליד סגור את הסלושן אקספלורר ונבנה אובייקט בן אדם
person my person שווה new person וניתן לו ערכים ניתן לו את מוישה כהן ותעודת זהות שהיא תעודת זהות שיכולה להיות חוקית בארץ.
אוקיי, עכשיו אנחנו מציגים את הפרטים שלו, מי פרסון פרינט, רק בשביל לראות שהכל בסדר, ואנחנו רואים שכל הפרטים מוצגים על המסך. עכשיו יכול להיות שבמהלך חיי התוכנית הבן אדם הזה החליט לשנות את השם משפחה.
זה יהיה יותר הגיוני לדוגמה אם הבן אדם הזה זה בעצם בחורה שהתחתנה, ועכשיו היא הולכת לשנות את השם משפחה מדנה כהן לדנה לוי. אז מה בעצם אנחנו רוצים לעשות?
my person. last name שווה לווי ויכול להיות שאותה בחורה גם רוצה לשנות את השם הפרטי שלה במהלך חיי התוכנית ובמקום דנה היא רוצה בעצם דנית יש אנשים שמשנים את השם הפרטי שלהם זה גם בסדר אבל מה בקשר לתעודת זהות האם זה יהיה הגיוני שניתן יהיה לשנות את התעודת הזהות לתעודת זהות אחרת אז כמובן אין דבר כזה
ואדם לא יכול לשנות את התעודת זהות שלו ואנחנו בעצם רוצים למנוע מצב שמישהו משנה את התעודת זהות. זאת אומרת, ברגע שנתנו תעודת זהות לבן אדם, מבחינתנו נתון הזה הוא קבוע מעכשיו ועד סוף התוכנית.
אתם יכולים להגיד, רגע, ומה קורה אם מישהו טועה ומכניס תעודת זהות אחרת? אז במקרה הזה אין מה לעשות, צריכים לזרוק את האובייקט וליצור אובייקט חדש.
יש גם שיטות לטפל בזה. אבל רגע מבחינתנו אנחנו רואים שכן יש אפשרות לשנות את כל אחד מהערכים של ה-data members שימו לב שהצלחנו לשנות את כל הערכים מדנה כהן עם תעודת זהות אחת לדנית לוי עם תעודת זהות אחרת וזה כמובן משהו שלא כל כך נכון לבצע אז בשביל
לחסום את האפשרות הזאת