אתחול אובייקטים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C# של Coddy. שיעור 8 מתוך 70.
מאפשרי אתחול של אובייקטים מספקים דרך נוחה להגדיר ערכי מאפיינים בעת יצירת אובייקט, בלי לקרוא לבנאי עם פרמטרים רבים.
הדרך המסורתית באמצעות בנאי
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}
Person person = new Person();
person.Name = "Alice";
person.Age = 25;
person.City = "New York";שימוש בתחביר אתחול אובייקטים
Person person = new Person
{
Name = "Alice",
Age = 25,
City = "New York"
};אתחול אובייקטים באמצעות בנאים
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
public Person(string name)
{
Name = name;
}
}
// הבנאי מגדיר את Name, והמאתחל מגדיר מאפיינים אחרים
Person person = new Person("Bob")
{
Age = 30,
City = "London"
};אתחולים מקוננים של אובייקטים
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
public class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
Person person = new Person
{
Name = "Charlie",
Address = new Address
{
Street = "123 Main St",
City = "Boston"
}
};יצירת מספר אובייקטים באמצעות אתחולים
Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };
Person person3 = new Person { Name = "Charlie", Age = 35 };אתחול אובייקטים הופך את הקוד לנקי וקריא יותר. המאפיינים מוגדרים לאחר שהבנאי רץ. אפשר להשתמש באתחולים עם פרמטרים לבנאי או בלעדיהם, וכך ליצור אובייקטים בצורה גמישה ותמציתית.
אתגר
בינוניצרו שלושה אובייקטים מסוג Student באמצעות דרכים שונות לאתחול אובייקטים:
- student1: השתמשו בבנאי ברירת המחדל עם מאתחל אובייקט כדי להגדיר את כל המאפיינים (Name, StudentId, Major, GPA) מתוך הקלט
- student2: השתמשו במאתחל אובייקט כדי להגדיר רק Name = "Bob" ו-Major = "Engineering"
- student3: השתמשו בבנאי עם "Charlie" כפרמטר, ואז השתמשו במאתחל אובייקט כדי להגדיר StudentId = 54321, Major = "Mathematics", GPA = 3.5
נסו בעצמכם
using System;
class Program
{
static void Main()
{
string name = Console.ReadLine();
int studentId = int.Parse(Console.ReadLine());
string major = Console.ReadLine();
double gpa = double.Parse(Console.ReadLine());
// TODO: צרו את student1 באמצעות מאתחל אובייקט עם כל המאפיינים
// השתמשו בבנאי ברירת המחדל והגדירו את Name, StudentId, Major ו-GPA
// TODO: צרו את student2 באמצעות מאתחל אובייקט עם Name ו-Major בלבד
// Name צריך להיות "Bob", ו-Major צריך להיות "Engineering"
// TODO: צרו את student3 באמצעות הבנאי עם פרמטר השם "Charlie"
// לאחר מכן השתמשו במאתחל אובייקט כדי להגדיר StudentId = 54321, Major = "Mathematics", GPA = 3.5
Console.WriteLine($"Student 1: {student1.Name} (ID: {student1.StudentId}) - {student1.Major}, GPA: {student1.GPA}");
Console.WriteLine($"Student 2: {student2.Name} (ID: {student2.StudentId}) - {student2.Major}, GPA: {student2.GPA}");
Console.WriteLine($"Student 3: {student3.Name} (ID: {student3.StudentId}) - {student3.Major}, GPA: {student3.GPA}");
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםמרחבי שמות והנחיותמבוא למחלקות ולאובייקטיםמילת המפתח 'this'מתודות ופרמטריםשדות לעומת מאפייניםבנאיםאתחול אובייקטיםסיכום – מחשבון פשוט4ירושה
תחביר ירושה בסיסית (:)מילת המפתח 'base'מילות המפתח Virtual ו-Overrideמחלקות Sealedמחלקת הבסיס 'object'סיכום – היררכיית עובדים7תכונות מתקדמות
העמסת אופרטוריםאינדקסרים (this[])דריסת ToString()מתודות הרחבהסיכום – רשימה מותאמת אישית2מאפיינים וחברים סטטיים
מאפיינים במימוש אוטומטימאפיינים לקריאה בלבד ולכתיבה בלבדשדות ומתודות סטטייםמחלקות סטטיותחברים עם גוף ביטוי5פולימורפיזם וממשקים
פולימורפיזם בזמן קומפילציה לעומת בזמן ריצהממשק לעומת מחלקה מופשטתממשקים מרוביםממשקים מפורשיםהמרה כלפי מעלה והמרה כלפי מטהחזרה: מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה במקום ירושהGenerics (מחלקות ומתודות)נציגים ואירועיםמאפיינים ורפלקציהIDisposable והצהרת usingיסודות הזרקת תלויותתרגלו בעצמכם: קומפיילר C# אונליין