כימוס – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
←‏דוגמה: -שינוי שמות המשתנים הפנמיים להדגשת שינוי המימוש
Yonidebot (שיחה | תרומות)
מ בוט החלפות: מסוים; ביניהם;
שורה 1:
'''כימוס''' (Encapsulation) הוא מאפיין חשוב ב[[תכנות מונחה עצמים]] המאפשר יצירת יחידת תוכנה בעלת [[ממשק (תכנות)|ממשק]] מוגדר לשאר חלקי התוכנה.
בשפות תכנות בעלות כימוס, אפשר להגדיר הרשאות גישה לאלמנטים שונים בתוכנה. לדוגמה, ניתן להגדיר שפונקציה מסויימתמסוימת ניתנת לגישה מכל מקום בקוד או רק מתוך הקוד של אותה יחידת תוכנה.
 
הכימוס מאפשר בניית תוכנה בצורה מודולרית. מכיוון שליחידת התוכנה ממשק מוגדר, שאר הקוד אינו מסתמך על המימוש הפנימי שלה. הדבר מאפשר שינוי של המימוש הפנימי ללא שינוי של שאר התוכנה.
שורה 57:
 
== דוגמאות מתחומים הנדסיים אחרים ==
למרות שכימוס הוא מונח מתחום התוכנה, הרעיון של הסתרת מימוש ויצירת ממשק מוגדר, אופינית לכל תחומי ההנדסה. לדוגמה, לגלגל של רכב משפחתי מסוג מסוייםמסוים, יש ממשק ידוע של חיבור לרכב (לדוגמה, ארבעה ברגים בגודל ומרחקים מוגדרים). ישנם מספר יצרני גלגלים שנבדלים בינהםביניהם בחומרים ובטכנולוגיה בה הם משתמשים. כל אותם גלגלים שומרים על אותו הממשק כלפי הרכב. העובדה שהם כולם עונים לאותו ממשק, היא זאת המאפשרת לבעל הרכב לבחור להרכיב כל אחד מהם.
 
דוגמה נוספת: טלפון ביתי. יש הרבה מאוד סוגים של טלפונים ביתיים אבל לכולם יש אותו חיבור לקו החיצוני (במקרים מסויימיםמסוימים יש מספר קטן של חיבורים אפשריים). הממשק של הטלפון כלפי השקע שבקיר מוגד היטב והוא זה שמאפשר למשתמשים לבחור את הטלפון החביב עליהם.  
 
נקודה חשובה בדוגמאות אלה היא שכל צד מסתמך רק על הגדרות הממשק ומשאיר את כל הפרטים האחרים כדרגות חופש. שקע הטלפון לדוגמה, מניח רק הנחות מסויימותמסוימות על צורת התקע ועל פרוטוקול התקשורת. הוא אינו מניח דבר על החומרים מהם עשוי הטלפון, אופן מימוש הפרוטוקול וכ'. אי הסתמכות על דבר מלבד הממשק מאפשר שינוי של כל דרגות החופש ללא צורך בשינוי של השקע עצמו.
 
== כימוס והורשה ==
כאמור, מטרת הכימוס היא להסתיר פרטי מימוש מקוד חיצוני. בהקשר זה, לא תמיד ברור אם קוד מחלקה יורשת נחשב פנימי או חיצוני. מצד אחד, ייתכן שקוד המחלקה היורשת נכתב על ידי מתכנת אחר שאינו בקיא בפרטי המימוש של מחלקת הבסיס. מצד שני, המשתנים של מחלקת הבסיס מהווים חלק מהמחלקה היורשת. שפות תכנות מסויימותמסוימות, מאפשרות שליטה על רמת הכימוס בייחס למחלקה יורשת. ב - Java וב - ++C לדוגמה, ניתן להגדיר אלמטים במחלקה כ protected וכ - private. למרות ששתי הרשאות הגישה האלה, מסתירות את המימוש הפנימי מקוד חיצוני, רק הראשונה איננה מסתירה אותו ממחלקות יורשות.