الاثنين، 30 مايو 2011

مقالات : الوراثة في البرمجة






الوراثة Inheritance

بسم الله الرحمن الرحيم
في درس اليوم إن شاء الله سنتعرف على مفهوم هام وهو الوراثة Inheritance , لو تأملت المثال الموجود بالشكل التالي:
لو اعتبرت أن شركة NISSAN هي الأب و هذه الشركة لها أبناء هم :سيارة sunny, وسيارة Maxima  بحيث أن هؤلاء الأبناء يرثون جميع صفات الأب "شركة نيسان" بالإضافة إلى ذلك فكل ابن منهما يتفرد بصفات خاصة به,  هذا بكل بساطة مبدأ الوراثة في السي شارب.
نريد الآن أن نقوم بتحويل المثال السابق إلى برنامج, ولكن قبل ذلك يجب أن تعرف عدة أمور :
الكلاس الأب يدعى Base Class  "or super class" ,
والكلاس الابن يدعى Derived Class "or sub class".
في البرنامج التالي سنقوم بإنشاء ,4 classes أحدها للأب "NISSAN" , والآخر للابن الأول "Maxima", والثالث للابن الثاني "Sunny", والأخير بداخله الدالة Main .
التعبير عن وراثة الابن Maxima  للأب NISSAN  في السي شارب يتبع الأسلوب التالي : class Maxima : NISSAN
ونفس الطريقة مع الكلاس Sunny ووراثته للكلاس class Sunny : NISSAN    , NISSAN
بحيث أن رمز الوراثة هو " : " والذي يسمى "colon symbol".
من المهم معرفة أن أي Derived class لا يمكنه وراثة أكثر من Base class واحد فالسي شارب لا تدعم الوراثة المتعددة "فعلا, فلو نظرت إليها منطقيا لرأيت أنه من المستحيل أن يكون للابن أكثر من أب !!".
سوف نقوم الان بكتابة برنامج console application بحيث يحتوي على 4 كلاس داخل namespace واحدة
1- في البداية سأكتب الكلاس الأب NISSAN :
class NISSAN
    {
       public NISSAN()//constructor
        {
       Console.WriteLine("NISSAN is the base  class");
        }

        public void Company()
        {
         Console.WriteLine("the company location in japan");
        }
    }
}
الكود السابق فيه تعريف الكلاس NISSAN , عرفنا بداخله الـ Constructor, و الدالة Company والتي تطبع موقع الشركة .
2- ثانيا سأكتب الكلاس الابن MAXIMA :
class MAXIMA : NISSAN
    {
        public MAXIMA() //constructor
        {
            Console.WriteLine("MAXIMA is derived class from NISSAN");
        }
        public void FuelTank()
        {
            Console.WriteLine("the fueltank capacity in MAXIMA is:70 L");
        }
    }
الكود السابق هو  تعريف الكلاس Maxima  الذي يرث الكلاس NISSAN , عرفنا بداخله الـ Constructor , و الدالة FuelTank  والتي توضح سعة الوقود اللازمة للسيارة.
3- ثالثا ساكتب الكلاس الابن SUNNY :
class SUNNY : NISSAN
    {
        public SUNNY() //constructor
        {
            Console.WriteLine("SUNNY is derived class from NISSAN");
        }
        public void FuelTank()
        {
            Console.WriteLine("the fueltank capacity in SUNNY is:50 L");
        }
    }
الكود السابق هو تعريف الكلاس Sunny   الذي يرث الكلاس NISSAN , عرفنا بداخله الـ Constructor , و الدالة FuelTank  والتي توضح سعة الوقود اللازمة للسيارة.
4- سنكتب  الآن كلاس MainClass لكي نكتب بداخلها تعريف الدالة Main كالتالي :
حيث في السطر 5 أنشأنا object من الكلاس Maxima  "أحد أبناء نيسان"كممثل عن هذا الكلاس, بمجرد وصول الكومبايلر لهذا السطر فإنه سينتقل مباشرة لينفذ الـ constructor للكلاس Maxima  و هذا الـ Constructor بدوره سيستدعي الـ Constructor للكلاس الأب NISSAN   ليتم تنفيذه.
ومن هنا نستنتج أنه دائما يتم تنفيذ الـ Constructor للكلاس الأب أولا ثم تنفيذ الـ Constructor للكلاس الوارث"الابن" , ويتضح ذلك من خلال السطرين الأول والثاني من المخرجات .
ثم لاحظ السطرين (6 – 7 ) كيف أن هذا الكائن "maxima" تمكن من الوصول للدالة FuelTank الموجودة في الكلاس "Maxima" الذي أنشئ منه الكائن, ومن الوصول للدالة Company الموجودة في الكلاس الأب "NISSAN" و النتيجة هي السطرين الثالث والرابع من المخرجات.
ومن هنا تأكدنا من أن الكائن الذي يتم تعريفه من الـ Derived class الابن,  يستطيع الوصول للدوال الموجودة في الـ Derived class وأيضا الموجودة في الـ Base class الاب.
و الاسطر (9-11) تتبع نفس الاسلوب المشروح تماما .
والمخرجات للبرنامج :
وأخيرا أتمنى أن أكون وفقت في عرض الفكرة ..
                                                
والسلام عليكم ………

حقائب الوحدة: إذن الحقوق

تجدونها على الرابط التالي                  


http://www.mediafire.com/?unbcdgdg772cugv


حقائب الوحدة: التقييمات

يتم فيها تقييم الجوانب المهارية والوجدانية للطالب وتقييم للحقيبة        

وكذلك تقييم للعرض التقديمي والويب الخاص بالطالب.


                                                 تجدونها على الرابط التالي

حقائب الوحدة: الوسائط المتعددة

             يتضمن جميع الوسائط المتعددة الخاصة بالمشروع من صور وفيديو وتطبيقات والخ
          مما يساعد الطالب على التعلم لوحده باستخدام هذه الوسائط التي تزيد من فاعلية التعليم.

تجدونها على الرابط التالي

حقائب الوحدة: خطة الوحدة

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

تجدونها على الرابط التالي


حقائب الوحدة: دعم الوحدة

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

تجدونها على الرابط التالي




حقائب الوحدة: نماذج الطلاب

تتضمن هذه الحقيبة الدعم الخاص بالطالب متمثلا في تخطيط قوالب وعروض ومواقع ويب الطلاب ,
بالإضافة إلى العروض التقديمية ومواقع الويب والمنشورات الخاصة بالطالب نفسها والتي تم التخطيط لها.
وهي عبارة عن أمثلة وشروحات قدمها الطلاب لمعلميهم للحصول على علامات مثلا.

تجدونها على الرابط التالي

دروس وشروحات:البرمجة الشييئة



البرمجة الشيئية:عرض        تحميل الدرس