בנאים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C# של Coddy. שיעור 7 מתוך 70.
בנאי הוא מתודה מיוחדת שפועלת כשאתה יוצר אובייקט. היא מאתחלת את המאפיינים והשדות של האובייקט.
בנאי ברירת מחדל ללא פרמטרים
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// בנאי ברירת מחדל
public Book()
{
Title = "Unknown";
Author = "Unknown";
}
}בנאי עם פרמטרים
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// בנאי עם פרמטרים
public Book(string title, string author)
{
Title = title;
Author = author;
}
}העמסת בנאים – בנאים מרובים
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public int Pages { get; set; }
// בנאי עם שני פרמטרים
public Book(string title, string author)
{
Title = title;
Author = author;
Pages = 0;
}
// בנאי עם שלושה פרמטרים
public Book(string title, string author, int pages)
{
Title = title;
Author = author;
Pages = pages;
}
}שרשור בנאים עם this
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public int Pages { get; set; }
// הבנאי הראשי
public Book(string title, string author, int pages)
{
Title = title;
Author = author;
Pages = pages;
}
// קורא לבנאי הראשי עם ערך ברירת מחדל למספר העמודים
public Book(string title, string author) : this(title, author, 0)
{
}
}יצירת אובייקטים באמצעות בנאים שונים
Book book1 = new Book("1984", "George Orwell");
Book book2 = new Book("Harry Potter", "J.K. Rowling", 500);לבנאים יש שם זהה לשם המחלקה ואין להם סוג החזרה. הם מופעלים אוטומטית כשמשתמשים במילת המפתח new. אפשר להגדיר כמה בנאים עם פרמטרים שונים (העמסת יתר).
אתגר
בינוניצרו שלושה בנאים למחלקה Product באמצעות העמסת בנאים ושרשור בנאים:
- בנאי עם 3 פרמטרים: name, price ו-stock
- בנאי עם 2 פרמטרים: name ו-price (הערך של stock כברירת מחדל הוא 0)
- בנאי ברירת מחדל ללא פרמטרים (name = "Unknown", price = 0, stock = 0)
השתמשו בשרשור בנאים עם this כדי להימנע מכפילות קוד.
נסו בעצמכם
using System;
class Program
{
static void Main()
{
string name = Console.ReadLine();
decimal price = decimal.Parse(Console.ReadLine());
int stock = int.Parse(Console.ReadLine());
Product product1 = new Product(name, price, stock);
Product product2 = new Product();
Product product3 = new Product("Keyboard", 79.99m);
Console.WriteLine($"Product 1: {product1.Name} - ${product1.Price} (Stock: {product1.Stock})");
Console.WriteLine($"Product 2: {product2.Name} - ${product2.Price} (Stock: {product2.Stock})");
Console.WriteLine($"Product 3: {product3.Name} - ${product3.Price} (Stock: {product3.Stock})");
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםמרחבי שמות והנחיותמבוא למחלקות ולאובייקטיםמילת המפתח 'this'מתודות ופרמטריםשדות לעומת מאפייניםבנאיםאתחול אובייקטיםסיכום – מחשבון פשוט4ירושה
תחביר ירושה בסיסית (:)מילת המפתח 'base'מילות המפתח Virtual ו-Overrideמחלקות Sealedמחלקת הבסיס 'object'סיכום – היררכיית עובדים7תכונות מתקדמות
העמסת אופרטוריםאינדקסרים (this[])דריסת ToString()מתודות הרחבהסיכום – רשימה מותאמת אישית2מאפיינים וחברים סטטיים
מאפיינים במימוש אוטומטימאפיינים לקריאה בלבד ולכתיבה בלבדשדות ומתודות סטטייםמחלקות סטטיותחברים עם גוף ביטוי5פולימורפיזם וממשקים
פולימורפיזם בזמן קומפילציה לעומת בזמן ריצהממשק לעומת מחלקה מופשטתממשקים מרוביםממשקים מפורשיםהמרה כלפי מעלה והמרה כלפי מטהחזרה: מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה במקום ירושהGenerics (מחלקות ומתודות)נציגים ואירועיםמאפיינים ורפלקציהIDisposable והצהרת usingיסודות הזרקת תלויותתרגלו בעצמכם: קומפיילר C# אונליין