מדריך C# מונחה עצמים

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

‏ • John Bryce

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, מולטימדיה, בניית אתרי אינטרנט ואינטראנט. פיתוח הדרכה ומתן ייעוץ טכנולוגי.

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

חדש! אחסון אתרים של וובמאסטר

שירות אחסון אתרים
המקצועי של וובמאסטר!

מומחים באירוח אתרי
WordPress, Joomla, Drupal

  • שרתי לינוקס עם CloudLinux, LiteSpeed
  • 1GB דיסק SSD, 10GB תעבורה חודשית
  • ממשק ניהול cPanel, תעודת SSL חינם

עכשיו במחיר היכרות:
רק 420 ש"ח לשנה!