אתחול אובייקטים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-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# אונליין