Constructors
جزء من قسم البرمجة كائنية التوجه في رحلة C# على Coddy. الدرس 7 من 70.
الـ constructor هو method خاص يتم تشغيله عند إنشاء object. ويهيّئ properties وfields الخاصة بالكائن.
منشئ Default بدون parameters
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// المُنشئ الافتراضي
public Book()
{
Title = "Unknown";
Author = "Unknown";
}
}constructor مُعَلَّم بالـ parameters
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// منشئ مع معلمات
public Book(string title, string author)
{
Title = title;
Author = author;
}
}إعادة تحميل Constructor - منشئات متعددة
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;
}
}تسلسل Constructor باستخدام 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. يمكنك امتلاك عدة Constructors بمعلمات مختلفة (التحميل الزائد).
التحدي
متوسطأنشئ ثلاثة مُنشئات للصنف Product باستخدام التحميل الزائد للمُنشئات وتسلسلها:
- مُنشئ يحتوي على 3 معلمات: name وprice وstock
- مُنشئ يحتوي على معلمتين: 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أساسيات 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تدرّب بنفسك: مترجم C# عبر الإنترنت