4 - الدرس الرابع مفهوم الفئة class

Mammeri Toufikمنذ 8 سنوات

الحمد لله وبعد ...

سبق أن بينا ماهية الفئات class  داخل نمط oop  وفي هذا الدرس إن شاء الله تعالى نشرح مفهومها برمجيا من خلال مخطط كالتالي:

  1. مفهوم الفئة  class برمجيا. رمزها  System_CAPS_pubclass

  2. أنواع الفئات:      
                                 * الفئات المجردة.   Classes Abstract

                                 *الفئات المغلقة  Classes Sealed

                                 *فئات جزئية. Partial Classes

                                 * فئات ثابتة static

                                *   فئة من فئة metaclass

    3.أعضاء الفئة:   *الدوال.functions رمزه   System_CAPS_pubmethod   او System_CAPS_staticSystem_CAPS_pubmethod  

                               * المتغيرات . Variables   رمزه كرمز الدوال دون الخطوط الصغيرة بجانبه  

                               *الخصائص.properties رمزه  System_CAPS_pubproperty  

                               *الاحداث.events  رمزه  يشبه رمز البرق.

                              * المشيدات.constructors رمزه  System_CAPS_protmethod

                              *المتلفات .destructors

                              * المفوض Delegate

   4.مخطط الفئات . UML

   5.أعضاء أخر :   الحقول . المكررات . المفهرسات . دالات الإنشاء . المتداخلات .  الثوابت . الواجهات . 

 

 

1-  مفهوم الكلاس برمجيا: 

هي عبارة عن قسم له ميزات هي:

  1.  يضم خصائص مشتركة  Properties  لمجموعة من الكائنات objects. تعلن صفات هاته الكائنات وويضم دوال تعلن سلوكات هاته الكائنات 
  2.    يمثل مصنع للكائنات البرمجية. التي تعمل عليها خصائصه ودواله.
  3. من خلاله  يتم تطبيق أساسيات البرمجة الكائية  oop   كالتوريث والكبسلة والواجهات الى اخره من مبادي  البرمجة الموجهة بالكائنات.
  4. الفئة هي بنية أو نسخة  لأنواع البيانات ذات المرجع فهي تحتوي على المتغيرات والخصائص والدوال والاحداث و المشيدات والمتلفات.

 

2- أنواع الفئات

       1. الفئات المجردة.   Classes  Abstract

استعمال كلمة Abstract يمكنك  من إنشاء  فئات ناقصة التنفيذ instantiated ويتم تنفيذها على فئات مشتقة كما تمكنك من منع التوارث من فئة خاصة ومنع التوارث إلى أعضاء معينة بالفئة التي تم تميزها مسبقا بـ  virtual سيأتي على ذلك مثال رقم 3

لا يمكن إنشاء كائن إلا من خلال خلق فئة فرعية غير مجردة فالفئة المجردة تخدم الفئة المشتقة الفرعية

لإنشاء فئة مجردة يكفي أن نضيف كلمة Abstrac قبل إسم الفئة.

مثال1:

اسم الكلاس myself  معناهانفسي


abstract class Form1 : myself
   {
       private string Nom;
       private string Age;
       private string Adress;
       private string Sex;
   }

 

الغرض من الفئة المجردة هو توفير تعريف شائع لفئة أساسية يمكن أن تشارك  فيها  الفئات المشتقة. 

يمكن للفئة المجردة أن تحدد الدالة المجردة بإضافة نفس الكلمة قبل الدالة

مثال 2:


public abstract class A
{
    public abstract void DoWork(int i);
}

 

لا تحتوي الدالة المجرد على تنفيذ لذلك نتبع الدالة المجردة بفاصلة منقوطة وتتم التنفيذ بالدوال المجردة من الفئات المشتقة من الفئة المجردة .

وكما ترث فئة مجردة دالة عادية غير مجردة من فئة اساسية يمكن للفئة المجردة أن تتجاوز الدالة العادية بدالة مجردة      

مثال3 


public class R
{
    public virtual void DoWork(int i)
    {
        //   تنفيذ أصلي.
    }
}

public abstract class H : R
{
    public abstract override void DoWork(int i);
}

public class G : H
{
    public override void DoWork(int i)
    {
        // تنفيذ جديد.
    }
}
إذا تم تعريف دالة من نوع virtual بأن تكون abstract تظل الدالة عادية لأي فئة ترث من الفئة المجردة. 

لا يمكن للفئة التي ترث دالة مجردة من الوصول إلى التنفيذ الأصلي للدالة— في المثال السابق، لا يمكن للـ DoWork في الفئة G من الاتصال بالـ DoWork التي في الفئة R. وبهذه الطريقة، يمكن للفئة المجردة فرض على الفئات المشتقة من توفير تنفيذ جديدة للدالة العادية.

لو فرصا أننا أردنا إنشاء كائن من هاته الفئة  نلاحظ ظهور ظهور رسالة جانبية commentaire إذا وضعنا الفأرة على العبارة  NEW 

مثال: 


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public abstract class DoWork(int i)
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DoWork k=new DoWork(); // تظهر رسالة تقول Error cannot creat instance of the abstract
        }
    }
}

فيلزم إنشاء فئة فرعية ترث خصائص  فئة DoWork ثم ننشء متغيرات من الفئة الفرعية فتأخذ خصائص الفئة الأصلية.


public partial class DoWork : Form
    {
        public abstract class DoWork(int i)
          
        {
             public class DoWork();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DoWork k=new DoWork(); /لا حظ عدم ظهور رسالة الخطأ
        }
    }

ومن ثمة أمكن لنا إنشاء كائنات .

*فائدة هذا النوع من الكلاسس: هو أنه يسمح بتحديد مزايا وخصائص مشتركة لعدة فئات كما له فائدة للمطورين المبرمجين بأن يترك لمبرمج آخر منفذ لتنفيذ لكلاس معينة كما يعطي له طريقة تنفيذ ما تبقى من الكلاس ويعطي له تنفيذ دالة ما إن احتاج اليها ومن ثمة تعلم أيها المبتدء أن هذا النوع من الدوال لا يهمك لذلك نترك بيان تطبيقاته المرئية في برنامج الإحتراف إن شاء الله تعالى 

كما تستخدم في المقام الأول  في تحليل الكود إلى عوامل.

كما أن الفئة الوارثة من الفئة المجردة إن ورثت يجب أن تسمح بتنفيذ الدوال التي أعلنت كدوال مجردة في الفئة الأصل .

كما أن الدالة المجردة تطلب إنشاء كلاس فرعي للفئة المجردة لأجل تنفيذ الدالة المجردة.

كما أن الكلاس الفرعية لا بد أن يسبقها كلمة  override أي تجاوز . ذلك لأن الدالة المجردة ما هي إلا دالة إفتراضية ضمنيا.

كما أنه لا يمكن للدالة المجردة المنفذة خلال الفئة المشتقة الفرعيىة أن تسبق بـالكلمة private اي خاص أو  sealed أي مغلق.

* تنبيه: سبق أن ثبتت رموز الدالة والفئة وووو هاته الرموز خاصة بغير طبعة 2015 من سي شارب

*أنت ترى أن الدرس يحمل في ثناياه عبارات نوعا ما وحشة على المبتدء لأن لا بد له من سبق معطيات وتمرسات ليتأقلم فكره وتصوره للمفاهيم التي ذكرناها ولكن ما ذكرناه هو عموميات تنفع المبتدء في المرحلة الإحترافية إن شاء الله تعالى. فلا بد له من هذا الإجمال التأصيلي.

* نكمل إن شاء الله تعالى في الدرس الموالي لباقي الأنواع والله المستعان

إنوجدت أي صعوبة  فعليك بركن  اضغط سؤال وجواب.

*يبدو أن اللغة بدءت عبارتاها بالصعوبة سأحاول أن أعيد الدرس في نفس الموضوع لكن بأبسط عبارة إن شاء الله تعالى.

كلمات دليلية:
0
إعجاب
11136
مشاهدات
0
مشاركة
0
متابع

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !