العودة   منتديات طلاب الجامعة العربية المفتوحة > منتديات المشرفين والمنتديات المساعدة > أرشيف المواد والمواضيع القديمة > أرشيف الملخصات لمناهج تم تغييرها > M206

 
 
أدوات الموضوع انواع عرض الموضوع

قديم 18-09-2008, 02:19 AM   #1
قــهــوة قــهــوة غير متصل
طالب ماسي
 
الصورة الرمزية قــهــوة
◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘



بارك الله فيكي

الإشراف العام لقسم تقنية المعلومات

=+=+=+=+=+=
للحصول على كامل الشرح بملف ورد من هنا
=+=+=+=+=+=



مســآكــم / صــبـآحــكــم M206

كل عــآم وانتمـ بخير طلاب هالمادة وان شاء الله تكون بداية سنة تفوق ونجاح باذن الله

من خلال هالموضوع حابة اني احط لكم ولو شرح بسيط لبعض مفاهيم هالمادة باللغة العربية بحكم اني مخلصة المادة من زمن جدي ( خريجة يعني ) وعندي خبرة معاها


نبدأ بسم الله بأول درس




معنى البرمجة الشيئية :: oop

هي عبارة عن أسلوب جديد من أساليب البرمجة حيث أصبحت وحدة بناء البرنامج هي الصنف class والذي يحوي على البيانات data والعمليات ( الدوال ) functions .
ولها عدة مسميات منها ..::
1- البرمجة غرضية التوجة .
2- البرمجة الكائنية الموجهة .




أسلوب البرمجة الشيئية :.
عادة ما تكون البرامج من هذا الأسلوب معقدة بشكل كبير حيث تقسيم البرنامج إلى مجموعة من المهام الرئيسية ومن ثم تقسم إلى مهام فرعية على حسب درجة التعقيد للمهام الرئيسية لذلك فان البرمجة الهيكلية تنتهج النهج ( من الأعلى إلى الأسفل ) Top Down .





عيوب هذا الأسلوب : البرمجة الهيكلية .::
1- صعوبة فصل البيانات على العمليات .
2- إعادة إنشاء الحلول وعدة إعادة استخدامها .





المفاهيم الأساسية للبرمجة الشيئية :.

1- الكائن Object :

عبارة عن وحدة تحوي مجموعة من البيانات تسمي ( خصائص ) properties أو صفات ومعرفة عليها مجموعة من العمليات .
مثال .:: كائن السيارة .:

الخصائص :
Model :Ferrari
Color : Blue
Year : 2005

العمليات ::.
Start ' الانطلاق '
Stop ' التوقف '
Accelerate 'التسارع'





2- الصنف Class :
الكائنات ذات الخصائص والأفعال المشتركة بحاجة لآن تجمع مع بعضها البعض حتى يمكن استخدامها في برنامج ما.
وبالتالي فإن الصنف : عبارة عن مجموعة من الكائنات التي تشترك في الخصائص والعمليات ..
مثلاً ..::
الطالب كائن >> الطلاب صنف .
الموظف كائن >> الموظفين صنف .





مزايا البرمجة الشيئية :. (Features of opp)

1- التجريدabstraction : وهو عملية تحديد الخصائص والعمليات التي تنتمي لصنف معين وهي نوعان .::

أ- تجريد البيانات Data abstraction : وهي عملية التعرف على الخصائص المرتبطة بكائن معين .
ب- تجريد العمليات Methods abstraction: وهو عملية تحديد العمليات والإجراءات دون ذكر شيء عن كيفية أدائها .

2- التغليف ( الكبسلة )Encapsulation : هي عملية تجميع كل الخصائص properties والطرق ( العمليات ) Methods في وحدة واحدة ( داخل غلاف واحد ) حيث لا يمكن الوصول إليها ( أي الخصائص والطرق ) إلا عن طريق الكائن .

3- إخفاء البيانات Data Hiding:. وهي ميزة ناتجة عن كبسلة البيانات وتعني إضافة مستوى حماية معين على البيانات حتى نمنع وصول الخطأ إليها .

4- الوراثة Inhertance:. وهي أن يرث صنف ما الخصائص والعمليات الموجودة في الصنف الآخر مما يساعد على إعادة الاستخدام للأصناف التي تم إنشاؤها من قبل المستخدم . .





أمثلة لبعض الأصناف المشتقة والأساسية في الوراثة :..






5- تعدد الأشكال ( الأوجه ) polymorfisme: تسمح ميزة تعدد الأشكال لنفس الدالة أن تتعرف بصورة مختلفة في أصناف مختلفة .
ويمكن عمل ذلك بـ الوراثة مع تعدد الأشكال .
واللغات التي تدعم أسلوب البرمجة الشيئية كثيرة نذكر منها ..
C++ و java و C# و vb.net





رجآء خاص:

ياليت مايكون فيه ردود بالوقت الحالي لحتى اقدر اضع المعلومات الباقية دون ان اتشتت او ان تتشتتوا في تحصيل المعلومة


وان شاء الله لي عودة



التعديل الأخير تم بواسطة JB ; 18-11-2008 الساعة 03:46 PM سبب آخر: ختم التميز لأهل التميز
قــهــوة غير متصل  
قديم 18-09-2008, 07:04 AM   #2
قــهــوة قــهــوة غير متصل
طالب ماسي
 
الصورة الرمزية قــهــوة
افتراضي رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


الأصناف Classes :


تعريف الصنف : هو عبارة عن وحدة تحوي مجموعة من البيانات ( الخاصة والعامة )بالإضافة إلى تعريف الدوال ( العمليات ) حيث يطلق على الدوال المعرفة داخل الصنف بـ " أعضاء دالية " member Function .



تعريف الكائنات .::

يتم تعريف الكائنات في البرنامج الرئيسي وفقاً للصيغة التالية :


كود:
class_name object_name


حيث :
class_name : اسم الصنف ( نفس اسم الصنف الذي كتبناه في بداية البرنامج )
object_name : اسم الكائن ، وهو اختياري ، يستخدم للوصول لعناصر الصنف .


مثال.::

كود:
rectangle rect;

حيث
rectangle اسم الصنف ، و rect اسم الكائن .

وإذا أردنا أن نعرف أكثر من كائن بنفس الوقت ، نفس العملية السابقة ، فقط نفصل بين كل كائن والآخر باشارة الفاصلة ( , ) . والمثال التالي يوضح ما سبق .::

كود:
rectangle rect1,rect2,rect3;

استدعاء الأعضاء :.

أعضاء الصنف لا يمكن أن نصل إليها من خارج الصنف إلا عن طريق الكائنات ويتم ذلك بالصيغة التالية :

كود:
Object_name.member
حيث .::
Object_name : اسم الكائن .
member : اسم العضو الذي نريد الوصول إليه .

مثال : إذا أردنا الوصول للدالة area() باستخدام الكائن rect نكتب الآتي :

كود:
rect1.area()


مؤثر دقة الوصول Scope Resolution Operator

عبارة عن مؤثر يستخدم عندما تكتب تفاصيل الدالة العضو خارج الصنف .

الصيغة العامة للدالة التي تكتب خارج الصنف هي :

كود:
DataType ClassName::FunctionName (Function Arguments )
قــهــوة غير متصل  
قديم 19-09-2008, 09:20 PM   #3
قــهــوة قــهــوة غير متصل
طالب ماسي
 
الصورة الرمزية قــهــوة
افتراضي رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


الشرح اللي راح هذا كله كان من غير اي تفاصيل وممكن ان الفكرة مازالت غامضة عند البعض

هذا شرح اكثر تفصيل للاكثر استيعاب





مقدمة : بعيداً عن البرمجة

الآن كبداية لو قلت لك ماذا ترى بجانبك على اليمين أو على اليسار أو فوقك أو تحتك أو أمامك (طبعاً امامك ذي واضح انه كمبيوتر طالما قرأت هذا السطر ) ...

على العموم ستقول بجواري أشياء كثيرة ولاحظ كلمة أشياء باللون الأحمر ..

ماهي هذه الأشياء التي بجوارك ؟

الإجابة على هذا السؤال ستختلف من شخص إلى أخر ..

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

ولو قمت أنت بفتح النافذة فإن أي شئ تقع عينك عليه فإنه يعتبر شئ (thing) ..

المهم ..

هناك قاعدة تقول : كل شئ في هذه الدنيا هو كائن .

الآن لو ركزت قليلاً فستجد كلمة شئ أيضاً باللون الأحمر ... لذلك ستستنج أنت أن كل ماهو بجوارك وكل ماتراه عينك هو كائن Object (بطل .. ماشاء الله عليك ) .

لأن القاعدة تقول كل شئ هو كائن يعني الشئ = كائن .

فإذا نظرت إلى الدولاب الذي كنت تقول عليه قبل قليل أنه شئ فهو كائن وذلك بالإستناد إلى القاعدة التي وضعناها وإلى الكمبيوتر فهو كائن و إلى الكتاب فهو كائن .. وهكذا ..

وهنا يأتي التساؤل:

ماهو الكائن (Object) ؟


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

إذا ماهو الكائن ؟

كما ذكرنا فإن الكائن هو شئ وهناك قاعدة تقول :

كل كائن في هذه الدنيا له شيئين وهما أساليب وخصائص .

إذا اتفقنا ولكن مامعنى أساليب وما معنى خصائص ؟ ...

في البداية وقبل ان نجيب على هذا السؤال يجب أن تثبت هذه المعلومة في عقلك وهي ان الكائن Object له شيئين هما خصائص (Attributes) وأساليب (methods)

بكلام أخر يتكون الكائن من :
1- خصائص attributes
2- أساليب methods

(لاحظ أني اتكلم بشكل نظري إلى الآن )...


طيب مامعنى خصائص ؟

معنى كلمة خصائص هي أشياء موجودة في الكائن ولايستطيع أن ينفك عنها وتكون ملازمة للكائن .

مامعنى أساليب ؟

معنى أساليب هي أشياء يقوم بفعلها الكائن أي أشياء ينفذها الكائن .


طيب كيف نفهم هذا الكلام الفلسفي ؟





الحلقة قصدي الرد الجاي اخبركم
قــهــوة غير متصل  
قديم 21-09-2008, 12:44 AM   #4
قــهــوة قــهــوة غير متصل
طالب ماسي
 
الصورة الرمزية قــهــوة
افتراضي رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


وصلنا عند كيف نفهم هذا الكلام الفلسفي ؟

بسيطة وهي أن نأخذ مثال واقعي ...

بما أن القاعدة تقول كل شئ هو كائن إذا دعنا نأخذ مثال يكون ككائن ...

لذلك سيكون مثالنا هو (الإنسان) ...

فهو شئ وهو كائن ايضاً..

وبما أنه كائن فإن له أساليب وخصائص كما ذكرنا في القاعدة ...

إذا ماهي خصائص الإنسان وماهي أساليبه ؟.

خصائصه وهي الأشياء الملازمة له ولايستطيع ان ينفك عنها ...
مثل لون البشرة
الطول
الوزن
الحجم
العمر
...

أساليب الإنسان

وهي حسب القاعدة الاشياء التي يقوم بها الكائن


فماهي الأشياء التي يقوم بها الإنسان ..

المشي..
الجري
النوم
الحركة إلى اليمين
الحركة إلى اليسار

وهذا يوضح مامعنى أساليب وخصائص الكائن ...؟

لذلك الآن نريد الإختبار هنا فلو قلت لك خذ كائن يمثل سيارة ...

فماهي خصائص وأساليب كائن السيارة ؟


كائن الجوال

سأترك كائن السيارة كمثال لك ...

وسأعطي مثال أخر لترسيخ الفهم ...

مثال : كائن الجوال

الآن سنتكلم عن كائن يمثل جوال ...

إذاً سأحضر قلم وسأستخرج الخصائص والأساليب ... (لاحظ أني بعيدة عن البرمجة)

خصائص كائن الجوال ...
1- لون الجوال .
2- الشركة المصنعة
3 - الموديل .
4- سنة التصنيع.
5- دولة التصنيع.
6- حجمه.
7 - وزنه .

وبإمكانك إستخلاص الكثير ...

أساليب كائن الجوال (أي ماهي الاشياء التي يستطيع فعلها الجوال ؟)

1-الإتصال .
2- قطع الإتصال.
3- تخزين الأرقام.
4- البحث عن رقم معين .
5- تحويل المكالمات.
,,,,,

أشياء كثيرة يمكنك إستخلاصها ايضاً ...

إذاً ستستنتج شئ من ذلك وهو ..

إذا أنا أعطيت محمد كائن جوال وأعطيت صالح كائن جوال وقلت لهم كل واحد منكم يستخرج لي خصائص وأساليب كائن الجوال ,,

فستلاحظ أن محمد سيحضر خصائص وأساليب مشابهه لما سيحضره صالح ولكن من سيكون أفضل هل كائن الجوال الذي جاء به صالح أم محمد ؟

جواب هذا السؤال يعتمد على معرفة كل منهم بالتفصيلات الدقيقة للجوال

ولاحظ الكلام الذي وضعنا تحته خط ...

أي إذا جاء شخص وقال لي أريد كائن يمثل كتاب ...

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

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

الآن أريد منك أن تعبر عن كائن الجوال الذي شرحناه ولكن باللغة الإنجليزية ولاحظ أني لا أريد كود برمجي وإنما عبر كما عبرنا ولكن استخدم اللغة الإنجليزية ...

عندها ستقول عن الخصائص ..

Attributes :
1- mobile color
2- model
3- made year
4- made in
5- wieght
6- size


وبالنسبة للأساليب ... فستقول :

Methods :

1- Connections
2- Disconnect
3- Save Numbers
....


فكما ترى ليس هناك شئ صعب وإنما إذا فهمت الفكرة فتستطيع التعبير بالعربي أو بالإنجليزي ...


( )
قــهــوة غير متصل  
قديم 21-09-2008, 03:12 AM   #5
قــهــوة قــهــوة غير متصل
طالب ماسي
 
الصورة الرمزية قــهــوة
افتراضي رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


العلاقة بين الخصائص والأساليب

كما ذكرنا سابقاً وهو أن أي كائن (Object) يتكون من أساليب (methods) و خصائص (attributes) ..

ملاحظة : يطلق على خصائص كلمة Attributes وفي بعض الأحيان تجدها بإسم Properties ..

طيب التساؤل هنا : هل يوجد علاقة تربط بيط الأساليب والخصائص في كل كائن أم لا ؟

الجواب على هذا التساؤل سيكون بأخذ مثال بسيط .. فلو أخذنا كائن انسان وكان من احدى خصائص الإنسان الوزن وسنفرض أننا نتكلم عن إنسان بوزن 100 كيلو جرام ..

السؤال الآن هل إذا قام الشخص صاحب هذا الوزن بإجراء عمليات إحماء وهرولة وجري فهل على مدار فترة زمنية معينة فهل سيبقى وزنه كما هو ؟

بالطبع ستقول لي لا لأنه قد يصبح مثلاً 93 كيلو جرام أي نقص ..

إذا بما أن الجري أسلوب والوزن خاصية إذاً فإن أسلوب الجري قام بالتأثير على خاصية الوزن إما بالإنقاص أو بالزيادة ...

ومن هنا نستنتج أنه هناك علاقة بين الخصائص والأساليب ..

وهذه العلاقة هي أن الأساليب التي يقوم بها كائن معين تؤثر على خصائص ذلك الكائن .

ولاتقلق عزيزي القارئ فكل ذلك سيتضح عندما نطبق الأمثلة ولكن أردت أن يكون البدء من الصفر ...

وهنا خلصنا إلى أنه هناك علاقة في أي كائن بين خصائصه وأساليبه أي أن الأساليب وهي الأعمال التي يقوم بها الكائن فإنها تؤثر على الخصائص وهي صفات ذلك الكائن .

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

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


ولاتقلق كل هذا سيتضح بإذن الله تعالى ,,,



شرح ووصف الكائن

أرجوك ضع خطين تحت كلمة (شرح) ...

الآن خذ أنت أي كائن وقم بإستخراج أساليبه وخصائصه ولن أحدد لك كائن معين ... خذ أي كائن تريده أنت وأستخرج أساليبه وخصائصه كما ذكرنا ...

السؤال هنا : عندما تقوم أنت بإستخراج الخصائص والأساليب لكائن معين فمالذي تفعله أنت ؟

الجواب بإختصار : هو أنك تقوم بشرح الكائن .

والسؤال الأخر : هو لمن أشرح أنا هذا الكائن ؟

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

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

ولكن نحن نشرحها للكمبيوتر لكي يفهم ماذا نريد ..

يعني أحنا نقول الكمبيوتر ترى الكتاب فيه خصائص كذا وفيه أساليب كذا وكذا ..

فهل عرفت الآن لماذا تقوم أنت بتفصيل الخصائص والأساليب لكائن معين ؟ (إذا قلت لا بأخرجلك مع الشاشة )


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

كالتالي :







وتقوم بتعبئة هذا الجدول بالأساليب والخصائص الخاصة بإسم الجدول .

وللبقية حوار بإذن الله تعالى ...


( )
قــهــوة غير متصل  
قديم 24-09-2008, 09:35 PM   #6
قــهــوة قــهــوة غير متصل
طالب ماسي
 
الصورة الرمزية قــهــوة
افتراضي رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


الكائنات من فصيلة واحدة

الكائنات التي تكون من فصيلة واحدة


طيب الآن إسأل نفسك سؤال يقول :

أليس محمد وعلي وصالح وجمال وعائشة وخديجة وسلمى هم كائنات يمثلون كائن إنسان ؟

ستقول لي : نعم .

طيب ما الذي إختلف ..

ستجد أن أساليب وخصائص الإنسان ثابته لكل إنسان :
أي أن كل إنسان له طول وله وزن وله جنس إما ذكر أو أنثى وله أساليب فكلهم يستطيعون الجري والمشي وغير ذلك ..

طيب ما الذي إختلف بين هؤلاء الأشخاص إذاً ..

كما قلنا أن شرح كائن الإنسان ثابت فمعروف ماهي خصائصه وماهي أساليبه وهي ثابته

ولكن مالذي تغير بين محمد وعائشة بين سلمان الأبيض وسعد الأسود ...؟

الجواب هو الذي اختلف ليس الخصائص والا الأساليب وإنما هي قيم الخصائص

وللتوضيح : فإن عائشة خاصية الجنس = انثى بينما سعد لديه خاصية بإسم الجنس ولكنها = ذكر

سلمان لديه خاصية لون البشرة = ابيض بينما سعد لديه أيضاً خاصية بإسم لون البشرة ولكنها = أسود .

إذا ً نستنتج من ذلك أني أشرح الكائن وأستخرج أساليبه وخصائصه مرة واحدة .

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

وللترسيخ فإن كائن الجوال الذي شرحناه من قبل ..

لو وضعنا فيه خاصية شركة التصنيع على أنها = Nokia نوكيا
وقمنا بإحضار كائن جوال اخر وغيرنا خاصية شركة التصنيع = ايركسون

فإن كلاهما جوال ولكن يختلفان في قيم الخصائص فقط فالأشياء التي يمتلكونها ثابتة ولكن قيم تلك الأشياء مختلفة ..

وأرجوا أن تكون الفكرة قد إتضحت ...




تمهيد الكائن وإنهائه

مامعنى تمهيد الكائن وإنهائه ؟

لو أخذنا كائن سيارة مثلاً فإحدى خصائص هذا الكائن هي السرعة .
وهي كل مرة متغيرة مرة 100 ومرة 70 ومرة 140 وهكذا ..

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

قد يقول شخص السرعة = 0 وربما = 10 واحدهم يقول = -1 .

طيب الآن عندما يأتي ليشغل السيارة فهل ستشتغل السيارة من السرعة 170 مثلاً . بالطبع ستبدأ من صفر مثلاً ...

طيب كيف عرفت السيارة أنها ستبدأ من صفر ؟

الجواب أن هناك قيمة إبتدائية تم وضعها للسرعة ...
أي أن الشركة وضعت السرعة = 0 عند البداية .
فلو أنها وضعت السرعة = 170 . فتخيل أنك أول ماتحرك المفتاح في السويتش إلا أنت في الجدر .. .

لذلك عندما يتم إنشاء أي كائن فإن جميع خصائصه تأخذ قيماً إبتدائية أو إفتراضية فحرارة السيارة عندما لاتعمل السيارة تكون قيمتها هي 0 مثلاً أو 1 أو أي شئ ...

لذلك فكل كائن يوجد فيه أسلوب وظيفته هي فقط تمهيد وتصفير ووضع قيم إفتراضية لخصائص الكائن ..

فكائن السيارة يحتوي على أسلوب يتم تشغيله في البداية ويقوم هذا الأسلوب بتحديد القيم الإبتدائية لجميع خصائص الكائن ...
مثل أن هذ الأسلوب يعمل كالتالي :
ضع السرعة = 0
ضع الحرار = 1
....

لجميع الخصائص الخاصة بالكائن ...

مثل هذا الأسلوب يسمى : الباني أو المحمل أو أسلوب البداية ويسمى بالإنجليزي Constructor
وهو أسلوب يستخدم للتمهيد فقط ...

وكما أن هناك أسلوب لبدء الكائن وتمهيده ..

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

ونفهم من هنا أن هناك أسلوبين مع الكائن وهما للبداية و للنهاية ...

وأرجوا ان تكون المعلومة قد اتضحت ..

وللبقية حوار بإذن الله تعالى ...

( )
قــهــوة غير متصل  
قديم 27-09-2008, 09:26 PM   #7
قــهــوة قــهــوة غير متصل
طالب ماسي
 
الصورة الرمزية قــهــوة
افتراضي رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


الكائن قد يكون مجموعة كائنات

الآن عزيزي لاحظ معي هذا الكلام فالكائن قد يكون مجموعة كائنات ... كيف ذلك ؟

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

الآن خذ مثال كائن السيارة ... فهو كما ذكرنا كائن .

طيب السيارة تتكون من ماذا ؟

1- الماكينة (وهي كائن) فالمكينة لها خصائص وأساليب .
2- البطارية (وهي كائن) ...
3- هيكل السيارة (وهو كائن) ...
...

وهكذا فلاحظ أن تكوين السيارة جاء بعد تكوين عدة كائنات أيضاً ..

لذلك فإنك قد تحتاج لشرح كائن معين إلى كائنات اخرى لإنشاء ذلك الكائن .أي

إذا أردت سيارة بالتفصيل الممممممممممممممممممممممل جداً فإنك ستذهب وتشرح كائن يمثل مكينة وقد تحتوي الماكينة نفسها على مجموعة كائنات أيضاً وتروح تشرحها وهكذا

وبعدها تروح للبطارية ويمكن كمان فيها مجموعة من الكائنات .. يعني وأنت طيب ما أنت مغلق من شرح كائن سيارة إلا في عام 2050 هجري مو ميلادي

وهذا يجعلنا نستنتج أن هناك كائنات معقدة جداً جداً .

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

الخلاصة من موضوع بعيداً عن البرمجة

1- أن كل شئ في هذه الدنيا يعتبر كائن (Object) .
2- أن الكائن يتكون من خصائص (Attributes) و أساليب (Methods).
3- الخصائص هي الأشياء التي تكون ملازمة للكائن ولا يستطيع أن ينفك عنها .
4- الأساليب هي الأشياء التي يقوم بعملها أي كائن .
5- أن كل كائن توجد فيه علاقة بين خصائصه وأساليبه حيث أن الأعمال التي تقوم به الأساليب ستؤثر على قيم خصائص ذلك الكائن .
6- أني أقوم بشرح ووصف الكائن ووضع أساليبه وخصائصه لكي أشرحه للكمبيوتر .
7- أن الفصيلة هي مجموعة غير معروفة العدد من الكائنات بكلام أخر أن الفصيلة هي مجموعة من نفس الكائنات ولكن مختلفة في قيم الخصائص .
8- أن كل كائن معه أسلوبين من أساليبه المتعددة احدها يكون لتمهيد وبناء الكائن وأخر يكون لهدم وإنهاء الكائن .
9- أن الكائن قد يكون مكون من مجموعة من الكائنات .
10 - يمكن تمثيل هذا الكلام على الكمبيوتر بطرق مختلفة.
قــهــوة غير متصل  
قديم 28-09-2008, 09:29 PM   #8
قــهــوة قــهــوة غير متصل
طالب ماسي
 
الصورة الرمزية قــهــوة
افتراضي رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


شرح الكائن والتعريف به ( عملياً ).

الخطوة الأولى

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

والآن افرض اننا خرجنا بالأساليب والخصائص التالية للجوال .

الخصائص.

1- اللون.
2- الشركة المصنعة .

الأساليب .

1-الإتصال
2-قطع الإتصال.

فقط كبداية على الأقل.

الآن استخرجنا الذي نريده كما ذكرنا على ورق... فما هي الخطوة الثانية .

الخطوة الثانية

الخطوة الثانية هنا هي أن نقوم بشرح كائن الجوال للكمبيوتر فكيف يكون ذلك ؟

بالنسبة للخصائص : فإنه يتم تمثيلها في لغة البرمجة بالمتغيرات Variables
بالنسبة للأساليب : فإنه يتم تمثيلها في لغة البرمجة بالدوال functions ولكن عندما تكون الدالة داخل كائن فإنه يطلق عليها أسم Method .
إذاً عندما ذكرنا في الجزء النظري أن الكائن هو مجموعة من الخصائص والأساليب فهذا نظرياً أما كائن الكمبيوتر فسيكون هو عبارة عن مجموعة من المتغيرات والدوال .

ماذا بعد ذلك ؟

الآن بعد أن عرفنا أن الكائن في الكمبيوتر هو عبارة عن متغيرات ودوال (خصائص وأساليب) .

إذاً بقي علينا أن نعرف الطريقة التي سنشرح بها للكمبيوتر فكيف نحدد مجموعة المتغيرات والدوال لكائن معين ؟

بكلام أخر كيف نقول للكمبيوتر : ترى لدينا كائن جوال فيه الخصائص كذا والمتغيرات كذا ؟

الجواب هو كلمة class .

ولكن ماهي class ؟

لن أقوم بإعطائك كلام فلسفي ولكن بإختصار هنا كلمة كلاس هي لتخبر أنك ستقوم الآن بشرح خصائص وأساليب كائن معين .

بكلام أخر فإن كلاس هو الخريطة الخاصة بالكائن أي أنك تقول للكمبيوتر سأشرح لك الكائن الفلاني ..

أي بكلام اخر أيضاً فإن الكلاس هو الشرح الخاص بالكائن وهو المكان الذي تضع فيه الأساليب والخصائص الخاصة بكائن معين وهي المتغيرات والدوال .

فيصبح الكلاس الآن هو عبارة عن مجموعة من المتغيرات والدوال .

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

أي أن كلاس هو شرح لمواصفات الكائن .




( )
قــهــوة غير متصل  
قديم 29-09-2008, 09:01 AM   #9
قــهــوة قــهــوة غير متصل
طالب ماسي
 
الصورة الرمزية قــهــوة
افتراضي رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


إنشاء الكائن و: ماهية new ؟

إذاً السؤال هنا : كيف أنشئ كائن من نوع Mobil ؟

الجواب كل كائن يتم تمثيله عن طريق متغير

طيب وماذا أيضاً ..

ولإنشاء أي كائن فإنني أستخدم كلمة new

نقوم بعمل متغير بإسم nokia وهو هنا يمثل الكائن وبعد ذلك إستخدمت الكلمة new وهنا كأنني أقول أنشئ كائن جديد من الكلاس موبايل

الآن أصبح المتغير nokia هو عبارة عن كائن نوعه Mobil

استخدام الكائن بعد إنشائه : طريقة الوصول لمحتويات الكائن

لقد ذكرنا سابقاً أن إنشاء الكائن يتم كما رأينا بإستخدام كلمة new ..

ولقد أنشأنا كائن بإسم nokia الآن السؤال هنا هو كيف أستخدم الكائن nokia ؟

الجواب بكل بساطة فأنت عندما شرحت الكلاس Mobil فأنت تقول أي كائن يتم إنشائه من هذا الكلاس فإنه سيحتوي على دالتين هما Connect و DisConnect ومتغيرين هما color و company .

إذا فإن nokia سيحتوي على دالتين هما Connect و DisConnect و متغيرين هما color و company والسبب لأن المتغير أو الكائن nokia هو عبارة عن كائن من النوع Mobil ..

طيب السؤال الآن هو كيف أصل لهذه الدوال والمتغيرات الموجودة في كائن(متغير) nokia ؟

الجواب هو بإستخدام مايسمى بمعامل الكائن أو الـ Object Operator وهو عبارة عن شكل سهم كالتالي

< -

أي بكلام أخر فإنني بعد إنشاء الكائن سأقوم بإستخدام المتغير يليه شكل السهم يليه محتويات الكائن من متغيرات ودوال

إلى هنا أنهينا الجزء الذي احتوى على مايلي :

1- استخدام class
2- استخدام Variables
3- استخدام new
4- استخدام < -

وهذه الأشياء الأربعة المذكورة هي التي ستكون بداية دخولك إلى عالم الكائنات بإذن الله ..
قــهــوة غير متصل  
قديم 04-10-2008, 01:34 PM   #10
قــهــوة قــهــوة غير متصل
طالب ماسي
 
الصورة الرمزية قــهــوة
افتراضي رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


مبدأ الوراثة:

الوراثة هو مايجعل اللغة، لها المكانة العليا بين لغات البرمجة الأخريات، لأنها ببساطة تمكن الحاسب من التفكير في الأشياء كما يفكر الإنسان عن الأشياء التي حوله، "إنا نقترب من عصر يفهم الحاسب ما نحن فيه." كي أكون أكثر وضوحاً عن الوراثة، خذ المثال التالي:

الوراثة: هو إمكانية اكتساب Class جديد "خصائص واساليب" Class آخر هو بالأصل ينتمي إليه.
مثال:
Class جوال Nokia: يرث من Class جوال الذي يمتاز بأن له لوحة مفاتيح وبالقدرة على الاتصال. ويزيد عليه قابلية لعب الحية snake به.

Class أسد: يرث من Class الثدييات الذي يمتاز بأنه يلد. ويزيد عليه أنه حيوان مفترس وغيره من الزيادات.

Class الثدييات: يرث من Class الحيوان الذي يمتاز بأنه يأكل وينام ويموت. ويزيد عليه بأنه يلد.

نستفيد من هذه أن الأسد أيضاً يأكل وينام ويموت لأنه حيوان. (لاحظ السلسلة من أسد }} ثديي }} حيوان }} شيء Object.

الزر Button: يرث من كلاسcomponent الذي يمتاز بأنه يمكن التعامل به وأخذ بيانات منه. ويزيد عليه بأنه يقبل الإدخال عن طريق الضغط على الفأرة.

حاوي الكلمات TextField: يرث من كلاس component الذي يمتاز بأنه يمكن التعامل به وأخذ بيانات منه. ويزيد عليه بأنه يقبل الإدخال عن طريق لوحة المفاتيح.

كلاس Component: يرث من صف شيء Object الذي لا يمتاز بشيء. ولكن يزيد عليه أنه يمكن التعامل به وأخذ بيانات منه.

أعتقد أن الوراثة قد تفهم جيداً عن طريق تلك الأمثلة.
ملاحظة: الكلاس الذي لا يرث من كلاس معين، يرث من كلاس شيء Object. الذي هو يقع في أعلى السلسة.

من الملاحظ أيضاً أن لكل Class أب مباشر واحد يرث منه.


الفائدة من الوراثة:
تخيل صديقاً لك لديه جوال Nokia وهو جالس إلى جوارك. وتخيل نفسك تريد الاتصال بأحد أقاربك. فقلت له: ممكن جوالك الـ Nokia؟ بالمنطق، سوف يعطيك جواله أليس كذلك؟؟
تخيل أنك قلت له: ممكن جوالك؟؟ (لم تقل جوالك الـNokia) بالمنطق أيضاً، زميلك سيعطيك جواله Nokia. لأن جواله الـNokia هو عبارة عن جوال. إذاً يمكنك الاتصال به.
تخيل أنك قلت له: ممكن جوالك Seimens؟ بالمنطق أيضاً سوف يرد عليك ويقول: ليس لدي جوال Seimens.

هل فهمتم هذه العلاقات والمبدأ؟ تخيل أنك تريد صنع برنامج يستخدم جوالاً للاتصال. إن المنطق يقول لك: لست مضطراً إلى ذكر نوع الجوال، بل يكفي أن تذكر أنك تريد جوالاً لبدأ العمل. فإنك لا تريد سوى الاتصال. فأيما أعطيت من أنواع من الجوالات فبرنامجك سيعمل بدون أي مشاكل.

تخيل أن لديك صندوق به مجموعة Collection من الأقلام مرتبة ترتيباً معيناً تستطيع من خلاله معرفة وتتبع الأقلام من الأصغر إلى الأكبر مثلاً. فلن يضرك إن لم تعرف نوعية هذا الترتيب. قد يكون مرقم ArrayList، أو سلسلة LinkedList، أو Stack أو Queue أو متجه Vector أو غيرها أو غيرها. فما دام أنها مجموعة Collection فإنك ستستطيع البحث فيه بطريقة أو بأخرى لا داعي لمعرفتها. فإنك بذلك تستطيع أن تأمر أحداً (أو تنادي على وسيلة Methodوتقول له: "يوجد بهذا الصندوق مجموعة Collection من الأقلام، الرجاء أن تأتيني بقلم أخضر اللون." لاحظ عدم ذكرك لنوعية المجموعة، فإن ذلك غير مهم معرفته لا لك ولا هو فإنه سيستطيع البحث فيه لأنه مجموعة Collection.

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

أعتقد بهذه الأمثلة، أن الفكرة اتضحت عن الوراثة ومفاهيمها وكيف أنها من ما يجعل البرمجة الشيئية محبوبة بين المطورين.
قــهــوة غير متصل  
قديم 05-10-2008, 07:27 AM   #11
قــهــوة قــهــوة غير متصل
طالب ماسي
 
الصورة الرمزية قــهــوة
افتراضي رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


طيب عندي سؤال

هل يشتق الـ Method من الـ Object
و هل الـ Object يشتق من الـ Class

يعنى الترتيب يكون تنازليا Class - Object - Method


الإجابة السريعة:

الـObject: عبارة عن شيء موجود مثل الفأرة التي بيدك.

الـClass: عبارة عن نوع للشيء، مثلاً نوع الشيء الذي بيدك عبارة عن شيء من نوع فأرة.

الـMethod: عمل يستطيع عمله الObject. مثلاً يمكنك الضغط على الزر الأيسر للفأرة.

الاجابة بالتفصيل:

أتى التطوير في علم البرمجة نحو التركيز على البيانات (أشياء أو كائنات Objects) والتي بدورها تصنف إلى أصناف Classes أي أن هناك أصناف من الكائنات ولكل منها سلوكه methods أو خدماته البيانات التي تحدده بالضبط أي تحدد هويته . لنأخذ مثال الحسابات المصرفية:
فيمكن أن يكون عندنا الكثير من الحسابات المصرفية والتي نعتبرها كائنات objects ولكن كلها تندرج تحت نفس المفهوم أو الصنف الذي هو حساب مصرفي Class حيث هذا المفهوم يحدد ماهية الحسبات المصرفية من ناحية بياناتها وكيفية عملها.

من هنا الصنف Class هو نموذج عن الكائنات أو تصور عن مفهومها يتحدد به ماهيتها والخدمات التي تطبق عليها وبتعريف الصنف نكون أضفنا نوع بيانات جديد إلى البرنامج يمكن العمل عليه كمفهوم كامل من ناحية البيانات والخدمات المتعلقة به
وبعد ذلك تتم عملية انشاء الأشياء أو الكائنات objects التابعة لل classes بحسب ما عندنا من كائنات واقعية وفعلية ونحدد بالضبط قيم بياناتها مثل انشاء عدة حسابات مصرفية كلها لها نفس البيانات المحددة بقيم فعلية مثل
الحساب الأول رقم: 1000001، اسم العميل: خالد، الرصيد: 1000، ...
الحساب الثاني رقم: 1000002، اسم العميل: علي، الرصيد: 2000، ...
الحساب الثالث رقم: 1000003، اسم العميل: محمد، الرصيد: 1500، ...
طبعا بيانات الكائنات تحدد عند إنشائها أو لاحقا بعد إنشائها من خلال مشيدات أو بانيات constructors الفئة أو الخدمات التي توفرها

هنا نكون وضحنا العلاقة بين Object and Class


أما الطرق (نهج، دوال، خدمات، سلوكيات، رسائل) methods فهي عبارة عن خدمة توفرها الـ Class
قــهــوة غير متصل  
قديم 05-10-2008, 07:29 AM   #12
قــهــوة قــهــوة غير متصل
طالب ماسي
 
الصورة الرمزية قــهــوة
افتراضي رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


انتهيت بحمد الله من سرد شروحات Object-Oriented

( )


اتمنى ان يكون الجميع استفاد من هذا الشرح البسيط

الدروس عبارة عن مجموعة شروحات من مواقع مختلفة مع عمل واضافة تعديلات مني لايصال المعلومة

اشكر كل من شكرني او دعا لي سواء بادراج رد بالموضوع او تقييم او رسالة خاصة ...لكمـ كل الشكر

والعذر و السموحة منكمـ لحذف الردود فقد كانت برغبة مني وذلك لتسهيل ايصال المعلومة للجميع بشكل واضح .. ارجوا المعذرة

الشكر موصول للاخ جمال ( JB is COOL ) لمتابعته ومراقبته الموضوع الله يعطيه الصحة والعآفية...


والآن بعد ماخلصت بامكانكمـ تضيفوا ردود ان احببتمـ ...

لكن لدي طلب بسيط : ارجوا لكل من يستفيد من هذا الموضوع الدعاء لي ولوالدي بظهر الغيب


اتمنى لكمـ التوفيق والسداد من رب العبآد .....




قــهــوة غير متصل  
قديم 05-10-2008, 11:21 AM   #13
azeez912 azeez912 غير متصل
مشرف سابق
 
الصورة الرمزية azeez912
افتراضي رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


بارك الله فيكِ اختي قهوه

... واسأل الله ان يغفر لك ولوالدينك ويديمهم لكِ بالصحة والعافية ..

تحية طيبه لكِ اختي الكريمة .


بالنسبه للشرح كان يتمثل في اللغة المحببه الى قلبي cpp وايضا على منصة .net
حيث لا يمكن ان تصل الى كائن بهذه الطريقة -> الا فقط بي cpp .

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



اختي الكريمه .. كثير من الكتاب الذين هم اعلى منا في درجاتهم العلمية لا ينقص من قدر ما بذلوه ان يضعوا المصادر في نهاية مؤلفاتهم او كتبتهم او مقالاتهم العلمية ..

اقدر عملكِ وجهدكِ .. وتقبلي ملاحظتي .

azeez912 غير متصل  
قديم 05-10-2008, 01:57 PM   #14
JB JB غير متصل
مشرف سابق
 
الصورة الرمزية JB
ناجح رد: ◘البــرمــجـة الشــيئـيــة | Object-Oriented Programming| ◘


وعليكم السلام و رحمة الله و بركاته

اختي القديرة قهوة مجهود اكثر من رائع ما شاء الله عليكي موضوع سلس و بسيط و مرتب و منسق جداً

ان شاء الله كل الطلاب بيستفيدو من طرحك المميز و يدعو لك من قلوبهم بظهر غيب

تستاهلي كل خير

دمتي بحفظ الرحمن
JB غير متصل  
 

مواقع النشر (المفضلة)

أدوات الموضوع
انواع عرض الموضوع

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

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

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


الساعة الآن 12:06 PM.


Powered by vBulletin® Version 3.8.1, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd. TranZ By Almuhajir
جميع المواضيع والمشاركات تعبر عن وجهة نظر أصحابها
ولا تعبر باي شكل من الاشكال عن وجهة نظر منتديات AOUA
تصميم وتطوير : التكنولوجيا الماسية