InstagramTwitterSnapChat


 
وصف

العودة   منتديات سكاو > الكليات الجامعية > منتدى كلية الحاسبات وتقنية المعلومات > المنتدى العام لكلية الحاسبات وتقنية المعلومات > منتدى الملخصات والمواضيع المميزة بالقسم العام لكلية الحاسبات وتقنية المعلومات
التسجيل مشاركات اليوم البحث
   
   


منتدى الملخصات والمواضيع المميزة بالقسم العام لكلية الحاسبات وتقنية المعلومات قسم خاص يتم نقل المواضيع المميزة و الملخصات والملفات المهمه

سلسلة دروس تعلم لغـة الجافا ( مقدمة على البرمجة بشكل عام )

منتدى الملخصات والمواضيع المميزة بالقسم العام لكلية الحاسبات وتقنية المعلومات

 
 
أدوات الموضوع إبحث في الموضوع انواع عرض الموضوع
منتديات طلاب وطالبات جامعة الملك عبد العزيز منتديات طلاب وطالبات جامعة الملك عبد العزيز
قديم 31-10-2009, 08:27 PM   #5

أحـمـد ظـافـر

مشرف مُتألق سابق

الصورة الرمزية أحـمـد ظـافـر

 
تاريخ التسجيل: Oct 2008
كلية: كلية الهندسة
التخصص: مدنيّة
نوع الدراسة: إنتظام
المستوى: الرابع
البلد: الدول العربية
الجنس: ذكر
المشاركات: 2,472
افتراضي رد: سلسلة دروس تعلم لغـة الجافا ( مقدمة على البرمجة بشكل عام )

مقارنة بين البرمجة بالكائنات الشيئية والبرمجة التقليدية

لنأخذ مثال حي لتوضوح المقارنة :-)

لنفرض أن لدينا معركة بشكل ما بين المسلمين و الإسرائيلين. و أرغب في عمل محاكاة لهذه المعركة على الكومبيوتر. و لنفترض أن رأيي استقر على لغة ال C، و هي لغة تقليدية، لذا سأحضّر للبرنامج بالطريقة التقليدية، سأفكّر: (ماذا سيحدث؟)

سأكتب خطوات حل البرنامج:

- تبدأ المعركة. - يجري الإسرائيلي تجاه المسلم من الخلف - يتفادى المسلم الضربة الغادرة - يهجم المسلم - يموت الإسرائيلي - تنتهي اللعبة

نلاحظ فيما سبق أننا رتّبنا البرنامج بحسب الأحداث، لذا بدأت الجمل السابقة بأفعال. و أغلب الظن أننا سنكتب كل ما سبق في ملف واحد و نقوم بتخزينه، و كلّما غيّرنا في مكان نحتاج دائماً إلى إعادة ترجمة البرنامج كاملاً مرّة أخرى (Recompiling).

ماذا نستنتج من ذلك؟

نستنتج أن البرمجة التقليدية تحافظ على ترتيب الأحداث، و يتطلّب التغيير في هذا الترتيب برمجة البرنامج و جميع حلقاته مرّة أخرى.

البرمجة التقليدية تهتم بالأحداث، و تربط بينها الأشياء أو البيانات.

لنفرض أننا أردنا أن نكتب البرنامج بلغة من لغات الكائنات الشيئية (مثل الجافا مثلاً)

سنقرأ السؤال مرة أخرى و لكن هذه المرة سنسأل أنفسنا: (من الأعضاء في هذا المثال؟)

سيقول أحدكم:
المسلم



و سيقول آخر:
الاسرائيلي



سأعود لأسأل: فيم فكّرنا هذه المرة؟ لم نفكّر في الأحداث، بل فكّرنا في أبطال القصة. السؤال الآن: كيف سنكتب البرنامج الآن؟

سأقول لكم :-)

1) بعد أن قمنا بتحديد الأشياء أو الأعضاء، سنقوم بعمل الموديلات لهم أو بمعنى أصح الفئات. لأنه لا يمكن أن يوجد عضو لا ينتمي لفئة!

الفئة الأولى هي فئة (المسلم)، بم يتميّز المسلم من صفات؟

المسلم
الصفات:
له اسم
له روح وجسد
له حالة (امّا حي و إما ميّت)
القدرات:
يشهد أن لا إله إالا الله ويقول الله أكبر
يستطيع أن يقاتل
يمكن أن يجرح يمكن أن يموت (أو يستشهد)



نأتي للاسرائيلي، و نكتب صفاته

الاسرائيلي
الصفات:
له اسم
له روح وجسد
له حالة (امّا حي و إما ميّت)
القدرات:
يغدر وينقض العهد
يقاتل من خلف جدار
يمكن أن يجرح يمكن أن يموت



الآن و بعد أن حددنا الفئات التي ينتمي لها المسلمون و الاسرائيليون، فلنجلس قليلاً لنتأمّل:

لدينا الآن فئة تجمع الصفات المشتركة لأي مسلم (و نلاحظ أننا استخدمنا صيغة المفرد في التسمية) و كذلك الصفات المشتركة لأي اسرائيلي. و نفس الشيء بالنسبة للقدرات.

نريد الآن أن نبدأ المعركة! همم ماذا هناك؟.. فعلاً صحيح، أين المعركة؟ لا يمكننا غدراج المعركة ضمن صفات أو قدرات المسلم، و لا ضمن صفات أو قدرات الإسرائيلي، إذاً سنحتاج إلى عضو آخر جديد يجمع بين الاثنين و هو:

المعركة



و في المعركة نستطيع أن ننشئ عضو من فئة المسلمين و لنسمه محمد و عضو من فئة الإسرائيلين و لنسمّه شارون!

الأن المسألة أصبحت أسهل، ما هي صفات المعركة؟
فيها طرفا نزاع، لها وقت للبداية و لها وقت للنهاية و لها نتيجة!

بدلاً من أن نقول صفات سأستعيض عنها بكلمة أخرى أوضح و هي (مكوّنات) لأن المعركة في الواقع هي فئة موجودة للتكون مكان يجمع أعضاء من عد فئات أخرى. إذاً المعركة ستأخذ هذا الشكل:

المعركة
الصفات:
المكونات: عضو مسلم
عضو اسرائيلي
القدرات:
تبدأ في وقت محدد
تنتهي في وقت محدد
يتم تحديد النتيجة بعد نهايتها



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

ماذا نستنتج من ذلك؟

نستنتج أن البرمجة باستخدام الكائنات الشيئية تتكون من فئات، و أعضاء. و أن بداية البرنامج تتم عبر نقطة بدايو دون تحديد لسير البرنامج لأن الأعضاء من مختلف الفئات قد يتصرّفون بشكل أو بآخر.

توضيح:

أي أنني عندما أبدأ المعركة قد يقوم المسلم بالهجوم أولاً، و قد يقوم الإسرائيلي بالغدر، لا يوجد ما يضمن لي أن أحدهما سيسبق الآخر، لأن كلا الفئتين احتفظت بصفاتها و قدراتها بشكل منفصل عن الفئة الأخرى.

إذاً البرنامج بطريقة الكائنات الشيئية يتكوّن من أكثر من ملف، و كل ملف منفصل فعلياً عن الملفات الأخرى. و حين حدوث أي تغيير في أي برنامج فإن أعادة الترجمة (Recompiling) يتم على هذا الملف دون غيره.


الآن , كيف يتم تطبيق هذا باستخدام لغة الجافا؟

 


التعديل الأخير تم بواسطة أحـمـد ظـافـر ; 31-10-2009 الساعة 08:42 PM.
أحـمـد ظـافـر غير متواجد حالياً   رد مع اقتباس
 

 


تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

 


الساعة الآن 03:33 PM


Powered by vBulletin® Version 3.8.9 Beta 3
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Ads Organizer 3.0.3 by Analytics - Distance Education

أن كل ما ينشر في المنتدى لا يمثل رأي الإدارة وانما يمثل رأي أصحابها

جميع الحقوق محفوظة لشبكة سكاو

2003-2025