اخي شكرا لك
دروس في البرمجة الكائنية OOP لجميع اللغات الكائنية
اخي مجدي
في دورتك كلها لم تتكلم عن الApplet التي تختص في الويب
واجو منك ان تشرح لي بالتفصيل البرنامج التالي
// A first applet in Java.
3
4 // Java packages
5 import java.awt.Graphics; // import class Graphics
6 import javax.swing.JApplet; // import class JApplet
7
8 public class WelcomeApplet extends JApplet {
9
10 // draw text on applet’s background
11 public void paint( Graphics g )
12 {
13 // call superclass version of method paint
14 super.paint( g );
15
16 // draw a String at x-coordinate 25 and y-coordinate 25
17 g.drawString( "Welcome to Java Programming!", 25, 25 );
18
19 } // end method paint
20
21 } // end class WelcomeAppletتم تعديل هذه المشاركة بواسطة مجدي محمود في 26 ديسمبر 2004 في 20:50
لست متواجد بشكل يومي
هذه الدروس بيد الاخ ابو مازن حفظه الله
السلام عليكم، (هذه دروس محررة كانت في المنتدى سابقا قبل سنتين أو أكثر)!!!
نبدأ بإذن الله تعالى أول دروس Java وبالأعم البرمجة الكائنية . للمبرمجين.
ملاحظة : هذا الموضوع يناقش فقط مبادئ البرمجة الشيئية(الكائنية) ولا يدخل في الكود. في موضوع آخر قد يتم تعليم الكود. إن فهم هذا المبدأ جيداً يسهل عليك البرمجة في أي من Java أو C#، لذلك من الأفضل التركيز على فهم المبادئ للبرمجة الشيئية، لأنها لغة قريبة من لغة الإنسان في التفكير. فالبرمجة لم تعد التعامل بين أنواع الأرقام والحروف كما في اللغات الأخرى بل أصبحت التعامل مع الأشياء كما في حياتنا اليومية نتعامل مع أشياء.
لمن هذه الدروس : هذه الدروس لأصحاب الخلفية البرمجية في أي من هذه اللغات مثل Basic, Fortran, Cobol, C. ولأصحاب الخلفية في اللغات الشبه كائنية مثل C++, VB.
هذه الدروس ليست عن الخوارزميات والأدوات المتفق عليها في جميع اللغات مثل جمل التكرار والشرط وغيرهما For Next, Do Loop, If Then, subdirectory, functions.
الجزء الأول: ما هو الشيءObject ؟
1- تعريف الشيء (Object):
بما أن الجافا هي لغة برمجة تعتمد فيها على الأشياء وإن صح التعبير (الكائنات). فمن الأجدر الإقدام الآن وتعريف الشيء، إلا أني أجد نفسي فارغاً فلا أستطيع تعريفه بكلمات. فكلمة شيء عادة تستخدم لتعريف أشياء أخرى.
على كل حال نستطيع تعريفه بطريقة عكسية، بصفة عامة: فكل شيء عبارة عن شيء. فالحاسب شيء، والفأرة شيء، والنافذة Window شيء، والزر Button شيء، والأرقام أشياء، والكلمة String شيء، حتى المصفوفة Array شيء.
وهي ليست محكورة في الحاسب بل حتى الأشياء المحسوسة، فالباب شيء، والمصباح شيء، والسيارة شيء، والهواء شيء، وأي شيء حولك الآن هو شيء، أنت بنفسك شيء. وغيرها وغيرها كلها أشياء.
2-خصائص الأشياء:
1- كل شيء أو كل Object له:
أ- مكونات يتكون منه الشيء.
ب- أعمال تُنفذ على هذا الشيء أو ينفذها هذا الشيء. (أفعال أو أوامر)
أمثلة:
1- الباب الخشبي:
أ- مكون من: لوح على شكل مستطيل من الخشب، ومقبض، ومحاور على جانب اللوح لثبيتها على الجدار وغيرها من المكونات.
ب- العمل: افتح الباب، أغلق الباب، أغلقه من الداخل الخ...
2- الجوال:
أ-مكون من: لوحة مفاتيح، سماعة، و مايكروفون، وجهازي ارسال واستقبال، ذاكرة، شاشة، الخ..
ب-العمل: اتصل بالرقم الفلاني، سجل الرقم الفلاني، استقبل المكالمة، أغلق المكالمة، الخ.
3- المصباح:
أ- مكون من: زجاجة مفرغة بها بعض الأسلاك، تضيء بالحرارة.
ب- العمل: انر المصباح، أطفئ المصباح، الخ...
4- الكلمة String:
أ- مكونة من: سلسلة من الأحرف.
ت- العمل: كبر حروفها Upper Case ، صغر حروفها Lower Case، قارنها بكلمة أخرى، احسب عدد أحرفها الخ..
5- الرقم:
أ- مكون من: رقم.
ب- العمل: اجمع مع، اضرب بـ ، اقسم على الخ...
6- السلسلة LinkedList :
a. مكونة من: خانات لوضع الأشياء موصولة ببعضها.
b. العمل: (وسيلة تخزين معلومات) ابحث، أضف، احذف، الخ..
7- الزر Button:
a. مكون من: شكل، وموضع، ومساحة، ولون، ومستمع للحوادث من ضغط وكبس.
b. العمل: اضغط، (لكل زر عمل معين)، غير مكانه، غير لونه، غير شكله، غير وظيفته.. الخ..
8- المستطيل:
أ- مكون من: أربعة أضلاع متعامدة، وموقع.
ب- العمل: غير موقعه، حركه، اقلبه، غير أطوال أضلاعه، الخ..
وغيرها وغيرها من الأمثلة التي لا تنتهي، فكل شيء هو Object وكل شيء له مكونات و أعمال.
3- بهذا المفهوم نستطيع وضع خصائص للغات البرمجة شيئية التوجه:
1- كل شيء هو Object. كما أشرنا سابقاً
2- البرنامج هي مجموعة من الأشياء تعطي لبعضها أوامر لتنفيذ عمل معين.
3- كل شيء Object له ذاكرة مخصصة مكونة من أشياء Objects أخرى.
4- كل شيء ينتمي إلى صف Class معين. فالأبواب من صف باب، والأزرار من صف زر Button، والجوال من صف جوال. بمعنى آخر، لو قلت لك: ما هذا؟ وأشرت لك على كلمة معينة (Object) ، فستقول لي أن هذه (Class) String، أي من صف String. ولو قلت لك ابحث لي عن أي سيارة (Class) ، فستأتيني بسيارة معينة (Object). وهكذا.
================================================
مبدأ الوراثة:
الوراثة هو مايجعل اللغة، شيئية التوجه Java أو C#، لها المكانة العليا بين لغات البرمجة الأخريات، لأنها ببساطة تمكن الحاسب من التفكير في الأشياء كما يفكر الإنسان عن الأشياء التي حوله، "إنا نقترب من عصر يفهم الحاسب ما نحن فيه." كي أكون أكثر وضوحاً عن الوراثة، خذ المثال التالي:
الوراثة: هو إمكانية اكتساب فئة Class جديد "مكونات وأعمال"(راجع الدرس السابق) فئة آخر هو بالأصل ينتمي إليه.
مثال:
فئة جوال Nokia: يرث من فئة جوال الذي يمتاز بأن له لوحة مفاتيح وبالقدرة على الاتصال. ويزيد عليه قابلية لعب الحية snake به.
فئة أسد: يرث من فئة الثدييات الذي يمتاز بأنه يلد. ويزيد عليه أنه حيوان مفترس وغيره من الزيادات.
فئة الثدييات: يرث من فئة الحيوان الذي يمتاز بأنه يأكل وينام ويموت. ويزيد عليه بأنه يلد.
الزر Button: يرث من فئة Component الذي يمتاز بأنه يمكن التعامل به وأخذ بيانات منه. ويزيد عليه بأنه يقبل الإدخال عن طريق الضغط على الفأرة.
حاوي الكلمات TextField: يرث من فئة Component الذي يمتاز بأنه يمكن التعامل به وأخذ بيانات منه. ويزيد عليه بأنه يقبل الإدخال عن طريق لوحة المفاتيح.
فئة Component: يرث من فئة شيء Object الذي لا يمتاز بشيء. ولكن يزيد عليه أنه يمكن التعامل به وأخذ بيانات منه.
أعتقد أن الوراثة قد تفهم جيداً عن طريق تلك الأمثلة.
ملاحظة: الفئة الذي لا يرث من فئة معين، يرث من فئة شيء Object. الذي هو يقع في أعلى السلسلة.
الفائدة من الوراثة:
تخيل صديقاً لك لديه جوال Nokia وهو جالس إلى جوارك. وتخيل نفسك تريد الاتصال بأحد أقاربك. فقلت له: ممكن جوالك الـ Nokia؟ بالمنطق، سوف يعطيك جواله أليس كذلك؟؟
تخيل أنك قلت له: ممكن جوالك؟؟ (لم تقل جوالك الـNokia) بالمنطق أيضاً، زميلك سيعطيك جواله Nokia. لأن جواله الـNokia هو عبارة عن جوال. إذاً يمكنك الاتصال به.
تخيل أنك قلت له: ممكن جوالك Seimens؟ بالمنطق أيضاً سوف يرد عليك ويقول: ليس لدي جوال Seimens.
هل فهمتم هذه العلاقات والمبدأ؟ تخيل أنك تريد صنع برنامج يستخدم جوالاً للاتصال. إن المنطق يقول لك: لست مضطراً إلى ذكر نوع الجوال، بل يكفي أن تذكر أنك تريد جوالاً لبدأ العمل. فإنك لا تريد سوى الاتصال. فأيما أعطيت من أنواع من الجوالات فبرنامجك سيعمل بدون أي مشاكل.
تخيل أن لديك صندوق به مجموعة List من الأقلام مرتبة ترتيباً معيناً تستطيع من خلاله معرفة وتتبع الأقلام من الأصغر إلى الأكبر مثلاً. فلن يضرك إن لم تعرف نوعية هذا الترتيب. قد يكون مرقم ArrayList، أو سلسلة LinkedList، أو Stack أو Queue أو متجه Vector أو غيرها أو غيرها. فما دام أنها مجموعة List فإنك ستستطيع البحث فيه بطريقة أو بأخرى لا داعي لمعرفتها. فإنك بذلك تستطيع أن تأمر أحداً (أو تنادي على وسيلة Method أو Procedure أوSubdirectory (حسب ما يطيب لك تسميته) وتقول له: "يوجد بهذا الصندوق مجموعة List من الأقلام، الرجاء أن تأتيني بقلم أخضر اللون." لاحظ عدم ذكرك لنوعية المجموعة، فإن ذلك غير مهم معرفته لا لك ولا هو فإنه سيستطيع البحث فيه لأنه مجموعة List .
تخيل أنك تريد رص أشكالاً هندسية في مصفوفة Array. ليمكنك رسمها أو المقارنة بينها فيما بعد. بهذا تصبح المصفوفة من نوع شكلShape. فتأخذ بوضع المربع والدائرة والمثلث والمعين وغيرها من الأشكال في تلك المصفوفة. فلا بأس بذلك لأنها جميعها أشكال. ومن ثم أردت رسمها فطلبت من أحد الرسامين ذلك وقلت له: ارسم الأشكال التي بهذه المصفوفة. فمن غير التعقيد، سيرسم المربع لأنه شكل، والدائرة لأنها شكل، والمعين لأنه شكل وما إلى ذلك. فهو سيرسم أي شكل. كما تستطيع الطلب منه رسم المربع منها فقط بذكرك له ذلك فتقول له: ارسم جميع المربعات التي بهذه المصفوفة التي تتكون من الأشكال. فلا ضير في هذا أيضاً.
مثال عملي: برنامج إدارة موارد بشرية.
ليكن لديك الفئات التالية:
فئة موظف: مكوناته: اسمه، رقمه، راتبه، رتبته. وعملياته: زد في الراتب، حسم الراتب، آخر ترقية، كيف سلوكه؟
فئة مدير يرث من فئة موظف: مكوناته(نفس مكونات الموظف) وزد عليه، اسم القسم الذي يديره. وعملياته: (نفس عمليات الموظف) وزد عليه: تغيير القسم الذي يديره.
بفرض أنك تريد زيادة الراتب لجميع الموظفين (حتى المدراء منهم) فكل ما عليك هو أن تستدعي الأمر (زد في الراتب) لكل موظف بغض النظر إن كان مديرا أو لم يكن. ستتعامل مع كل موظف أو مدير كما لو أنه موظف. لأن كل موظف يحوي العملية المطلوبة.
أعتقد بهذه الأمثلة، أن الفكرة اتضحت عن الوراثة ومفاهيمها وكيف أنها من ما يجعل البرمجة شيئية التوجه محبوبة بين المطورين. إلا أن هذا ليس كل مافي البرمجة الشيئة من إمكانيات تمكنك بها، فإن هذا فقط جزء من ما تعطيك إياه. في الدروس القادمة سنتابع المفاهيم الأخرى.
تصفح الصنف Component الذي يمثل شيئا يوضع على النافذة مثل الأزرار ومحتوي الكلمات TextField وغيرها مما تعرفه.. في JDK
http://java.sun.com/j2se/1.5.0/docs/api/ja.../Component.html
في MSDN لمستخدمي تقنية الدوت نت.
http://msdn.microsoft.com/library/default....tclasstopic.asp
تستطيع من خلال هذه الوصلات التعرف على الفئة أو الصنف Component الذي يمثل شيئا يوضع على النافذة. ليكن حديثي عن الJDK: في هذه الصفحة ستجد كيفية التعامل مع أي Component سواء كان Button زرا أو حاوي كلمات TextField وغيرهما مما تتعامل معه دائما. تستطيع تصفح العمليات Methods أو كيفية إنشاء Compoent من خلال Constructor. وتستطيع استنتاج أن Component يرث من Object. كما أن Button يرث من Component.
بعد هذا توجه إلى Button لترى حجم ما ورثه من Compoent وكيف أضاف عمليات خاصة به. مثل تغيير الاسم الذي يظهر عليه! وغيرها.
إن تمكنك من استعمال هذه المكتبات تسهل عليك التطور في هذه اللغات.
لست متواجد بشكل يومي
كلام حلو والله
مثال تطبيقي عن البرمجة الكائنية التوجه
صفحاتي: صفحة حسام الملحم www.hussam.ws مدونة
آخر المشاريع: مشروع لغة برمجة عربية شيئية التوجه
- برنامج شجرة عائلة يعمل على الشبكة، استعرض شجرة آدم عليه السلام إلى الرسول صلى الله عليه وسلم
- حزمة ObjectDatabase للتعامل مع قواعد البيانات بصورة شيئية التوجه
- حزمة قارئ الدوال والمعادلات الرياضية، لغة برمجة عربية بسيطة
- حزمة الشاشة الخفيفة للمبرمجين والمطورين
- برنامج المسبح على الجوال
ألعاب على الجوال : 1-(لعبة O X على الجوال ) 2-(لعبة الرقم السري على الجوال ) 3-(لعبة آخر حبة على الجوال )
ألعاب على الحاسب: لعبة الوزراء الثمان ، لعبة شطرنج ، لعبة التركيب Tetris
مواضيعي:
الفرق الجذري بين الجافا و C# شرح التعامل مع WTK لبرمجة الجوالات
مشاركاتي:
برنامج (كاتب) للكاتب فهد OMLX، برنامج (المحول) للكاتب فهد OMLX، برنامج (Unit Storm) للكاتب بشير C&Dell، أيهما أكبر الأعداد الصحيحة أم الطبيعية للكاتب Romanof، سؤال رياضي بحت للكاتب VB6-Rocket، التحدي الكبير للكاتب ANSI،
يحوي الملف بعض الفئات تبين العلاقة بين أشياء مختلفة. وبصفة خاصة الفئة مصباح Lamp والتي من خلالها صنعنا مصابيح مختلفة، وأمككنا باستعمال الوراثة تطوير المصباح ليصبح له مواصفات غريبة. كما يوجد فيه مثال تطبيقي عن استعمال الخيوط Threading ، والواجهات interfaces، وتعدد الأوجه، وغيرها من مبادئ OPP.!!
Lamp عبارة عن مصباح. أوامر المصباح:
open() يفتح المصباح
close() يغلق المصباح
switchLamp() إذا كان مقفلا يفتحه وإذا مفتوحا يغلقه!
shake() هز المصباح بقوة معينة(قد تؤدي إلى كسره)
------
BurningLamp عبارة عن مصباح تحترق بعد فتحه وإغلاقه كثيرا!!! (له عمر محدد) (ترث من الفئة Lamp)
DynamicLamp عبارة عن مصباح تستطيع زيادة قوته وتنقصها (ترث من الفئة Lamp)
StrangeLamp عبارة عن مصباح لا يمكنك التنبئ بما يفعله! قد يعمل وقد لا يعمل عند فتحه!! (ترث من الفئة Lamp)
BigLamp عبارة عن مصباح كبير (يحوي عدة مصابيح) مثل كشاف الملاعب قوته هائلة!!!! (ترث من الفئة Lamp)
PlayingBoy ولد مشاغب يفتح ويغلق مصباحا!! (يرث من Thread) أوامره
startPlaying() يبدأ الولد في اللعب بمصباح معين.
----
PrintingPlayingBoy ولد مشاغب مع إمكانية طباعة ما يفعل (يرث من PlayingBoy)
Ball عبارة عن تصميم عام لكرة (لا يمكن صنع كرة من هذا النوع لأنها تجريدية abstract!
kick() تركل الكرة بقوة معينة, قد تؤدي إلى تنسيمها من الهواء إذا كانت قوية!!
shake() تهز الكرة بقوة معينة،
----
BasketBall عبارة عن كرة سلة (ترث من Ball)
LightBall عبارة عن كرة بداخلها مصباح! يعمل المصباح إذا ركلت الكرة! وتنطفئ إذا ركلت مرة أخرى. ( ترث من Ball)
ملاحظة:
فئة Ball و Lamp يتصفان بصفة مشتركة في أنك تستطيع (هزهما) Shakable!! الواجهة Interface
الأمر shake()
الفئة LampTest مسؤولة عن اختبار النظام! نصنع مصابيح جديدة بأنواع مختلفة، نشغل ونطفئ أيا منها.. وننظر إلى النتائج,, نصنع ولدا مشاغبا يقوم باللعب في مصباح معين،، نشاهد النتائج،، الخ...
حمل الملف الإصدار الجديد:
صفحاتي: صفحة حسام الملحم www.hussam.ws مدونة
آخر المشاريع: مشروع لغة برمجة عربية شيئية التوجه
- برنامج شجرة عائلة يعمل على الشبكة، استعرض شجرة آدم عليه السلام إلى الرسول صلى الله عليه وسلم
- حزمة ObjectDatabase للتعامل مع قواعد البيانات بصورة شيئية التوجه
- حزمة قارئ الدوال والمعادلات الرياضية، لغة برمجة عربية بسيطة
- حزمة الشاشة الخفيفة للمبرمجين والمطورين
- برنامج المسبح على الجوال
ألعاب على الجوال : 1-(لعبة O X على الجوال ) 2-(لعبة الرقم السري على الجوال ) 3-(لعبة آخر حبة على الجوال )
ألعاب على الحاسب: لعبة الوزراء الثمان ، لعبة شطرنج ، لعبة التركيب Tetris
مواضيعي:
الفرق الجذري بين الجافا و C# شرح التعامل مع WTK لبرمجة الجوالات
مشاركاتي:
برنامج (كاتب) للكاتب فهد OMLX، برنامج (المحول) للكاتب فهد OMLX، برنامج (Unit Storm) للكاتب بشير C&Dell، أيهما أكبر الأعداد الصحيحة أم الطبيعية للكاتب Romanof، سؤال رياضي بحت للكاتب VB6-Rocket، التحدي الكبير للكاتب ANSI،
هذا مثال آخر:
لدينا (وحش مرعب) الوحش
1- يتصف بأنه يحب مشاهدة التلفاز
2- إذا غضب يمكنه
أ -ضرب الأشياء التي تتكسر
ب -ركل الأشياء التي تتكسر
ج - رمي الأشياء التي تتكسر بالنار!!!
يوجد عندنا أشياء كثيرة تتكسر، منها التلفاز والبيضة والسيارة!!
هذه هي الأشياء التي يمكنها أن تتكسر!!
التلفاز عبارة عن شيء يتصف بأنه يتكسر!! تستطيع مشاهدة التلفاز وغلقه!! إذا تحطم التلفاز، تستطيع إصلاحه!!
البيضة عبارة عن شيء يتصف بأنه يتكسر!! تستطيع أكلها!! إذا أكلت البيضة أو تحطمت لا تستطيع إرجاعها كما كانت!!
السيارة عبارة عن شيء يتصف بأنه يتكسر!! تستطيع اصطدام شيء آخر يتكسر (سواء كان بيشة أم تلفازا أم سيارة أخرى)
إذا اطصدمت السيارة بشيء فهو يتكسر، لكن السيارة لا تتكسر إلا إذا اصطدمت بسيارة أخرى!!
class TV implements Destroyable{
boolean ok=true;
boolean on=false;
public TV(){}
public void turnOn(){
if(ok){
on=true;
System.out.println ("TV Working");
}
}
public void turnOff(){
if(ok){
on=false;
System.out.println ("TV Closed");
}
}
public boolean isOpen(){return on;}
public boolean isOK(){return ok;}
public void destroy(int power){
if(power>100){
turnOff();
ok =false;
System.out.println ("TV is destroyed");
}
}
public void fix(){
if(!ok){
ok=true;
on=false;
System.out.println ("TV is Fixed.");
}
}
public String toString(){
return "TV is ON?: "+on+"\tGoodCondition?: "+ok;
}
}البيضة:
class Egg implements Destroyable{
boolean ok=true;
public Egg(){}
public boolean isOk(){return ok;}
public void eat(){
if(ok){
ok=false;
System.out.println ("Egg is Eaten");
}
}
public void destroy(int power){
if(power>10 && ok){
System.out.println ("pluck");
ok=false;
}
}
public String toString(){
return "Egg good? : "+ok;
}
}السيارة
class Car implements Destroyable{
double streangth=10000;
public Car(){}
public boolean isOk(){
if(streangth>100)return true;
return false;
}
public void destroy(int power){
System.out.println ("Car is being destroyed: Shack-Shack");
streangth = streangth - power;
}
public void fix(int amount){
streangth += amount;
}
public double getStreangth(){return streangth;}
//Car Accedent !! crashes on anything that is destroyable!!!
public void crash(Destroyable d){
System.out.println ("Car Accedint: EEEEE OOOOOOOOOOOO Ta77777");
d.destroy(300);
if(d instanceof Car)//if d is a car, then damage this car also!!!
destroy(300);
}
public String toString(){
return "Car Power: "+streangth+"\tCar is ok?: "+isOk();
}
}لاحظ أن هذه الأشياء السابقة جميعها تتصف بأنها تتكسر!
interface Destroyable {
public void destroy(int power);
}هذا هو الوحش المرعب:
class Monster{
public Monster(){}
public void eat(Egg g){
g.eat();
}
public void punch(Destroyable d){
System.out.println ("Poff");
d.destroy(30);
}
public void kick(Destroyable d){
System.out.println ("Guanj");
d.destroy(80);
}
public void throwFireAt(Destroyable d){
System.out.println ("few few few...... few few few... few few fwe");
d.destroy(3000);
}
public void takeRest(TV tv){
if(tv.isOK()){
tv.turnOn();
System.out.println ("Monster watch tv!!");
}
}
public void finishRest(TV tv){
if(tv.isOK()){
tv.turnOff();
System.out.println ("Monster finished watching");
}
}
}برنامجنا عبارة عن صناعة بعض الأشياء التي تتكسر،، ونصنع وحشا.. الوحش يريد مشاهدة التلفاز.. يفتح التلفاز... فجأة تأتي سيارة وتصطدم بالتلفاز... التلفاز يتحطم كليا!!... الوحش يغضب على السيارة فيضربها ويركلها ويرمي عليها النار... حتى تتحطم السيارة!!!
class TestMyStrangeThings{
public static void main(String[]args){
Car c1=new Car();
Car c2=new Car();
TV tv1=new TV();
TV tv2=new TV();
Egg egg1=new Egg();
Egg egg2=new Egg();
Monster monster1=new Monster();
System.out.println (egg1);
c1.crash(egg1);
System.out.println (egg1);
System.out.println (c1);
c1.crash(c2);
System.out.println (c1);
System.out.println (c2);
System.out.println (tv1);
monster1.takeRest(tv1);
c2.crash(tv1);
System.out.println (tv1);
System.out.println ("Monster is angry!!!");
monster1.kick(c2);
System.out.println (c2);
monster1.throwFireAt(c2);
System.out.println (c2);
monster1.punch(c2);
System.out.println (c2);
monster1.throwFireAt(c2);
System.out.println (c2);
monster1.throwFireAt(c2);
System.out.println (c2);
monster1.throwFireAt(c2);
System.out.println (c2);
Door door=new Door();
door.open();
door.destroy(10);// we can do this,
//monster1.punch(door); //Error, water is not destroyable!!!!
//water has destory method, but we really dont know
//if water is destroyable which has more meaning!!
}
}نسيت أن أذكر أن عندنا باب:
class Door {
boolean open=false;
boolean destroyed=false;
public void open(){if(!destroyed)open=true;}
public void close(){if(!destroyed)open=false;}
public boolean isOpen(){return open;}
public void destroy(int power){
if(power>1)destroyed=true;
}
}مع أنه عنده الأمر destroy إلا أنه لا يتصف بهذه الصفة!! لاحظ أن الوحش لا يستطيع تدميره!!!
أرجو أن أكون قد وفقت في عرض مثال آخر على البرمجة شيئية التوجه!!
تم تعديل هذه المشاركة بواسطة أبومازن في 12 أغسطس 2005 في 21:31
صفحاتي: صفحة حسام الملحم www.hussam.ws مدونة
آخر المشاريع: مشروع لغة برمجة عربية شيئية التوجه
- برنامج شجرة عائلة يعمل على الشبكة، استعرض شجرة آدم عليه السلام إلى الرسول صلى الله عليه وسلم
- حزمة ObjectDatabase للتعامل مع قواعد البيانات بصورة شيئية التوجه
- حزمة قارئ الدوال والمعادلات الرياضية، لغة برمجة عربية بسيطة
- حزمة الشاشة الخفيفة للمبرمجين والمطورين
- برنامج المسبح على الجوال
ألعاب على الجوال : 1-(لعبة O X على الجوال ) 2-(لعبة الرقم السري على الجوال ) 3-(لعبة آخر حبة على الجوال )
ألعاب على الحاسب: لعبة الوزراء الثمان ، لعبة شطرنج ، لعبة التركيب Tetris
مواضيعي:
الفرق الجذري بين الجافا و C# شرح التعامل مع WTK لبرمجة الجوالات
مشاركاتي:
برنامج (كاتب) للكاتب فهد OMLX، برنامج (المحول) للكاتب فهد OMLX، برنامج (Unit Storm) للكاتب بشير C&Dell، أيهما أكبر الأعداد الصحيحة أم الطبيعية للكاتب Romanof، سؤال رياضي بحت للكاتب VB6-Rocket، التحدي الكبير للكاتب ANSI،
بصراحة انا لم اقرأ من موضوعك غير أول سطر ولكنه استفزنى
فال oop is a tech. not programming language
ابصراحه اني درست مادة الجافا
بس ماني فاهمة ويش صاير
كود يروح وكود ايجي
بس يوم قعدت اقرا واتفاعل مع موضووعكم حبيت المادة
بجد
ممكن اعطيكم اسئلة للجافا تكون محلولة وبحلها الليكم بس تفهموني ويش صاير فيها؟
مشكورررررررررررررررر اخى
جزاك الله خير
مشكووووووووووووووووووووورر أخي مجدي على المحاضرة
شرح مرتب ودروس رائعه ومفيده
مشكووور اخوي وبالتوفيق لك وللجميع ان شاااء الله^_^
السلام عليكم و رحمة الله و بركاته
الاخ مجدى - الاخوة الافاضل
شكرا ً على المجهود المبذول و لكن فى الحقيقة الامر يحتاج إلى دورة منسقة و منقحة فى صورة ملف PDF لان الموضوع منذ أكثر من سنتين و نصف و طبعا ً الردود و المداخلات الموجودة تشتت القارىء
لذا اعتقد لضمان عموم الاستفادة و دقتها فى توصيل المعلومة ان يتم تنقيحها بما يناسب المبتدىء و تكون متدرجة الصعوبة ليسهل الفهم و فى صورة ملف PDF أما المداخلات و الردود فيمكن تلخيصها فى ما بعد فى صورة ملحقة للملف الاصلى حتى لا يحدث تشتيت .
شكــــــــــرا ً
نظام مصرف Bank بسيط:
1. يقوم النظام بتعريف بنية البنك، المتكون من مجلس إدارة head office، مسؤول عن إدارة فروع المصرف branches.
2. بالإضافة إلى ضبط عمليات المصرف، وهي عبارة عن فتح حسابات للزبائن، إدارة العمليات على هذه الحسابات (إيداع، سحب، إغلاق حساب).
3. إدارة ملفات الزبائن customers.
بالاجتماعات مع المسؤولين بالبنك توضحت النقاط التالية:
1. يقدم المصرف نوعين من الحسابات، جارية current account وتقدم فائدة سنوية قدرها 3% يتم توزيع الأرباح (الفائدة) يومياً ، وحسابات توفير saving account وتقدم فائدة سنوية قدرها 5% يتم توزيع الأرباح (الفائدة) مرتين في العام في الأول من كانون الأول، وفي الأول من تموز.
2. مسؤولية مجلس الإدارة head office إدارة مجموعة من الفروع، واستحداث فروع جديدة في مناطق جديدة.
3. لكل فرع مدير مسؤول عن إدارة العمليات فيه، ومسؤول عن تصدير تقارير أسبوعية لمجلس الإدارة، الذي بدوره يقوم بمراقبة التقارير الواردة من الفروع.
4. يقوم الزبون بالاستعلام عن حسابه أو حساباته الخاصة به (لا يقدم البنك خدمة الحسابات المشتركة لأكثر من زبون، وبالتالي كل حساب خاص بزبون واحد فقط) فالمطلوب إظهار المعلومات الخاصة بالحساب كاملة.
5. يقوم الزبون بسحب وإيداع مبالغ مالية في حسابه.
6. يجب حفظ كامل المعلومات عن الزبائن.
7. يتميز كل حساب برقم سري يمتلكه صاحب الحساب لا يستطيع القيام بأي عملية (استعلام، سحب، إيداع) على حسابه دون استخدام هذا الرقم
الاستاذ مجدي
ارجو مساعدتي في حل المسألة التالية بلغة الجافا عموما (الحل فقط واجهة لا اربد ربط بقاعدة بيانات) وشكرا لك
الدرس مفيد جدا ونرجو التبسيط أكثر بالاسلوب العملي أي توضيح الدرس بالطريقة العملية وشكرا سالي
الموضوع برمجة الاهداف الموجهة نرجو توضيحها أكثر من ذلك
شكرا جزيلا جدا لكم ولمن نشرع العلم وساعد على التعليم
بس يا اخي العزيز مجدي ممكن توضح طريقة عمل الreference توضيح وافي لاني ما فهمت كيف تتم العمليه وشكرا
شكرا لجميع الاخو المشاركين في هدا الشرح واخص الاخ مجدي محمود وشكرا له بس ممكن تشرحلنا اكواد الواراثه بشكل اكبر لاني مبتداء وشكرا يا اخي العزيز راح اغلبك وشكرا
السلام عليكم
موضوع جميل ورائع من اخ رائع
جزاك الله خيرا
لا حول و لا قوة الا بالله العلي العظيم
مشروع المخازن و حسابات العملاء و الموردين مع التحليل بطريقة احترافية
السلام عليكم
انا بحاجة ماسة جدا للحصول على
cpu schedualing round-robin algorethem in java languag
ودورت ومش قادرة الاقي
raw3a_abdelhadi@yahoo.com
تم تعديل هذه المشاركة بواسطة _abdelhadiraw3a في 4 ديسمبر 2007 في 23:41
_abdelhadiraw3a كتب:السلام عليكمانا بحاجة ماسة جدا للحصول على
cpu schedualing round-robin algorethem in java languag
ودورت ومش قادرة الاقي
raw3a_abdelhadi@yahoo.com
الرابط التالي فية عروض باوربوينت عن Operating System Concepts with Java
ممكن تبحث داخلها عن الموضوع اللي تبحث عنه و ستجد الكود مكتوب بلغة جافا إن شاء الله
لا اله الا الله .. محمد رسول الله
(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)
يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين
جزيت الجنة ..موضوع في قمة الروعه
عندي سؤال بسيط وهو ما فائدة الCONSTRUCTOR
and this
وما الفرق أذا كانت تحتوي على براميتر وأو أذا كانت امبتي
