בנאי (מדעי המחשב) – הבדלי גרסאות
מ תיקון ועריכה קלילים. |
|||
שורה 41: | שורה 41: | ||
public: |
public: |
||
// בנאי שאינו מקבל פרמטרים |
|||
// a constructor who gets no parameters |
|||
Example() |
Example() |
||
{ |
{ |
||
שורה 47: | שורה 47: | ||
} |
} |
||
// |
// העמסה של בנאי |
||
Example(int data) |
Example(int data) |
||
{ |
{ |
||
שורה 65: | שורה 65: | ||
Example *b = new Example(4); |
Example *b = new Example(4); |
||
</div> |
</div> |
||
=== בשפת התכנות [[Python]] === |
=== בשפת התכנות [[Python]] === |
גרסה מ־10:25, 15 באפריל 2008
במדעי המחשב בכלל, ובתכנות מונחה עצמים בפרט, המושג Constructor (או בנאי בעברית) מתייחס לפונקציה או שיטה במחלקה שנקראת בכל פעם שנוצר מופע של המחלקה.
בנאי המחלקה דומה לכל שיטה אחרת, אולם לבנאי לא מוגדר ערך חזרה, והוא אינו ניתן להורשה. בנוסף לכך, שם הבנאי הוא בדרך כלל כשם המחלקה בה הוא נמצא, במטרה להבדיל אותו משאר השיטות.
למרות שברוב שפות התכנות מסופק לכל מחלקה שנכתבת בנאי ברירת מחדל (Default Constructor), אשר לא מקבל שום פרמטרים, ניתן לדרוס אותו (Override), ולכתוב בנאי ספציפי למחלקה, כפי שהמתכנת רואה לנכון. המתכנת ירצה לרוב לעשות כך כאשר הוא רוצה לאתחל את משתני המחלקה, או כאשר הוא רוצה להוסיף פונקציונליות לתהליך בניית המופע.
ברוב שפות התכנות, ניתן לבצע על הבנאים העמסה (Overloading - כתיבת מספר פונקציות בעלות אותו שם כך שהדבר היחיד שמבדיל ביניהם הוא הפרמטרים שהם מקבלים) ובכך ליצור מספר בנאים עבור קלטים שונים.
דוגמאות ל- Constructor
בשפת התכנות Java
public class Example { //definition of the constructor. public Example() { this(1); } //overloading a constructor 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);
בשפת התכנות Python
בשפת התכנות Python, שמו של הבנאי הוא תמיד __init__ , וכמו כל פונקציית מחלקה בפייתון, הפרמטר הראשון שהיא מקבלת חייב להיות מופע המחלקה הנוכחי.
class Example(object): def __init__(self): """ a constructor who gets no parameters except for the curret object """ self.data = 0 def __init__(self, a): """ an oveloaded constructor """ self.data = a
#Code somewhere else #Creating an Example object e = Example(4)