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

מדריך C# – תכנות מונחה עצמים: מחלקה אבסטרקטית

‏ • John Bryce

מחלקה אבסטרקטית הינה מחלקה אשר מהווה בסיס למחלקות אחרות, אך אין לנו באמת צורך באובייקטים ממנה בתוכנית.

  • בכדי ליצור מחלקה אבסטרקטית יש לכתוב abstract לפני שם ה- class
  • לא ניתן ליצור אובייקטים ממחלקה אבסטרקטית
  • ניתן ליצור ייחוס ממחלקה אבסטרקטית (בד"כ לצורכי פולימורפיזם)
  • מחלקה אבסטרקטית יכולה להכיל כל דבר שמחלקה רגילה יכולה להכיל
  • מחלקה אבסטרקטית יכולה (אבל לא חייבת) להכיל פונקציות אבסטרקטיות
  • לא ניתן לכתוב פונקציה אבסטרקטית במחלקה שהיא לא אבסטרקטית
  • פונקציה אבסטרקטית היא פונקציה שאין לה מימוש. היא נכתבת כהצהרה ללא גוף (כלומר ללא בלוק של פקודות)
  • כאשר יורשים מחלקה אבסטרקטית חובה לממש את כל הפונקציות האבסטרקטית שבה (אם יש)
  • המימוש של פונקציה אבסטרקטית הוא באמצעות מילת המפתח override

להלן דוגמא ליצירת מחלקה אבסטרקטית עם פונקציה אבסטרקטית:

 

  abstract class Shape
  {
    public abstract double GetArea();
  }

 

  class Circle : Shape
  {
    public double Radius { get; set; }

    public override double GetArea()
    {
      return Math.PI * Radius * Radius;
    }
  }

 

  class Program
  {
    static void Main(string[] args)
    {
      Shape b = new Circle() { Radius = 5 };
      Console.WriteLine(b.GetArea());
    }
  }

 

 

השוואה בין virtual ל- abstract

 

abstract

virtual

מימוש הפונקציה במחלקה

אין מימוש של הפונקציה – לא צריך להגדיר את גוף הפונקציה, רק כותרת.

יש לממש את הפונקציה (בדומה לפונקציה רגילה). משמש לפולימורפיזם.

מימוש הפונקציה במחלקות היורשות

חובה לממש במחלקות היורשות בצורה ישירה.

לא חובה לממש.

מיקום הפונקציה

במחלקה אבסטרקטית בלבד

בכל מחלקה

הצהרה

לא private (משום שאז הפונקציה לא תיראה במחלקות הנגזרות ולא נוכל לממש אותה)

תגיות: , ,

ליאור זמיר

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

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