Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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).

challenge icon

التحدي

متوسط

قم بإنشاء ثلاثة مشيدات لفئة 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})");
    }
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming