البرمجة الشيئية.......ماهى؟؟

المشرف: Ahmedn1

البرمجة الشيئية.......ماهى؟؟

مشاركةبواسطة نجمة الجليد » الجمعة فبراير 12, 2010 1:56 pm

السلام عليكم ورحمة الله وبركاته........
طبعا كلنا عارفين اننا هندرس البرمجة الشيئية فى الترم التانى فحبيت اقدملكم شوية معلومات عن البرمجة الشيئية يارب الكل يستفاد :wink: :wink:
ما هي الحاجة إلى البرمجة الشيئية؟
لقد تطورت البرمجة الشيئية بسبب القصور الذي وجد في نظم البرمجة التي سبقت البرمجة الشيئية ,

اللغات الإجرائية Procedural language:
من أمثلة اللغات الإجرائية لغات: السي و الباسكالل و الفورتران.
في اللغات الإجرائية تقوم كل عبار Statement بجعل الكبيوتر يقوم بتنفيذ أمر ما.

اللجوء إلى الدوال Functions:
عندما أصبحت البرامج أكثر كبرا , إقترح المبرمجون أن يتم تقسيم البرنامج إلى مجموعة من العبارات statement و هذه الـ statement بدورها بمكن أن تتجزأ إلى وحدات أقل
و لهذا السبب تم عمل الدوال function , و التي تقوم بجعل البرنامج أكثر قابلية للفهم من البرنامج اللذي يقوم الإنشان بعمله.
في بعض اللغات مثل الس و السي++ يتم الإشارة إلى مصطلح الـ function بمصطلع subroutine أو مصطلح subprogram.
البرنامج اللذ تم برمجته عن طريق لغة إجرائية تنقسم إلى عدة دوال , و على الأقل فإن كل دالة من هذه الدوال لها غرض واضح و محدد و مميز عن باقي الدوال الأخرى في الرنامج اللذي تم عمله.

المشاكل التي تتظهر مع البرمجة الإجرائية:
مع تزايد حجم حجم البرامج و مع تزايد ظهور برامج معقدة , بدأت تلوح مشكل مع نظام البرمجة الهيكلية , ككون وجود صعوبة في عمل المشاريع , ضعف التخطيط , و تتالي المشاكل.
و عند تحليل الأسباب التي أدت إلى ظهور مثل هذه المشاكل يتضح لنا بأن هذه الأسباب لها علاقة في الصيغة الإجرائية نفسها procedural paradigm.
و بالتالي فانه من الواضح , عند التعامل مع البرامج الكبيرة مع البرمجة الهيكلية نجد بأن البرامج الكبيرة تصبح أكثر صعوبة.
و إذا ذهبنا إلى مناقشة الأسباب التي أدت إلى مثل هذه العوائق أو المشاكل فسوف نجد بأن هناك مشكلتان لها صلة ببعضهما البعض و هما:
السبب الأول :االدوال لها وصول إلى البيانات الشاملة بطريقة ليس بها حدود Unrestricted access to global data
السبب الثاني: عدم وجود صلة بين الدوال المختلفة و بين البيانات المختلفة في البرنامج يؤدي إلى نموذج سيء إلى العالم الحقيقي poor model of real world
و سوف نقوم بدراسة كل من السببين على حدى. و ذلك من خلال توضيح مشاكل سوف تواجهنا في عمل محيط لبرنامج مخزن.

الوصول الغير محدد unrestricted access:
في لغات البرمجة الإجرائية مثل لغة السي , يوجد نوعان من البيانات و هما:
البيانات المحلية local data: و هي بيانات توجد في داخل الدوال نفسها , و تستخدم فقط في دالخ هذه الدالة.
دالة العرض display functionفي برنامج المخزن من المرجح أن تستخدم بيانات محلية لتعرض العناصر و الوحدات المطلوبة.
البيانات المحلية لها صلة وثيقة للدالة التي تعرف بها و تكون في مأمن من التعديل من قبل الدوال الأخرى المجودة في البرنامج.
البيانات الشاملة global data: من المتوقع بأن هناك دوال سوف تقوم بإستخدام نفس البيانات في البرنامج و لذلك فإننا نلجأ إلى البيانات الشاملة و التي يتم الوصول إليها من خلال أي دالة من دوال البرنامج


















في البرامج الكبيرة يكون هناك عدة دوال و كذلك يتم اللجوء كثيرا إلى إستخدام البيانات الشاملة , و الصيغة التي يتم الإتباع بها في البرمجة الإجرائية procedural paradigm تؤدي إلى وجود العديد من الإتصالات المتشابكة و التي تؤدي إلى حودث مشاكل كثيرة










و المشاكل التي تيسببها الإتصال المتداخل ما بين الدوال و البيانات هي:
أولا: جعل البرنامج أكثر صعوبة في الفهم
ثانيا: وجود صعوبة في فهم البرنامج
ثالثا: عند اللجوء إلى تعديل البيانات الشاملة فإن ذلك قد يؤدي بنا إلى التعديل في الدوال كلها !!!!
للمثال:
في برنامج المخزن , يمكن أن نفكر في عمل كود لعناصر المخزن و يمكن أن يتغير من 5 درجات إلى 12 درجة , و هذا يستلزم تغيير نوع البيانات من المتغير short إلى المتغير long
و هذا مشلبه لما يمكن أن يحدث عندما يقوم سوبرماركت بنقل الخبز من الجناح 3 إلى الجناح 8 مثلا , و هذا يؤدي لكل شخص يتعامل مع المحل إلى تغيير خط سيره في الوصول إلى الخبز
و عموما يتضح لنا بأن تغيير البيانات في البرامج الكبيرة سيكون في أغلب أحواله صعبا , في تعديل الدوال , و تعديل أي شيء متعلق بهذه الدوال , و لذلك فإن التعديل يكون صعبا مع البرمجة الإجرائية.

نمذجة العالم الحقيقي Real-world modeling:
المشكلة الأكثر تأثيرا في البرمجة الإجرائية من خلال الصيغة الإجرائية procedural paradigm هي: تنظيم الدوال و البيانات المختلفة و المنفصلة عن بعضها في للبرنامج لتكون سيئة التوضيح للغاية للعالم الحقيقي , ففي العالم الحقيقي اللذي نعيش به فإننا نتعامل مع أشياء objects مثل الناس و السيارات , و من الواضح بأن هذه الأشياء لا تكون شبيهة بهذه الدوال أو البيانات الموجودة في البرمجة الإجرائية , حيث أن العالم الحقيقي يتضمن كلا من الخصائص و و السلوك و سوف نقوم بتوضيح المعنى من الخصائص و السلوك كالتالي.

الخصائص (attributes/characteristics):
لنفترض بأننا نقوم بتوضيح خصائص لشيء ما و ليكن الناس فإن الفرد الواحد يمكن أن يمتلك الخصائص التالية: لون العين , الوظيفة التي يعمل بها , الطول , الوزن .... إلخ من الخصائص التي يمكن أن توجد في أي فرد و يختلف بها عن أي فرد آخر.
و الخصائص في العالم الحقيقي تكون مكافئة و شبيهة للبيانات الموجودة في البرنامج , و هذه البيانات بالطبع يكون لها قيمة محددة , مثل اللون الأزرق للعين , الطبيب كعنوان للمهنة.

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


أنواع جديدة من البيانات New data types:
هناك مشاكل أخرى يمكن أن نواجهها من خلال إستخدامنا للبرمجة الإجرائية , و هي القدرة على عمل أنواع جديدة من البانات.
وعموما فإن لغات البرمجة تمتلك العديد من الأنواع الأساسية للبييانات built-in data types و ذلك مثل : العدد الصحيح , الأعداد ذات النقطة العائمة , الحروف , السلسلة .... إلخ , و لكن لنفترض بأنك تريد أن تقوم بعمل نوع خاص من المتغيرات خاص بك؟
فلنفترض بأنك في صدد عمل الأعداد المركبة , أو عمل مصفوفة ثنائية الأبعاد , فإنك ستجد صعوبة في عمل ذلك!!!
و القدرة على عمل أنواع المتغيرات الخاصة بك تسمى الإمتدادية extensibility , حيث أنك تقوم من خلالها بعمل إمتداد في قدرات اللغة.
و عموما فإن اللغات التقليدية لا تكون عادة إمتدادية
من خلال عمل أنواع المتغيرات الخاصة بك لن تكون قادرا على تجميع كل من البعدين (س) أو (ص) مع بعضهما في متغير واحد يسمى على سبيل المثال point , و من بعد ذلك نقوم بإضافة و طرح قيم من ذلك المتغير , و هذا نجد صعوبة في عمله من خلال اللغات الإجرائية !!!!

ظهور البرمجة الشيئية:
الفكرة الأساسية للبرمجة الشيئية هي جمع كل من البيانات و الدوال المتعلقة مع بعضها في مفهوم واحد أو وحدة واحدة تسمى الئ object.
و دوال الأشياء في لغات البرمجة الشيئية مثل لغة السي تسمى الدوال الأغضاء, و تقوم بإعطاء وسيلة وحيدة للوصول إلى البيانات في الدوال , فمثلا لو أحببت أن تصل إلى عنصر في الـobject سوف تقوم بإستدعاء دالة عضووة و تقوم بإحضار عنصر البيانات إليك.
و لذلك فإننا نلاحظ بأن البيانات تكون خفية , ولذلك لتكون آمنة من الوصول الغير المناسب.
و في هذه الحالة فإن البيانات و دوالها تكون قد كبسلت إلى كينونة وحيدة encapsulation.
و كبسلة البيانات و إخفاء البينات من الخصائص الهامة جدا و المميزة للبرمجة الشيئية.
لو أنك أحببت أن تعدل في بيان ما في object معين , فإنك تعلم بالتحديد مالدالة التي تتعامل مع هذا البيان.
و من الواصح بأنه يلزمنا فقط معرفة الدالة التي تتعامل مع هذا البيان حيث أن باقي الدوال قيتم منع وصولها إلى البيان , و هذا في حد ذاته يسهل: لكتابة , debug , و الصيانة للبرامج.
لغات البرمجة الشيئية مثل السي++ عموما تتكون من مجمموع من الأشياء objects , و التي تتصل مع بعضها من خلال دوال عضوة member functions.






















يجدر بنا الإشارة إلى أن الدوال الأعضاء member functions تسمى في بعض لغات البرمجة الشيئية مثل السي++ بالطرق methods. , و كذلك فإن عناصر البيانات يشار إليها بـ : الخصائص أو المتغيرات المقترحة instance variables , و يسمى ذلك في البرمجة الشيئية بإرسال رسالة إلى الـ object. , و على الرغم من ذلك فإن هذا المسمى ليس مستعملا في بعض اللغات مثل السي++ , و لكنه يستعمل من أجل زيادة التكرار و بالأخص في التصميم المعمد على الأشياء object oriented design.

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


خصائص لغت البرمجة الشيئية:

الأشياء objects:
عندما تلاحظ وجود مشكلة في البرمجة الشيئية , فإنك سرعان ما تجد سهولة في حلها نظرا لأن المشكلة تكون منقسمة إلى عدة دوال , و لكن كيف تنقسم إلى عدة أشياء objects؟ , بخلاف الدوال فإن الـ objects لها تأثير مذهل و مفيد في تصميم البرامج , و النتيجة تبدو من خلال التقارب ما بين الـ object في لغة البرمجة الهيكلية و مابين الـobject في لعالم الحقيقي.
و هناك على العموم العديد منت الأنواع للـ object مثل:
الأشياء المادية:
السيارة في محاجاة الطريق
المكونات الإلكترونية في برنامج تصميم للدوائر الإلكترونية
الدول في النموزج الإقتصادي
عناصر بيئة المستخدم:
النافذة
القوائم
الأشياء الرسومية مثل المستطيل , الدائرة , و الخطوط .... إلخ
الفأرة , لوحة المفاتيح , مشغل الأقراص , و الطابعة
إنشاء مخزن للبيانات:
المصفوفات المصنعة
الرص stack
القاوئم المتصلة Linked list
الشجرة الثنائية binary tree
كينونات الإنسان:
الموظفين
التلاميذ
المستهلكين
الباعة
مجموعة البيانات:
المخزن
ملف البيانات
القاموس
جدول بخطوط الطول و خطوط العرض لمدن العالم
أنواع البيانات العمرفة للمستخدم:
الوقت
الزوايا
الأعداد المركبة
عناصر ألعاب لكمبيوتر:
السيارات في سباق سيارات
أماكن في الـbroad games مثل الطرنج و الداما
الحيوانات في محاكاة البيئة
المنافسن في ألعاب المغامرة

المقارنة ما بين أشياء objects البرامج و أشياء العالم الحقيقي هو نتيجة دمج البيانات و الدوال , و النتيجة هي الـ objects.
الـ objects أدى إلى تقدم مذهل في تصميم البرامج , و لا يوجد أي وجه للمقارنة مابين بينة تصميم البرامج في البرمجة الإجرائية و بينها في البرمجة الشيئية.

الصفوف classes:
في البرمجة الشيئية نشير إلى لـ object على أنها أعضاء من الـ class فماذا يعني ذلك؟
لنعقد مقارنة , فإن أغلب لغات الكمبيوتر لها أنواع عديدة من المتغيرات built-in data types , على سبيل المثال الـ int في السي++ و الذي يشير إلى متير من النوع (عدد صحيح) , يمكننا أن نقوم بتعريف متغير من هذا النوع عن طريق الآتي:
int day;
و بذلك التعريف فإننا قمنا بعمل تعريق لمتغير يسمى day من النوع int أي أنه متغير عدد صحيح
و على هذه الشاكلة أيضا , فإننا نستطيع تعريف عدة أشياءمن نفس objects












و لذلك فإن الـ class هي عبارة عن وصف لمجموعة من الـ objects المتشابهةة , و هذا يلائم الفهم الغير التكنيكي لنل لمفهوم الـ class.

الوراثة inheritance:
فكرة الـ class أدت إلى فكرة الوراثة . في حياتنا اليومية , نقوم بإستخدام مسمى class و قسمت إلى مجموعات فرعية منها subclass.
حيث أننا نعلم أن الحيوانات تقسم إلى : ثديات , برمائيات , حشرات , طيور ...إلخ . و كذلك فإن الـ class الخاصة بالعربات من الممكن أن تقسم إلى سيارات , شاحنات , درجات بخارية , ... إلخ.
مبدأ هذا الترتيب من التقسيم أن كل subclass تشارك الـ class التي انقسمت منها بمجموعة من الخصائص, فمثلا فإن السيارة و الشاحنة أو الدراجة البخارية تتشلبه في بعض الخصائص في أنها تمتلك مثلا إطارات و محرك , و بالأضافة إلى هذه الخصائص المشتركة فإن كل subclass يكون لها خصائصها الخاصة بها . على سبيل المثال فإن الحافلة لها عدد كبير م المقاعد للناس , و كذلك الشاحنة لها مساحة لحمل حمولات ثقيلة.
























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




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

عمل أنواع جديدة للبيانات new data types:
واحدة من مزايا الأشياء objects أنها تعطي المبرمج طريقة ملائمة لتخليق أنواع جيدة للبيانات , فلنفترض بأنك تعمل في أماكن ذات أبعاد ثنائية (مثل أبعاد س و أبعاد ص) أو خطوط الطول و خطوط العرض) فإنك ستكون في حاجة إلى التعبير عن هذه القيم مع عمليات رياضية مثل:
Postion1 = positon2 + origin
حيث أن كل من متغير positon1 و متغير position2 , و متغير origin (نقطة الأصل) , تقوم بعرض زوج من القيم الرياضية , و عن طريق عمل class تقوم بدمج هاتات القيمتان , و تعريف position1 , position2 , origin لكي تكون objects من هذه الـ class سوف نستطيع عمب نوع جيد من أنواع البيانات.

التحميل و تعدد الأشكال polymorphism and overloading:
المقصود يالتحميل هو أن نفس المعامل يمكن أن يكون له أكثر من معنى
إستخدام المعامل أو الدوال بطرق مختلفة , معتدمدا على اللذي تقوم بعمله , يسمى تعدد الأشكال
عندما يوجد معامل مثل + أو = , فإنه يعطي القابلية للعمل على أنواع جديدة من البيانات , و يسمى في هذه الحالة تحميلا overloading , و خاصية التحميل هي نوع من خاصية تعدد الأشكال

يارب اكون قدرت افيدكم.............

المصدر : ملف موجود مسبقاً ... من منتديات عرب تيـــم
آخر تعديل بواسطة Tawfeek Yahia في الجمعة فبراير 12, 2010 9:55 pm، عدل 1 مرة
السبب: تم تعديل المصدر
لا يوجد نجاح دائم دون الإلتزام الدائم لذا فلا يوجد نجاح عظيم بدون ألتزام شديد.
لـــ أتونى روبنز

What You Need And More


W3COMP


نجمة الجليد
Inactive for 12 months
 
مشاركات: 41
اشترك في: السبت نوفمبر 28, 2009 12:26 am
مكان: عالم بلا زمان ولا عنوان
أعطى: 211 شكر
أخذ: 386 شكر
الحالة الحاسوباتية: الفرقة الثالثة (علوم الحاسب)
سنة التخرج: 2013

12 الأعضاء التاليين يتقدمون بالشكر الى نجمة الجليد على المشاركة المفيدة:
A.Sa3d, Ahmed-Shukri, Ahmedn1, cis_engneer, Med7at, waleed samy, yasmeen, أهلاوي صميم, ابراهيم سعيد, الروش, جاره القمر, شريف النحلة

 

 

Re: البرمجة الشيئية.......ماهى؟؟

مشاركةبواسطة Ahmedn1 » الجمعة فبراير 12, 2010 5:19 pm

شكرا لنجمة الجليد على التوبيك الجميل ده
انا هشرح الموضوع تانى بصورة مبسطة

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

البرمجة الشيئية OOP

احلى حاجة فى البرمجة الشيئية انها بتحاكى الواقع real world
يعني اى حاجة فى الOOP فيه مقابل ليها فى العالم المادى
فهتلاقونا كل شوية بندي مثال من الواقع

الوقتى لما بنيجي نكتب برنامج بيبدل قيم متغيرين مكان بعض رقمين بتكتب كود و ليكن
int temp = a;
int a=b;
int b=temp;

هو بياخد اول متغير يحطه فى متغير مؤقت temp و بعدين يبدل القيم و ياخد المتغير التانى يساويه بالمؤقت و بكده فهو بدل القيمتين
تمام ؟
لو بنعمل برنامج كل شوية بنحتاج نبدل قيم مكان بعضها - اى برنامج مش هندي مثال محدد - بس فلنفترض البرنامج ده هيحتاج يبدل القيم 10 مرات مثلا جوة البرنامج
يبقى هنيجي فى كل مكان هنبدل فيه و هنكتب التلات سطور بتوع التبديل دول
يبقى عندنا 30 سطر كود مكررين

فلما يبقى عندك عدد سطور كتير هيادى الى :
1- الكود معقد
2- صعب القراءة
3- صعوبة اكتشاف الاخطاء فى الكود

فالناس عملوا حاجة اسمها methods الميثود دى وظيفتها بتكتب فيها الكود اللى انت عاوزه يتنفذ و بتديلها اسم و بعد كده كل ما تحتاج تستخدم الكود ده مجرد بس بتنادى على اسمها

طبعا مش هندخل فى تفاصيل الميثود لان احنا بنوضح الفكرة بس
بس هنفترض ان احنا حطينا التلات سطور بتوع التبديل في ميثود و سميناها swap
كده احنا فى ال10 اماكن اللى عاوزين نبدل فيهم القيم بتاعة المتغيرات بدل ما هنكتب كل مرة التلات سطور هنكتب اسم الميثود بس

يعني هنيجي نقوله
Swap(a,b)
طبعا التفاصيل هتاخدوها بعدين
المهم الوقتى انك بدل ما كنت هتكتب فى الكود 30 سطر ( 3 سطور فى كل مكان من ال10 ) هتكتب 10 سطور بس
+ ال3 اللى فى الميثود اصلا
يبقى كده بدل ما كانوا 30 سطر فى الكود عشان يعملوا التبديلات بقوا 13 سطر بس

فهمتوا الفكرة ؟
عاملة بالظبط زى لو انت بتيجي تشغل اغنية عندك على الكمبيوتر
بتروح تفتح الفولدر
تضغط على الاغنية دبل كليك

الاغنية تشتغل

يبقى عملت خطوتين اهو
طب لما تخلص انت عاوز تشغل واحدة تانية
هتقوم عامل نفس الخطوتين و هكذا يبقى هتتعب نفسك على الفاضي
الحل البديل ايه ؟
انك بتقوم رايح حاطط الاغانى كلها اللى انت عاوزها فى playlist و تسيبها تشتغل لوحدها من غير ما انت تتدخل

نفس الفكرة بتاعة الميثود

طيب ده جزء بسيط جدا من الموضوع
بعد كده هندخل فى حاجة اعمق شوية
الClasses

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

الوقتى لو انت عملت ميثود فيها كود بيجمع رقمين
و ميثود فيها كود بيطرح
و ميثود بتضرب و هكذا

و استخدمتهم فى برنامج
و بعد كده لما تيجي تعمل برنامج تانى لقيت نفسك محتاجلهم
هتقوم كاتب الميثود دول تانى

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

عاملة زى ايه مثلا ؟

عاملة مثلا زى شنطة الاسعافات الاولية كده
انت لو ماشي فى حتة و اتعورت هتقوم طالع جري على اقرب صيدلية تشتري شاش و مش عارف ايه و تعالج الجرح
لو ماشي فى حتة تانية و اتصبت هتعمل نفس الكلام
هو الشاش و الحاجات التانية دى موجودة فى اى حتة بس انت بتحتاج تجمعهم بنفسك و تروح تجيبهم

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


و دى مفيدة في ايه؟
ان كل مبرمج بيبتدي حيث انتهى الاخرون
يعني واحد مثلا عمل برنامج الة حاسبة و عمل كلاس فيها كل الميثود بتوع العمليات الحسابية
و واحد تانى بيعمل برنامج لشركة تجارية فهيحتاج فيه جزء صغير للعمليات الحسابية
فهيضيع وقته يعمل فى الميثود الحسابية مع ان دول جزء فرعي جدا فى البرنامج و فيه حاجات تانية اهم زى حساب الضرائب و المعاملات و كده

فاللى عمل الالة الحاسبة ده ممكن يجمع الميثود اللى عملها فى كلاس
و يرفعها على النت
و ييجي التانى ده بتاع البرنامج التجارى يدور على النت على كلاس حسابية يلاقي الكلاس دي
يقوم منزلها و حاططها عنده فى البرنامج و يركز بقى فى بقية البرنامج اللى هو اهم بكتير من انه يضيع وقته يقعد يعمل ميثود تجمع و تطرح و كده

مفهومة الفكرة؟

عاملة زى ايه؟

شركة بتصنع عجل عربيات بس
تمام؟
و شركة بتصنع عربيات كاملة

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


بعد كده طبعا فيه مبدا الinheritance , polymorphism دول يستحسن تسيبوهم لغاية ما تدرسوهم
عشان مش تتوهوا فيهم

ارجو ان الموضوع يكون وضح

توبيك هام جدا لمن يكره الكلية


Ahmedn1 Launched


If You Want , You Can


If U Can Think It .... Then U Can Algorithm It
صورة العضو الشخصية
Ahmedn1
عضو الهيئة المعاونة
عضو الهيئة المعاونة
 
مشاركات: 1366
اشترك في: الثلاثاء سبتمبر 23, 2008 10:57 am
مكان: فى بيتنا
أعطى: 2397 شكر
أخذ: 4348 شكر
الحالة الحاسوباتية: الفرقة الرابعة (علوم الحاسب)
سنة التخرج: 2012

9 الأعضاء التاليين يتقدمون بالشكر الى Ahmedn1 على المشاركة المفيدة:
A.Sa3d, cis_engneer, El.Monaliza, LORA, maruma, Med7at, nova_cis, yasmeen, نجمة الجليد

Re: البرمجة الشيئية.......ماهى؟؟

مشاركةبواسطة nova_cis » الاثنين فبراير 22, 2010 12:08 am

'طبعا بشكرك على البساطة اللى اتكلمت بيها عن الموضوع
وكمان ان وضحتلنا الفكرة العامة عن المادة وربنا يوفقنا جميعا ان شاء الله

مــــــــــــــــــــــــا تــــــــــــــــــــــأخــــــــــــــــــــــــر مــــــــــــــــــــــــــــن بـــــــــــــــــــــــــــــــدأ


nova_cis
Inactive for 13 months
 
مشاركات: 28
اشترك في: الأربعاء يناير 13, 2010 11:03 pm
مكان: الفضاء.مجرة درب التبانة. المجموعة الشمسية .كوكب الارض .قارة افريقيا. مصر .الدقهلية.ميت غمر
أعطى: 59 شكر
أخذ: 77 شكر
الحالة الحاسوباتية: الفرقة الثانية
سنة التخرج: 2013

Re: البرمجة الشيئية.......ماهى؟؟

مشاركةبواسطة Lost Dreams » الاثنين فبراير 22, 2010 12:52 am

شكرآ جدآ يابشمهندس على التوضيح ده ويارب يكون الترم ده أحسن من الترم الأول ومايضعش لنا أى تعب

لــدي من الكبرياء مايكفي لأصرخ بأني لست حزين..ولكني لا أملك من الكذب مايدفعني للقول بأني سعيد


Lost Dreams
Inactive for 35 months
 
مشاركات: 2
اشترك في: السبت فبراير 20, 2010 11:38 pm
مكان: آخر الدنيا
أعطى: 44 شكر
أخذ: 16 شكر
الحالة الحاسوباتية: الفرقة الثانية
سنة التخرج: 2013

Re: البرمجة الشيئية.......ماهى؟؟

مشاركةبواسطة Mohamed Shahpoup » الاثنين فبراير 22, 2010 1:02 am

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

يعنى " أحمد داوود موجود" هههههههههههه
واللى عايز حاجة موجود ان شاء الله معاكم اقرأ ودور إسأل وانت كده تبقى تمام .

جرب تقرأ ... وللعلم كليتنا او مجالنا عامة .... إقرأ ثم إقرأ إقرأ ثم إقرأ إقرأ ثم إقرأ إقرأ ثم إقرأ .
وربنا يوفق الجميع ...

Mohamed Shahpoup
Focus Team Organizer
Java Instructor
Honest Academy




Mohamed Shahpoup
Inactive for 32 months
 
مشاركات: 193
اشترك في: الاثنين ديسمبر 17, 2007 10:42 pm
مكان: Germany
اوسمة: 1
مشرف (1)
أعطى: 756 شكر
أخذ: 890 شكر
الحالة الحاسوباتية: الفرقة الرابعة (علوم الحاسب)

2 الأعضاء التاليين يتقدمون بالشكر الى Mohamed Shahpoup على المشاركة المفيدة:
A.Sa3d, Ahmedn1

Re: البرمجة الشيئية.......ماهى؟؟

مشاركةبواسطة نجمة الجليد » الثلاثاء فبراير 23, 2010 11:12 pm

Gavin King كتب:مشكورة جدا الباشمهندسة صاحبة الموضوع
ومشكور جدا يا احمد على البساطة فى الشرح ده
انا اول مرة فى حياتى اقرأ عن OOP بالبساطة دى ربنا يوفقك ويوفق كل طلبة حاسبات وكل محب للعلم
بس نصيحة عامة يعنى :
بداية الموضوع جيدا جدا جدا
بس غالبيته انه عامل زى ميكون مترجم وغالبا وعن نفسى انا مبحبش ان اذاكر برمجة وما سواها من كتب عربى او حاجة مترجمة لعربى
يمكن انتو لسه فى اولى ومش حاسينها
اقرأ كتب من دلوقت ومتقولش ان الكتب انجليزى ده مش انجليزى خالص
يعنى مثلا : شوفو كده اللينك ده وقولولى ايه رايكوا فى شرح OOP ولو حد وقفت معاه حاجة .
مــــــــــــــــــــن هــنــــــــــــــــا

يعنى " أحمد داوود موجود" هههههههههههه
واللى عايز حاجة موجود ان شاء الله معاكم اقرأ ودور إسأل وانت كده تبقى تمام .

جرب تقرأ ... وللعلم كليتنا او مجالنا عامة .... إقرأ ثم إقرأ إقرأ ثم إقرأ إقرأ ثم إقرأ إقرأ ثم إقرأ .
وربنا يوفق الجميع ...

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

What You Need And More


W3COMP


نجمة الجليد
Inactive for 12 months
 
مشاركات: 41
اشترك في: السبت نوفمبر 28, 2009 12:26 am
مكان: عالم بلا زمان ولا عنوان
أعطى: 211 شكر
أخذ: 386 شكر
الحالة الحاسوباتية: الفرقة الثالثة (علوم الحاسب)
سنة التخرج: 2013

العضو التالي يتقدم بالشكر الى نجمة الجليد على المشاركة المفيدة:
Mohamed Shahpoup


العودة إلى منتدى البرمجة العامة والخوارزميات

الموجودون الآن

المستخدمون المتصفحون لهذا المنتدى: لا يوجد أعضاء مسجلين متصلين و 1 زائر