פייתון/פייתון גרסה 3/כימוס

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
קפיצה לניווט קפיצה לחיפוש

כימוס (Encapsulation, לעיתים הסתרת מידע) המאפשרת הסתרת המרכיבים הפנימיים של האובייקט כאשר גישה אליהם תתאפשר רק באמצעות המתודות של האובייקט המהוות את הממשק.

הכימוס מקשה על "משתמש חיצוני", דהינו כל רצף קידוד שאינו במחלקה (כגון דף import שמביא ערך) לגשת אל המידע שלנו.

שדה פנימי[עריכה]

בכדי למנוע מכל מתכנת שמגיע לשנות את ערך השדה נהוג להוסיף שני קווים תחתונים בין שם השדה למתודה ובכך למנוע גישה ישירה

class Point():
    def __init__(self, x, y):
        self.x = x
        self.y = y

point = Point(3,4)

print(point.x)
>>>3

אם נבצע כימוס:

class Point():
    def __init__(self, x, y):
        self.__x = x
        self.__y = y

point = Point(3,4)

print(point.x)
AttributeError: 'Point' object has no attribute 'x'

פונקצית get[עריכה]

פונקצית get תחזיר את הערך הכמוס.

class Point():
    def __init__(self, x, y):
        self.__x = x
        self.__y = y

    def get_x(self):
        return self.__x

point = Point(3,4)

print(point)
>>><__main__.Point object at 0x037822F0>

print(point.get_x())
>>>3

API[עריכה]

ממשק תכנות יישומים (באנגלית: Application Programming Interface; ראשי תיבות: API) הוא ערכה של ספריות קוד, פקודות, פונקציות ופרוצדורות מן המוכן, בהן יכולים המתכנתים לעשות שימוש פשוט, בלי להידרש לכתוב אותן בעצמם כדי שיוכלו להשתמש במידע של היישום שממנו הם רוצים להשתמש לטובת היישום שלהם.

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

ככל שה-API (היכולת של המתכנת להתקשר עם האוביקטיים) מקיף וגמיש יותר כך השליטה והאינטגרציה ביני לבינם תהא טובה יותר. חברות משקיעות כסף רב בבנייה ובשדרוג ה-API שלהם על מנת שיהיה יותר קל לשימוש, מתוך כוונה ש-API טוב יותר יזכה ליותר תשומת לב.

עבור מחלקות: כל מתודה של מחלקה מגדירות את ה-API שלה וכלל שהיא מקיפה וגמישה יותר כך השליטה והאינטרגציה טובה יותר.

חוזה[עריכה]

Edit-undo.svg

שקול לדלג על נושא זה

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



חוזה (design by contract) כולל בתוכו :

  1. API
  2. כימוס