Constructors
جزء من قسم Object Oriented Programming في رحلة C# على Coddy — الدرس 7 من 70.
المُنشئ (constructor) هو دالة (method) خاصة يتم تنفيذها عند إنشاء كائن. يقوم بتهيئة خصائص وحقول الكائن.
المُنشئ الافتراضي بدون معاملات
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);المشيدات (Constructors) لها نفس اسم الفئة (class) وليس لها نوع إرجاع. يتم تشغيلها تلقائياً عند استخدام الكلمة المفتاحية new. يمكنك الحصول على مشيدات متعددة بمعاملات مختلفة (overloading).
التحدي
متوسطقم بإنشاء ثلاثة مشيدات لفئة Product باستخدام التحميل الزائد للمشيدات (constructor overloading) والتسلسل (chaining):
- مشيد بـ 3 معاملات: name، و price، و stock
- مشيد بمعاملين: name و price (القيمة الافتراضية لـ stock هي 0)
- مشيد افتراضي بدون معاملات (name = "Unknown"، و price = 0، و stock = 0)
استخدم تسلسل المشيدات مع this لتجنب تكرار الكود.
ورقة مرجعية
الـ constructor (المُنشئ) هو طريقة خاصة (method) يتم تشغيلها عند إنشاء كائن (object). يقوم بتهيئة خصائص الكائن.
تمتلك المُنشئات نفس اسم الفئة (class) وليس لها نوع إرجاع (return type). يتم تشغيلها تلقائياً عند استخدام الكلمة المفتاحية new.
المُنشئ الافتراضي (Default constructor) بدون معاملات (parameters):
public class Book
{
public string Title { get; set; }
public Book()
{
Title = "Unknown";
}
}المُنشئ ذو المعاملات (Parameterized constructor):
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public Book(string title, string author)
{
Title = title;
Author = author;
}
}تحميل المُنشئ بشكل زائد (Constructor overloading) - مُنشئات متعددة بمعاملات مختلفة:
public class Book
{
public string Title { get; set; }
public int Pages { get; set; }
public Book(string title)
{
Title = title;
Pages = 0;
}
public Book(string title, int pages)
{
Title = title;
Pages = pages;
}
}تسلسل المُنشئات (Constructor chaining) باستخدام this لتجنب تكرار الكود:
public class Book
{
public string Title { get; set; }
public int Pages { get; set; }
public Book(string title, int pages)
{
Title = title;
Pages = pages;
}
public Book(string title) : this(title, 0)
{
}
}إنشاء كائنات باستخدام مُنشئات مختلفة:
Book book1 = new Book("1984", "George Orwell");
Book book2 = new Book("Harry Potter", "J.K. Rowling", 500);جرّب بنفسك
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})");
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
1أساسيات OOP
الملفات الخارجيةNamespaces والتوجيهاتمقدمة في Classes و Objectsالكلمة المفتاحية 'this'Methods والمعاملاتFields مقابل PropertiesConstructorsObject Initializersمراجعة - آلة حاسبة بسيطة4الوراثة
صيغة الوراثة الأساسية (:)الكلمة المفتاحية 'base'الكلمات المفتاحية Virtual و Overrideالأصناف المختومة (Sealed Classes)الفئة الأساسية 'object'مراجعة - هيكلية الموظفين7ميزات متقدمة
تحميل العوامل (Operator Overloading)المفهرسات (Indexers (this[]))إعادة تعريف ()ToStringدوال التوسعة (Extension Methods)ملخص - Custom List2الخصائص والأعضاء الساكنة (Static Members)
الخصائص المطبقة تلقائيًا (Auto-Implemented Properties)خصائص القراءة فقط والكتابة فقطالحقول والدوال الساكنة (Static)الفئات الساكنة (Static Classes)الأعضاء ذات البنية التعبيرية (Expression-Bodied Members)5تعدد الأشكال والواجهات (Polymorphism & Interfaces)
تعدد الأشكال: وقت التجميع مقابل وقت التشغيلالواجهة مقابل الفئة المجردة (Abstract Class)الواجهات المتعددةالواجهات الصريحةUpcasting و Downcastingملخص - حاسبة الأشكال8مفاهيم البرمجة كائنية التوجه (OOP) المتقدمة
التركيب بدلاً من الوراثةالـ Generics (الأصناف والدوال)الـ Delegates والأحداثالـ Attributes والـ Reflectionواجهة IDisposable وجملة usingأساسيات Dependency Injection