בנאי (מדעי המחשב)
בתכנות, בנאי (באנגלית: 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);
ראו גם [עריכה]
הערות שוליים [עריכה]
- ^ על פי Concepts In Programming Languages, by John C. Mitchell