تصميم الفئات واستخدامها
في البرمجة الموجهة للكائنات (OOP)، الفئات هي اللبنات الأساسية للتطبيق. فهم العلاقة بين الفئات والعناصر أمر ضروري.
- الفئات هي المخططات التي يستخدمها المطورون لتعريف خصائص (البيانات) والأساليب (السلوكيات) للكائنات. توفر الفئات طريقة لتغليف البيانات والسلوك، ما يسهل تنظيم التعليمات البرمجية وإدارتها.
- الكائنات هي مثيلات للفئات. عند إنشاء مثيل لفئة، يتم إنشاء كائن في الذاكرة. كل كائن له مجموعة خاصة به من الخصائص والأساليب، ولكنه يشارك نفس البنية المحددة بواسطة الفئة.
يمكن أن يساعدك فحص الكائنات في العالم الحقيقي من حولك على فهم كيفية عمل الفئات والعناصر في البرمجة. الكائنات في العالم الحقيقي لها سمات (خصائص) وسلوكيات (أساليب) تحدد الغرض منها ووظائفها. على سبيل المثال، السيارة هي عنصر له سمات مثل صنع وانموذج ولون وسلوكيات مثل القيادة والتوقف.
كائنات العالم الحقيقي
يتفاعل الناس مع الأشياء باستمرار في حياتهم اليومية. في الواقع، يمكن اعتبار كل شيء نتفاعل معه تقريبا كعنصر.
يمكن استخدام المعايير التالية لتعريف العناصر في العالم الحقيقي:
- الكائنات هي الأشياء التي يمكننا رؤيتها واللمس.
- الكائنات لها غرض.
- تحتوي الكائنات على أجزاء تدعم الغرض منها.
القلم الرصاص هو مثال على كائن مادي. الغرض من القلم الرصاص هو إنشاء ملاحظة أو رسم. تتضمن أجزاء القلم الرصاص الجسم، والبقشيش، وربما الممحاة. تعمل الأجزاء معا لتحقيق الغرض المقصود من القلم الرصاص.
هناك أيضا كائنات فعلية موجودة كتجمع للكائنات الأخرى. توفر القائمة التالية أمثلة على الكائنات التي تتكون من كائنات أخرى:
- السيارة: الغرض من السيارة هو توفير وسائل النقل البري للأفراد والأسر. تشمل أجزاء السيارة محركا وعجلات وعجلة قيادة وغيرها الكثير. تعمل أجزاء السيارة معا لتمكين النقل البري.
- منزل: الغرض من المنزل هو توفير المأوى. تشمل أجزاء المنزل الأساس والجدران الخارجية والسقوف والغرف. تعمل هذه الأجزاء معا لخلق مساحة معيشة.
- الهاتف الذكي: الغرض من الهاتف الذكي هو مساعدة المستخدم في المهام والأنشطة اليومية. تتضمن أجزاء الهاتف الذكي شاشة ومعالجا دقيقا وذاكرة وتخزينا وبطارية وكاميرات وأزرارا. تعمل هذه الأجزاء معا لتمكين ميزات الاتصال والترفيه والإنتاجية.
كل جزء من سيارة أو منزل أو هاتف ذكي هو كائن له غرضه الخاص وقد يكون أيضا تجميعا للكائنات.
سمات وميزات كائن فعلي
خذ دقيقة للنظر في مثال القلم الرصاص. يحتوي القلم الرصاص على أجزاء (النص الأساسي، التلميح، الممحاة) والغرض (إنشاء ملاحظة أو رسم). تشترك أقلام الرصاص في هذه الخصائص الأساسية. ومع ذلك، ليست كل أقلام الرصاص هي نفسها.
بعض أقلام الرصاص قصيرة، وبعضها طويل. بعض أقلام الرصاص باللون الأصفر، وبعضها أسود. تحتوي بعض أقلام الرصاص على تلميح باهت، وبعضها يحتوي على بقشيش حاد. تحتوي بعض أقلام الرصاص على ممحاة، وبعضها لا يحتوي على ممحاة.
غالبا ما يتم تقسيم سمات العنصر إلى الفئات المادية والسلوكية التالية:
- المادية: السمات المادية هي جوانب كائن يمكن رؤيته أو قياسه.
- السلوكية: السمات السلوكية هي جوانب العنصر الذي يصف قدراته أو تفاعلاته مع كائنات أخرى.
على سبيل المثال، تتضمن السمات المادية طول الجسم ولون الجسم والحدة في التلميح وما إذا كان القلم الرصاص يحتوي على ممحاة أم لا. تتضمن السمات السلوكية القدرة على الكتابة والقدرة على المحو والقدرة على الصقل. يتفاعل القلم الرصاص مع الورق أو الكائنات الصلبة الأخرى التي يمكن كتابتها أو رسمها.
غالبا ما يشار إلى السمات المادية على أنها خصائص، بينما غالبا ما يشار إلى السمات السلوكية كدالات (أساليب في برمجة C#).
فئات التعليمات البرمجية والكائنات في برمجة C#
في عالم برمجة C#، يتم تعريف خصائص الكائن وأساليبه بواسطة فئة. توفر الفئات مخططا لما يمكن للكائن (مثيل الفئة) القيام به. يسمى مخطط فئة تعريف الفئة.
عند تشغيل أحد التطبيقات، يستخدم الكمبيوتر تعريف فئة لتخصيص ذاكرة لعنصر (مثيل للفئة). يستخدم الكمبيوتر المخطط لتكوين كتلة من الذاكرة التي هي الحجم الصحيح للكائن. الكائن هو في الأساس كتلة من الذاكرة.
يمكن أن يكون لكائنات التعليمات البرمجية، تماما مثل الكائنات الفعلية، قيم مختلفة معينة إلى خصائصها.
تغلف الفئات البيانات والسلوك
توفر الفئات طريقة لتغليف البيانات والسلوك. التغليف هو عملية دمج البيانات والسلوك في وحدة واحدة. تستخدم الفئات الخصائص لتمكين الوصول إلى البيانات والأساليب لتمكين السلوكيات.
خصائص الفئة
تستخدم خصائص الفئة لإدارة البيانات التي تميز كائنا واحدا (مثيل الفئة) عن كائن آخر من نفس النوع.
تمكن خصائص الفئة الكائنات من قراءة قيمة المتغيرات (حقول البيانات) المعرفة داخل الفئة أو كتابتها أو حسابها. تظهر الخصائص كأعضاء بيانات عامة، ولكن يتم تنفيذها كأساليب خاصة تسمى الملحقات. تمكن هذه الميزة المتصلين من الوصول إلى البيانات بسهولة ولا تزال تساعد في تعزيز أمان البيانات ومرونتها.
يمكن قراءة قيم الخصائص باستخدام ملحق get وتعيينها باستخدام ملحق set.
أساليب الفئة
تحدد أساليب الفئة الإجراءات (السلوكيات) التي يمكن للفئة تنفيذها.
يمكن أن تأخذ الأساليب المعلمات التي توفر بيانات الإدخال، ويمكن إرجاع بيانات الإخراج من خلال المعلمات. يمكن للأساليب أيضا إرجاع قيمة مباشرة، دون استخدام معلمة.
على سبيل المثال، تتضمن فئة Console أساليب WriteLineReadLineClear (من بين طرق أخرى). تساعد هذه الأساليب على تمكين السلوكيات المقصودة لفئة Console. يمكن استخدام الأساليب لتنفيذ إجراءات، مثل العمليات الحسابية أو معالجة البيانات أو التفاعل مع كائنات أخرى.
غالبا ما يتم تصميم الأساليب لقبول وسيطة أسلوب واحدة أو أكثر. يتم تمرير وسيطات الأسلوب إلى الأسلوب كمعلمات لبيان الاستدعاء المستخدم لاستدعاء الأسلوب. على سبيل المثال، يمكن للأسلوب WriteLine لفئة Console قبول وسيطة سلسلة يتم توفيرها بواسطة عبارة الاستدعاء.
تعريفات الفئة في التعليمات البرمجية C#
يوضح المثال التالي فئة بسيطة في C#. تحتوي فئة Phone على خصائص BrandModelYear. تتضمن الفئة أيضا أساليب CallText.
public class Phone
{
public string? Brand { get; set; }
public string? Model { get; set; }
public int Year { get; set; }
public void Call(string phoneNumber)
{
Console.WriteLine($"Calling {phoneNumber}...");
}
public void Text(string phoneNumber, string message)
{
Console.WriteLine($"Texting {phoneNumber}: {message}");
}
}
استخدام مساحات الأسماء
في برمجة C#، يتم استخدام مساحات الأسماء بطريقتين:
- تستخدم مكتبة فئات .NET مساحات الأسماء لتنظيم فئاتها العديدة.
- يعلن المطورون عن مساحات الأسماء الخاصة بهم للمساعدة في التحكم في نطاق أسماء الفئات والأساليب في مشاريع البرمجة الأكبر.
مساحات الأسماء في مكتبة فئات .NET
تستخدم مكتبة فئات .NET مساحات الأسماء لتجميع الأنواع ذات الصلة معا، مما يسهل العثور عليها واستخدامها.
خذ بعين الاعتبار القصاصة البرمجية التالية:
System.Console.WriteLine("Hello World!");
في هذا المثال، System هو مساحة اسم Console هي فئة في مساحة الاسم هذه.
يضمن توفير الاسم المؤهل بالكامل للفئة (System.Console) استخدام الفئة الصحيحة. ومع ذلك، يمكن أن يكون استخدام الأسماء المؤهلة بالكامل مرهقا عند العمل مع العديد من الفئات من نفس مساحة الاسم. لتحسين قابلية قراءة التعليمات البرمجية، يمكنك استخدام توجيه using. يسمح لك توجيه using باستخدام الأنواع المعرفة في مساحة اسم دون تحديد مساحة الاسم المؤهلة بالكامل من هذا النوع.
تنفذ القصاصة البرمجية التالية توجيه using لتحسين قابلية قراءة التعليمات البرمجية:
using System;
Console.WriteLine("Hello World!");
ملاحظه
بدءا من .NET 6، تتم إضافة توجيهات إلى مشاريع C# الجديدة. وهذا يعني أنه يمكنك استخدام الأنواع المعرفة في مساحات الأسماء هذه دون الحاجة إلى تحديد اسمها المؤهل بالكامل أو إضافة توجيه باستخدام يدويا. يشير جانب الضمني إلى حقيقة أن توجيهات الاستخدام العمومية تضاف إلى ملف تم إنشاؤه في دليل obj للمشروع. تمكنك هذه الميزة من استخدام Console.WriteLine دون الإعلان صراحة عن using System عند تطوير التطبيقات في الإصدارات 6.0 أو أحدث من .NET.
تنظيم الفئات باستخدام مساحات الأسماء
يمكن أن يساعدك الإعلان عن مساحات الأسماء الخاصة بك في التحكم في نطاق أسماء الفئات والأساليب في مشاريع البرمجة الأكبر. استخدم الكلمة الأساسية namespace للإعلان عن مساحة اسم.
خذ بعين الاعتبار القصاصة البرمجية التالية:
namespace SampleNamespace
{
class SampleClass
{
public void SampleMethod()
{
System.Console.WriteLine("SampleMethod inside SampleNamespace");
}
}
}
يجب أن يكون اسم مساحة الاسم اسم معرف C# صالحا.
يمكنك تعريف مساحة اسم لكافة الأنواع المعرفة في هذا الملف، كما هو موضح في مقتطف التعليمات البرمجية التالي:
namespace SampleNamespace;
class SampleClass
{
public void SampleMethod()
{
System.Console.WriteLine("SampleMethod inside SampleNamespace");
}
}
class AnotherSampleClass
{
public void AnotherSampleMethod()
{
System.Console.WriteLine("AnotherSampleMethod inside SampleNamespace");
}
}
ميزة بناء الجملة الجديد هذا هو أنه أبسط، مما يوفر المساحة الأفقية والأقواس. وهذا يجعل التعليمات البرمجية الخاصة بك أسهل في القراءة.
نظرة عامة على مساحات الأسماء
مساحات الأسماء لها الخصائص التالية:
- وهي تنظم مشاريع التعليمات البرمجية الكبيرة.
- يتم تحديدها باستخدام عامل التشغيل
.. - التوجيه
usingيتفادى متطلبات تحديد اسم مساحة الاسم لكل فئة. - مساحة الاسم العمومية هي مساحة الاسم "الجذر": تشير
global::Systemدائما إلى مساحة اسم نظام .NET.
استخدام مساحات الأسماء لتجميع الأنواع ذات الصلة معا يسهل العثور عليها واستخدامها.