protected מול private.

../images/Emo41.gif protected מול private.

מתי אתם מחליטים להגביל חבר מחלקה (מאפיין, מתודה) רק עבור המחלקה. כי לפעמים אני "פוחד" לתת לחבר המחלקה את הprivate למקרה ואני אצטרך אותו במחלקה יורשת אפשרית בפיצ'רים שאני מוסיף ואז אצטרך לשנות את קוד המקור שזה יהיה protected.
 

vinney

Well-known member
המם...

אם אתה חושב שמחלקות יורשות יצטרכו את המשתנה הזה - תגדיר אותו PROTECTED. אם אתה מתכנן את המחלקה כך שהמשתנה הוא באמת פרטי ואין סיבה שבקוד שלא אתה כתבת יגעו בו - תעשה PRIVATE.
 

ייוניי

New member
protected is dangerous

אחד הדברים המסוכנים שאתה רוצה למנוע בכל מחיר הוא שמישהו שמתשתמש בקוד שלך (סביר שזה יהיה אתה) יוכל לגרום לכך שקוד שכתבת לא יעבוד כמו שצריך. שימוש ב protected הוא סכנה אמיתית למצב שכזה ולכן צריך להימנע ממנו בכל מחיר. המצב היחיד שבו הייתי שוקל להשתמש ב protected הוא במסגרת של מחלקת בסיס אבסטרקטית שמגדירה מתודות פנימיות שעל המחלקות שיורשות ממנה לממש (ראה factory method pattern למשל).
 

hg1979

New member
תראה

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

itzikbs

New member
אם אתה "מפחד"

אם אתה "מפחד" כדבריך כנראה שהתכנון שלך אולי טוב אבל לא לגמרי טוב ... בכל מקרה יש על זה מליוני מאמרים , אבל הזהר לך משום שהיום יש האומרים ש: Inheritance is evil
 

xprt

New member
תמיד פרטי

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