כימוס
ויקיפדיה האנציקלופדיה encyclopedia
כּימוּס[1] (או אֶנְקַפְּסוּלַצְיָה, מאנגלית: Encapsulation) הוא מאפיין חשוב בתכנות ובמיוחד בתכנות מונחה-עצמים המתייחס לאריזה של מידע עם הפעולות שפועלות על המידע הזה כיחידה אחת (קפסולה, או כמוסה בעברית)[2]. כימוס מאפשר יצירת יחידת תוכנה (מודול) בעלת ממשק מוגדר לשאר חלקי התוכנה. בדר"כ כימוס יכלול גם הסתרת מידע[3], דהיינו, הגבלה מפני גישה ישירה לחלק מרכיבי האובייקט שאינם שייכים לממשק המוגדר, כך שניתן לשנות רכיבים אלו מבלי שיהיה צורך לשנות את שאר חלקי התוכנה. בדרך כלל בשפות תכנות בעלות כימוס, אפשר להגדיר הרשאות גישה לאלמנטים שונים ביחידה. לדוגמה, ניתן להגדיר שפונקציה מסוימת ניתנת לגישה מכל מקום בקוד או רק מתוך הקוד של אותה יחידת תוכנה.
הכימוס בא לענות על מספר בעיות: 1) חלקי קוד שניתן לראותם כחלק ממושג אחד מפוזרים במקומות רבים, כך שקשה להבין את טיפול הקוד במושג וקשה לשנות אותו. וכן קשה להעביר אותו לשימוש בפרויקטים אחרים. 2) בעיה של חוסר תיחום של קוד בתכנות פרוצדורלי, שבו משתנה אחד היה נגיש לכל מרחב הקוד, וכאשר נעשה בו שינוי או הוספו פונקציות שהתייחסו למשתנה שכבר קיים, הדבר גרם לכך שהקוד השתנה ללא בקרה, והשפיע על פונקציות אחרות ללא כל כוונה. הכימוס מסייע בבניית תוכנה בצורה מודולרית. מכיוון שליחידת התוכנה ממשק מוגדר, שאר הקוד אינו מסתמך על המימוש הפנימי שלה. הדבר מאפשר שינוי של המימוש הפנימי ללא שינוי של שאר התוכנה. יתרון נוסף של שימוש בכימוס הוא האפשרות להשתמש ביחידות תוכנה סגורות בלי צורך להבין את פרטי המימוש. יחידת התוכנה משמשת מעין "קופסה שחורה" או "קפסולה" עם מתגים. המשתמש צריך ללמוד רק איך להפעיל את המתגים ואינו צריך לדעת מה יש בתוך הקופסה.