וובמאסטר - תיכנות ובניית אתרים

מדריך C# - תכנות מונחה עצמים: שימוש ב- Properties

ליאור זמיר ,‏ ג'ון ברייס הדרכה‏ ‏/‏ 8 פברואר, 2011
F+
F-

Property הינו מנגנון המאפשר לממש את עקרון הכימוס (encapsulation). הרעיון הוא להסתיר את המשתנים ולחשוף אותם דרך מנגנון סינון ובקרה לצורכי בדיקת תקינות המידע. בכדי להסתיר את המשתנה יש להגדיר אותו כ- private ואת ה- Property שמאפשר את הגישה למשתנה יש להגדיר כ- public. ניתן לגשת למשתנה private אך ורק מתוך המחלקה.

 

Light bulbנהוג ששם המשתנה יתחיל באות קטנה ושם ה- property יהיה אותו השם, אך יתחיל באות גדולה.

 

  class Person
  {
    //Data members:

    private string firstName;
    private string lastName;
    private int id;

    //Properties:

    public string FirstName
    {
      get { return firstName; }
      set { firstName = value; }
    }

    public string LastName
    {
      get { return lastName; }
      set { lastName = value; }
    }

    public int Id
    {
      get { return id; }
      set { id = value; }
    }

    //Methods:

    public void Print()
    {
      Console.WriteLine("Name: {0} {1}", firstName, lastName);
    }
  }

שימו לב שאין צורך לשנות את הפונקציה Print כי היא נמצאת בתוך המחלקה ולכן יכולה לגשת למשתני ה – private. לעומת זאת הקוד שעובד עם האובייקט חייב להשתנות כי אין לו גישה למשתנים:

      Person p = new Person();

      p.FirstName = "Lior";
      p.LastName = "Zamir";
      p.Id = 123456789;

      p.Print();

כאשר נכניס ערך לתוך ה- property יופעל החלק של ה - set:

      p.FirstName = "Lior";

וכאשר נקבל את הערך מה- property יופעל החלק של ה - get:

      string name = p.FirstName;

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

    public int Id
    {
      get { return id; }
      set
      {
        if (value > 999999999)
          return;

        id = value;
      }
    }

הערה:

בשלב זה יש לבצע את הבדיקות ב- property ללא שימוש במנגנון Exception Handling, שילמד בהמשך.

ניתן ליצור גם Property שיכיל רק אחד מהחלקים get, set אם נרצה שלא לאפשר השמה או קבלה של הערך.

לדוגמא readonly property, אשר מאפשר רק לקבל את הערך, אך לא מאפשר לבצע השמה:

    public int Id
    {
      get { return id; }
    }

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

p.Id = 123456789;

ליאור זמיר, ג'ון ברייס הדרכה

כיום אני ה- Webmaster של תוכנית החדשנות של HPE Software.
לפני כן, הייתי מנהל תחום Webmaster ומרצה בכיר בג'ון-ברייס (במשך 9 שנים) בקורסים לפיתוח ותיכנות באמצעות Microsoft .NET, מולטימדיה, בניית אתרי אינטרנט ואינטראנט. פיתוח הדרכה ומתן ייעוץ טכנולוגי.
תגיות: C#‏  /  OOP‏  /  Visual Studio‏  

תגובות בפייסבוק

תגובות למאמר



עוד במדריך

תגיות פופולאריות

X
הצטרף לעמוד שלנו בפייסבוק להישאר מעודכן!
וובמאסטר © כל הזכויות שמורות