אולי לא ממש "הנדסת תוכנה" אבל...
בדיוק סיימתי לכתוב תשתית קטנה שלדעתי ממחישה יפה את היתרונות של OOP אז החלטתי לפרסם לכם אותה (זה רק 200 שורות קוד לא להיבהל...). המטרה שלי היתה לאפשר להציג ערך מחרוזתי על גבי פקדים ותצוגות שונות ומכיוון שאני כותב אפליקציה ויזואלית הערך צריך לרענן את כל התצוגות שלו כל פעם שהוא מתעדכן (מלבד התצוגה שבה המשתמש מעדכן אותו כרגע), לאפשר לתצוגות מסויימות לערוך אותו וכתוספת לאפשר מצב שבו אוכל "לנתק" אותו ממספר תצוגות כך שיפסיק לרענן אותן (אל תשאלו למה אבל זה מה שאני צריך). אז אם אין לכם כוח לקרוא את הקוד של SimpleTextValue עצמו (באמת לא ממש מעניין) אתם מוזמנים לקפוץ הישר לבדיקה שלמטה ולראות איך משתמשים בו - זה הקטע המעניין. למעשה כל מה שתצוגה מסויימת צריכה לעשות על מנת לעבוד עם SimpleTextValue זה לחשוף ממשק קטן של SimpleTextView (בחלק מהמקרים מספיק שתממש רק מתודה אחת מתוך השלוש). מחר בבוקר אני יוצר מחלקות מתאמות ל TextBox, Label, TreeNode וכל שאר העולם בלי מאמץ. תהנו... נ.ב. ואם מישהו כותב לי תגובה בסגנון: "אבל יש Data Binding של ה Framework..." שיזהר!
בדיוק סיימתי לכתוב תשתית קטנה שלדעתי ממחישה יפה את היתרונות של OOP אז החלטתי לפרסם לכם אותה (זה רק 200 שורות קוד לא להיבהל...). המטרה שלי היתה לאפשר להציג ערך מחרוזתי על גבי פקדים ותצוגות שונות ומכיוון שאני כותב אפליקציה ויזואלית הערך צריך לרענן את כל התצוגות שלו כל פעם שהוא מתעדכן (מלבד התצוגה שבה המשתמש מעדכן אותו כרגע), לאפשר לתצוגות מסויימות לערוך אותו וכתוספת לאפשר מצב שבו אוכל "לנתק" אותו ממספר תצוגות כך שיפסיק לרענן אותן (אל תשאלו למה אבל זה מה שאני צריך). אז אם אין לכם כוח לקרוא את הקוד של SimpleTextValue עצמו (באמת לא ממש מעניין) אתם מוזמנים לקפוץ הישר לבדיקה שלמטה ולראות איך משתמשים בו - זה הקטע המעניין. למעשה כל מה שתצוגה מסויימת צריכה לעשות על מנת לעבוד עם SimpleTextValue זה לחשוף ממשק קטן של SimpleTextView (בחלק מהמקרים מספיק שתממש רק מתודה אחת מתוך השלוש). מחר בבוקר אני יוצר מחלקות מתאמות ל TextBox, Label, TreeNode וכל שאר העולם בלי מאמץ. תהנו... נ.ב. ואם מישהו כותב לי תגובה בסגנון: "אבל יש Data Binding של ה Framework..." שיזהר!