تسجيل الدخول

مشاهدة النسخة كاملة : ما هي الفئات Classes في لغة السي شارب #C


Şøķåŕą
11-02-2022, 06:49 PM
تدعم لغة (#C) مفاهيم الوراثة وتعدد الأشكال، يمكن للفئة (class) أن ترث مباشرة من فئة أصل واحدة، ويمكنها تنفيذ أي عدد من الواجهات، تتطلب الطرق التي تتجاوز الطرق الافتراضية في فئة (class) أصل الكلمة الأساسية (override keyword) للتجاوز كطريقة لتجنب إعادة التعريف، يوفر (#C) فئة (class) السجل وأنواع بنية السجل، وهي أنواع الغرض منها تخزين قيم البيانات بشكل أساسي.



ما هي الفئات Classes في السي شارب


الفئات والكائنات Classes and objects


الفئات (classes): هي الأكثر من نوع أساسي في لغة البرمجة (#C)، الفئة هي عبارة عن بنية بيانات تجمع بين الحالة (الحقول) والإجراءات (الطرق وأعضاء الوظائف الأخرى) في وحدة واحدة، والتي تُعرف أيضًا باسم الكائنات (objects)، تدعم الفئات الوراثة وتعدد الأشكال و من خلالها يمكن للفئات المشتقة توسيع الفئات الأساسية وتخصيصها، يتم إنشاء فئات جديدة باستخدام تعريفات الفئة (class declarations)، حيث يبدأ (class declarations) من العنوان المحدد مثل :



سمات ومعدلات الفئة (class).


اسم الفئة (class).


الفئة الأساسية (base class) عند التوريث من فئة أساسية.


الواجهات المطبقة من قبل الفئة (class).


العنوان يتبع محتوى الفئة (class body) والذي يتكون من قائمة بإعلانات الأعضاء (member declarations) مكتوبة بين المحددات { and }، يُظهر الكود التالي إعلانًا عن فئة بسيطة تسمى (E3arabi):



public class Earabi
{
public int X { get; }
public int Y { get; }

public Point(int x, int y) => (X, Y) = (x, y);
}




يتم إنشاء مثيلات الفئات (classes) باستخدام عامل التشغيل الجديد (new operator)، الذي يخصص نموذج جديد، ويستدعي مُنشئًا (constructor) لتهيئة النموذج ثم يعيد الإشارة إلى النموذج، تقوم العبارات التالية بإنشاء نقطتين لكائنين (objects) وتخزين المراجع لتلك الكائنات في متغيرين:



var p1 = new Point(0, 0);

var p2 = new Point(10, 20);



يتم استعادة الذاكرة التي يشغلها الكائن (objects) تلقائيًا عندما يتعذر الوصول إلى الكائن.



كتابة المعاملات Type parameters


المعامِلات: هي قائمة بأسماء نوع معامِلات (Type parameters) محاطة بأقواس زاوية، حيث نكتب المعامِلات التي تتبع اسم الفئة (class)، يمكن بعد ذلك استخدام معامِلات النوع في نص إعلانات الفئة لتحديد أعضاء (body) الفئة، في المثال التالي معامِلات نوع الزوج هي (TFirst وTSecond):



public class Pair<TFirst, TSecond>
{
public TFirst First { get; }
public TSecond Second { get; }

public Pair(TFirst first, TSecond second) =>
(First, Second) = (first, second);
}




يُطلق على نوع الفئة (class) الذي تم الإعلان عنه لأخذ معلمات النوع نوع فئة عام (generic class)، يمكن أيضًا أن تكون أنواع البنية والواجهة والنوع عامة، عند استخدام الفئة العامة، يجب توفير وسيطات النوع لكل معاملة من معامِلات النوع (type parameters) مثال على ذلك:



var pair = new Pair<int, string>(1, “two”);
int i = pair.First; //TFirst int
string s = pair.Second; //TSecond string




النوع العام (generic type) الذي يحتوي على وسيطات النوع المقدمة مثل: (Pair <int ، string>) يسمى بالنوع المركب (constructed type).



ما هي الفئات الأساسية Base classes


قد يحدد اسم الفئة وكتابة المعامِلات واسم الفئة الأساسية بنقطتين، ويتم حذف مواصفات الفئة الأساسية (base class) التخصيص هو بالضبط مثل الاشتقاق من نوع الكائن (object)، في المثال التالي يوضح الفئة الأساسية (base class) لـ (Point3D هي Point)من المثال الأول، حيث أن الفئة الأساسية لـ (Point) هي كائن (object):



public class Point3D : Point
{
public int Z { get; set; }

public Point3D(int x, int y, int z) : base(x, y)
{
Z = z;
}
}




الفئة (class) ترث أعضاء فئتها الأساسية (base class) حيث الوراثة يعني أن الطبقة تحتوي ضمنيًا على جميع أعضاء صنفها الأساسي، لا ترث الفئة النموذج والمنشئ الثابت (static constructors) والصيغة النهائية، يمكن للفئة المشتقة (derived class) إضافة أعضاء (members) جدد إلى هؤلاء الأعضاء الذين ترثهم، لكن لا يمكنها إزالة تعريف العضو الموروث، في المثال السابق (Point3D) يرث أعضاء (X و Y) من (Point)، ويحتوي كل عضو (Point3D) على ثلاث خصائص: (X و Y و Z).



يوجد تحويل ضمني من نوع فئة إلى أي من أنواع فئاته الأساسية، يمكن لمتغير من نوع فئة أن يشير إلى مثيل (instance) لتلك الفئة أو مثيل (instance) لأي فئة مشتقة، على سبيل المثال، بالنظر إلى إعلامِات الفئة (class) السابقة، يمكن لمتغير من النوع (Point) أن يشير إما إلى (Point أو Point3D) معاً، مثال على ذلك:




Point a = new(10, 20);
Point b = new Point3D(10, 20, 30);



ما هي الهياكل Structs


تحدد الهياكل أنواع الفئات التي تدعم الوراثة وتعدد الأشكال، وأيضاً تمكنك من إنشاء سلوكيات معقدة تعتمد على التسلسل الهرمي للفئات المشتقة، فإن أنواع الهياكل هي أنواع أبسط هدفها الأساسي هو تخزين قيم البيانات، لا يمكن للهياكل التصريح عن نوع الأساسي (base type)، وأيضاً أنها مشتقة ضمنيًا من (System.ValueType) و لا يمكنك اشتقاق أنواع الهياكل الأخرى من نوع نفس البنية، لانها بشكل ضمني محجوزة، مثال على ذلك:



public struct Point
{
public double X { get; }
public double Y { get; }

public Point(double x, double y) => (X, Y) = (x, y);
}



ما هي الواجهات Interfaces


يتم تحديد واجهه عقدًا (contract) يمكن تنفيذه بواسطة الفئات والهيكل، أنت تحدد واجهة للإعلان المشتركة بين أنواع مختلفة، على سبيل المثال :تحدد الواجهة (System.Collections.Generic.IEnumerable <T>)، طريقة استخدام جميع العناصر في مجموعة و استخدامها مثل المصفوفة.



يمكن أن تحتوي الواجهة على أساليب والخصائص وأحداث ومفهرسات، تحدد فقط الأعضاء التي يجب توفرهم على واجهه بواسطة الفئات أو الهياكل، التي من خلالهم تنفذ الواجهة، قد تستخدم الواجهات الوراثة متعددة، على سبيل المثال: ترث الواجهة (IComboBox) من كل من (ITextBox) و(IListBox).



interface IControl
{
void Paint();
}

interface ITextBox : IControl
{
void SetText(string text);
}

interface IListBox : IControl
{
void SetItems(string[] items);
}

interface IComboBox : ITextBox, IListBox { }



يمكن للفئات (Classes) والهيكل (structs) تنفيذ واجهات متعددة، في المثال التالي: طبق الفئة (EditBox) كلاً من (IControl) و(IDataBound):



interface IDataBound
{
void Bind(Binder b);
}

public class EditBox : IControl, IDataBound
{
public void Paint() { }
public void Bind(Binder b) { }
}



عند تنفيذ الفئة أو الهيكل أو واجهة معينة، من تلك الفئة أو الهيكلية يمكن تحويلها ضمنيًا إلى نوع الواجهة ذاتها:




EditBox editBox = new();
IControl control = editBox;
IDataBound dataBound = editBox;



ما المقصود بالتعداد Enums


التعداد هو من يحدد نوع المجموعة من القيم الثابتة، مثال على ذلك الثوابت التي تحدد مجموعة الخضروات الجذرية المختلفة:



public enum SomeRootVegetable
{
HorseRadish,
Radish,
Turnip
}



يمكنك أيضًا تحديد تعداد لاستخدامه معًا على هيئة الأعلام، وهذا أعلام التالي يعلن مجموعة من الأعلام للفصول الأربعة، يمكن تطبيق أي مجموعة من المواسم، بما في ذلك قيمة “الكل” التي تشمل جميع المواسم:




[Flags]
public enum Seasons
{
None = 0,
Summer = 1,
Autumn = 2,
Winter = 4,
Spring = 8,
All = Summer | Autumn | Winter | Spring
}



يوضح المثال التالي أعلامات كل من التعدادات السابقة:



var turnip = SomeRootVegetable.Turnip;

var spring = Seasons.Spring;
var startingOnEquinox = Seasons.Spring | Seasons.Autumn;
var theYear = Seasons.All;



تحدثنا في هذا المقال عن الفئات في لغة السي الشارب، وكيفية استخدامها وتصنيفها وعن الهياكل والتعداد والواجهات وأنواعها و الفئات الأساسية.

نبضها مطيري
11-02-2022, 08:56 PM
طرح جميل
يعطيك العافيه

إِيزآبَيل♡
11-03-2022, 03:11 AM
اِخْتِيَار مُرْفَقٍ بفآئِدةَ تكُنوِلوُجِيةَ . .
كُلُّ اَلشُّكْرِ لِهَذَا اَلْإِمْتَاعِ . .
تَحِيَّتِي لِوهُجِ إُبدِآعَكّ . .

سمارا
11-03-2022, 01:35 PM
تسلم الأيادي على ما قدمت
ننتظر جديدك بكل شوق
تقبل مني أعطر التحايا

سمأأأأأرا

نور القمر
11-03-2022, 10:06 PM
انتقاء بآذخ الجمآل ,
بِ إنتظآر المزيد من هذآ الفيض ,
لك من الشكر وافره,~

خالد الشاعر
11-04-2022, 04:27 PM
موضوع رائع ومميز
طرحتى فابدعتى دمتى ودام عطائكِ
سلمتْ أناملكِ على الجلب المميز
اعذب التحايا لكى
خ ـالد الشاعر :x35:

غـُـلايےّ
11-04-2022, 09:44 PM
انتقاء بآذخ الجمآل ,
بِ إنتظآر المزيد من هذآ الفيض ,
لك من الشكر وافره,~
| ؛~

نبضها مطيري
11-05-2022, 02:18 AM
طرح جميل

نور القمر
11-05-2022, 09:13 PM
يعـطيك ربي العــافية على روعة الطرح
‏لا عـدمنا تميز انتقائك المميز للموضوعات
‏دُمْت ودام بحـر عطائك بما يطرح
‏بإنتظار القادم بشووق

‏همس
11-14-2022, 09:34 AM
آنتقاء مُكلل بِ الجمال
بِ آنتظار تألق آخر
لروحك عقد البيلسان

نور القمر
11-14-2022, 04:03 PM
إنتقاء ثري بالذائقه
سلمت ودام رقي ذوقك
بإنتظار القادم بشوق
كل الود لروحك

خاطري آضمـڪ
11-16-2022, 09:59 PM
جمال يعانق السماء كجمال الانتقاء
على الطرح الراقى
ابداع تميز تالق
يعطيك العافيه

رحيل
11-23-2022, 11:57 AM
شكرا للنشر الجميل
لروحك باقات النرجس











:rose:

رحيل
04-01-2023, 03:57 AM
شكرا لوافر العطاء

Şøķåŕą
10-28-2023, 04:58 AM
طرح جميل
يعطيك العافيه

شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 04:58 AM
شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود


:616:

Şøķåŕą
10-28-2023, 04:58 AM
اِخْتِيَار مُرْفَقٍ بفآئِدةَ تكُنوِلوُجِيةَ . .
كُلُّ اَلشُّكْرِ لِهَذَا اَلْإِمْتَاعِ . .
تَحِيَّتِي لِوهُجِ إُبدِآعَكّ . .

شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 04:58 AM
شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود


:j2:

Şøķåŕą
10-28-2023, 04:58 AM
تسلم الأيادي على ما قدمت
ننتظر جديدك بكل شوق
تقبل مني أعطر التحايا

سمأأأأأرا


شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 04:59 AM
انتقاء بآذخ الجمآل ,
بِ إنتظآر المزيد من هذآ الفيض ,
لك من الشكر وافره,~

شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 04:59 AM
شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 04:59 AM
موضوع رائع ومميز
طرحتى فابدعتى دمتى ودام عطائكِ
سلمتْ أناملكِ على الجلب المميز
اعذب التحايا لكى
خ ـالد الشاعر :x35:

شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 04:59 AM
انتقاء بآذخ الجمآل ,
بِ إنتظآر المزيد من هذآ الفيض ,
لك من الشكر وافره,~
| ؛~

شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 04:59 AM
شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود


:x21:

Şøķåŕą
10-28-2023, 05:00 AM
طرح جميل

شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 05:00 AM
يعـطيك ربي العــافية على روعة الطرح
‏لا عـدمنا تميز انتقائك المميز للموضوعات
‏دُمْت ودام بحـر عطائك بما يطرح
‏بإنتظار القادم بشووق

شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 05:00 AM
آنتقاء مُكلل بِ الجمال
بِ آنتظار تألق آخر
لروحك عقد البيلسان

شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 05:00 AM
إنتقاء ثري بالذائقه
سلمت ودام رقي ذوقك
بإنتظار القادم بشوق
كل الود لروحك







شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 05:01 AM
جمال يعانق السماء كجمال الانتقاء
على الطرح الراقى
ابداع تميز تالق
يعطيك العافيه

شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 05:01 AM
شكرا للنشر الجميل
لروحك باقات النرجس











:rose:

شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

Şøķåŕą
10-28-2023, 05:01 AM
شكرا لوافر العطاء

شكرا على المرور الكريم
عطر أرجاء متصفحي
بارك الله فيك
دمت بود

بنت العز
10-28-2023, 05:02 AM
طرح جميل
يعطيك العافيه

Şøķåŕą
11-19-2023, 06:53 PM
طرح جميل
يعطيك العافيه

شكراً لك
بإنتظار الجديد القادم
دمت بكل خير

نور القمر
02-05-2024, 02:34 PM
تسسسلم الايـآدي على روعه طرحك
الله يعطيك الف عافيه يـآرب
بانتظـآر جــديدك القــآدم
آحتـرآمي لك

إيلين
02-18-2024, 01:13 PM
-





:241:


موضوع مميز وجميل
مِنْ هنآ أقدمٌ لك بآقة وردْ ومحبة خآلصة لله تعآلىٌ
وَدوٍمآ نترٍقبٌ آلمَزٍيدْ
ودٍيٌ قبْلٌ رٍدْيٌ وسَلآإميٌ

حاء
10-04-2024, 04:32 AM
_


ذائقة مُترفة
سلم العطاء ودامت إشراقة الضياء
تحية تقدير مُعتّقة بـِ المسك ض2..!

Şøķåŕą
12-23-2024, 09:11 PM
شكراً لك
بإنتظار الجديد القادم
دمت بكل خير

Şøķåŕą
12-23-2024, 09:11 PM
إيلين

Şøķåŕą
12-23-2024, 09:11 PM
نور القمر

مثلي قليل
01-03-2025, 09:53 PM
يسلمو على الطرح المميز
يسعدك ربي ض2

Şøķåŕą
01-05-2025, 10:25 PM
شكراً لك
بإنتظار الجديد القادم
دمت بكل خير