בנאי (מדעי המחשב)

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

בתכנות, בנאיאנגלית: constructor, לעתים נכתב בקיצור: ctor) הוא רכיב תוכנה היוצר מופע (instance) חדש של מבנה גנרי כלשהו. בתכנות מונחה-עצמים מדובר בפונקציה או מתודה במחלקה שנקראת בכל פעם שנוצר מופע של המחלקה, והיא זו שיוצרת אותו. דוגמה אחרת לבנאי היא הטיפוס list בשפת ML שיוצר טיפוס חדש מטיפוסים פשוטים יותר, כגון list of int שהיא רשימה של מספרים שלמים‏[1].

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

למרות שברוב שפות התכנות לכל מחלקה שנכתבת מסופק בנאי ברירת מחדל (default constructor) אשר לא מקבל שום ארגומנטים, ניתן לדרוס אותו (override), ולכתוב בנאי ספציפי למחלקה, כפי שהמתכנת רואה לנכון. לרוב, המתכנת ירצה לעשות כך כאשר הוא רוצה לאתחל את משתני המחלקה, או כאשר הוא רוצה להוסיף פונקציונליות לתהליך בניית המופע.

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

דוגמאות ל- Constructor[עריכת קוד מקור | עריכה]

בשפת התכנות Java[עריכת קוד מקור | עריכה]

public class Example 
{
  //הגדרת הבנאי  
  public Example()
  {
     this(1);
  }
 
  //העמסת הבנאי
  public Example(int input)
  {
     data = input;
  }
 
  //declaration of instance variable(s).
  private int data;
}
//code somewhere else
//instantiating an object with the above constructor
Example e = new Example(42);

בשפת התכנות ++C[עריכת קוד מקור | עריכה]

class Example {
public:

  // בנאי שאינו מקבל פרמטרים
  Example()
  {
    data = 0;
  }
 
  // העמסה של בנאי
  Example(int data)
  {
    this->data = data;
  }
    
private:

  int data;
};
// Code somewhere else
// Instance an object on the stack with the above constructor
Example a(4);

// Instance one on the heap
Example *b = new Example(4);

ראו גם[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ על פי Concepts In Programming Languages, by John C. Mitchell