منتدى اول همسة
◄▓▒--> اهلا وسهلا بيك معنا ... معا" ننجز المستحيل
بـــ ــمـ ـــنــــتـدى أول هــــ ـــــمــــــــســـــــة
هذا المنتدى خاص لنايف العمودي <--▒▓►ஐ๑

منتدى اول همسة
◄▓▒--> اهلا وسهلا بيك معنا ... معا" ننجز المستحيل
بـــ ــمـ ـــنــــتـدى أول هــــ ـــــمــــــــســـــــة
هذا المنتدى خاص لنايف العمودي <--▒▓►ஐ๑

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

منتدى اول همسة

لا تندم على حب عشته ,, حتى ولو صار ذكرى تؤلمك .. فاذا كانت الزهور قد جفت وضاع عبيرها ولم يبقى منهاغير الأشواك فلا تنسى أنها منحتك عطراً جميلاً أسعدك
 
الرئيسيةأحدث الصورالتسجيلدخولخروج
اللـهم اهـدِنا فيمَن هـديت .. وعافـِنا فيمـَن عافـيت .. وتولنا فيمن توليت .. وبارك لنا فيما أعطيت .. وقِـنا شـر ما قضيت .. انك تقضي ولا يـُقضى عليك.. اٍنه لا يذل مَن واليت .. ولا يعـِـزُ من عاديت .. تباركت ربنا وتعـاليت .. لك الحمد على ما قـضيت .. ولك الشكر على ما أعـطيت .. نستغـفـُرك اللـهم من جميع الذنوب والخطـايا ونتوب اٍليك. اللهم أقسم لنا من خشيتك ما تحول به بيننا وبين معـصيتك .. ومن طاعـتك ما تبلّـغـُـنا به جنتَـك .. ومن اليقـين ما تُهـّون به عـلينا مصائبَ الدنيا .. ومتـّعـنا اللهم باسماعِـنا وأبصارِنا وقـواتـِنا ما أبقـيتنا .. واجعـلهُ الوارثَ منـّا .. واجعـل ثأرنا على من ظلمنا.. وانصُرنا على من عادانا .. ولا تجعـل مصيبـتَـنا في ديـننا .. ولا تجعـل الدنيا أكبرَ هـمِنا .. ولا مبلغَ علمِنا .. ولا اٍلى النار مصيرنا .. واجعـل الجنة هي دارنا .. ولا تُسلط عـلينا بذنوبـِنا من لايخافـُـك فينا ولا يرحمـنا . اللـهم أصلح لنا ديـنـَنا الذي هـو عـصمةُ أمرِنا .. وأصلح لنا دنيانا التي فـيها معـاشُنا .. وأصلح لنا آخرتـَنا التي اٍليها معـادنـا .. واجعـل الحياة زيادةً لنا في كل خير .. واجعـل الموتَ راحةً لنا من كلِ شر. الـلهم انا نسألـُـك فعـلَ الخيرات .. وتركَ المنكرات .. وحبَ المساكين.. وأن تغـفـر لنا وترحمنا وتتوب علينا .. واٍذا أردت بقـومٍ فـتنةً فـتوَفـنا غـير مفـتونين .. ونسألك حبَـك.. وحبَ مَن يُحـبـُـك.. وحب عـملٍ يقـربنا اٍلى حـبـِك .. يا رب العــالمـين . اللهم اغـفـر لجميع موتى المسلمين .. الذين شهـِـدوا لك بالوحدانية ..ولنبيك بالرسالة .. وماتوا على ذلك .. اللهم اغـفر لهُم وارحمهُم وعافهم وأعـفـو عنهم .. واكرِم نـُزلَهم .. ووسِع مـُدخلهم .. واغـسلهم بالماء والثـلج والبـَرَد.. ونقـّهم كما ينقى الثوب الأبيض من الدنس وارحمنا اللهم برحمتك اذا صرنا الى ما صاروا اٍليه .. تحت الجنادل والتراب وحـدنا. اللهم اغـفـِر لنا .. وارحمـنا .. وأعـتـق رقابنـا من النـار . اللهم اغـفـِر لنا .. وارحمـنا .. وأعـتـق رقابنـا من النـار . اللهم اغـفـِر لنا .. وارحمـنا .. وأعـتـق رقابنـا من النـار . اللـهم تـقبـل منـا اٍنك أنت السميـع العـليم .. وتُب علينا اٍنك أنت التواب الرحيم .. وصلي اللهم على سيدنا محمد وعلى آله وصحبه وسلم.
الجافا متجدد Support
الـــ♥️ـــــوافـــ♥️ــــي سفير النوايا الحسنة مــــــلـك الاحـســاس ندى ابو الهول هم'ـس !لج'ـنون اجـــــ مــلا كـــ مـــل rema حنونه في زمن قاسي ابو الفزعات
بحـث
 
 

نتائج البحث
 
Rechercher بحث متقدم
المواضيع الأخيرة
» طاق طاق طاقية... لعن الله من كان يعرف معناها ويرددها فارجو قرأتها كاملة
الجافا متجدد I_icon_minitimeالأحد يوليو 21, 2013 8:31 am من طرف الـــ♥ـــــوافـــ♥ــــي

» مقطع فديو لصدام حسين وهو في الحرم
الجافا متجدد I_icon_minitimeالخميس يونيو 06, 2013 4:49 am من طرف الـــ♥ـــــوافـــ♥ــــي

» الان بامكان الاعجاب بصفحت منتدى اول همسة
الجافا متجدد I_icon_minitimeالخميس مايو 16, 2013 4:56 am من طرف الـــ♥ـــــوافـــ♥ــــي

» كلام الناس عن بيع لحوم الحمير والكلاب اكرمكم الله
الجافا متجدد I_icon_minitimeالسبت يناير 12, 2013 7:31 pm من طرف جلكسي

» الزوجة المطيعه
الجافا متجدد I_icon_minitimeالجمعة يناير 04, 2013 5:17 am من طرف جلكسي

» طفلة سورية مقهووورة
الجافا متجدد I_icon_minitimeالثلاثاء نوفمبر 20, 2012 8:37 am من طرف جلكسي

»  أضحك من تصرفات المراهقة
الجافا متجدد I_icon_minitimeالثلاثاء نوفمبر 20, 2012 8:30 am من طرف جلكسي

» السرعة الزائدة انتحار انتحار
الجافا متجدد I_icon_minitimeالخميس نوفمبر 08, 2012 5:42 am من طرف جلكسي

» لاتفكر بالتقاعد نصيحة
الجافا متجدد I_icon_minitimeالخميس نوفمبر 08, 2012 5:10 am من طرف جلكسي

منتدى
♥•¨الـــ♥ـــــوافـــ♥ــــي •¨♥
اللهم اني اسئلك بصفاتك التي سميتها بها نفسك ولا اتخذها غيرك ان تيسر امري فيما يحبه الله ورسوله وان ترزقني بامنيتي الي تمنيتها منك وحدك لا لا لا لغيرك فيارب احفظني واكفني شر اعدائي اللهم من ارد هلكي فأهلكه كما هلكت قوم عاد و كسرت كسرى وكذاب فاعطف علي وعلى زوجتي كما عطفت على النجاشي
الــــوافـــي
تسجيل صفحاتك المفضلة في مواقع خارجية
تسجيل صفحاتك المفضلة في مواقع خارجية reddit      

قم بحفض و مشاطرة الرابط A T L A N T I S والمستحيل على موقع حفض الصفحات

قم بحفض و مشاطرة الرابط منتدى اول همسة على موقع حفض الصفحات
نوفمبر 2024
الإثنينالثلاثاءالأربعاءالخميسالجمعةالسبتالأحد
    123
45678910
11121314151617
18192021222324
252627282930 
اليوميةاليومية
أفضل 10 أعضاء في هذا المنتدى
الـــ♥ـــــوافـــ♥ــــي
الجافا متجدد Vote_rcapالجافا متجدد I_voting_barالجافا متجدد Vote_lcap 
ملك الاحساس
الجافا متجدد Vote_rcapالجافا متجدد I_voting_barالجافا متجدد Vote_lcap 
الله اكبر
الجافا متجدد Vote_rcapالجافا متجدد I_voting_barالجافا متجدد Vote_lcap 
ندى
الجافا متجدد Vote_rcapالجافا متجدد I_voting_barالجافا متجدد Vote_lcap 
ابو الهول
الجافا متجدد Vote_rcapالجافا متجدد I_voting_barالجافا متجدد Vote_lcap 
هم'ـس !لج'ـنون
الجافا متجدد Vote_rcapالجافا متجدد I_voting_barالجافا متجدد Vote_lcap 
ابو الفزعات
الجافا متجدد Vote_rcapالجافا متجدد I_voting_barالجافا متجدد Vote_lcap 
rema
الجافا متجدد Vote_rcapالجافا متجدد I_voting_barالجافا متجدد Vote_lcap 
اجمل ملاك
الجافا متجدد Vote_rcapالجافا متجدد I_voting_barالجافا متجدد Vote_lcap 
حنونه في زمن قاسي
الجافا متجدد Vote_rcapالجافا متجدد I_voting_barالجافا متجدد Vote_lcap 
المتواجدون الآن ؟
ككل هناك 21 عُضو متصل حالياً :: 0 عضو مُسجل, 0 عُضو مُختفي و 21 زائر

لا أحد

أكبر عدد للأعضاء المتواجدين في هذا المنتدى في نفس الوقت كان 49 بتاريخ الخميس مايو 24, 2012 9:58 am
تصويت
كود ماوس

 

 الجافا متجدد

اذهب الى الأسفل 
كاتب الموضوعرسالة
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 11:41 am

الجافا متجدد


نبذة عن تاريخ الجافا:
الجافا هى من أحد مشاريع شركة صن ميكروسيستمز "SUN MICROSYSTEMS"
وكان الإسم البدائى للغة هو "Oak" ولكن إكتشف الفريق البحثى الذى أنشأ اللغه بقيادة جيمس جوسلينج"James Gosling" وجود لغه بهذا الإسم فقرروا إستخدام java نظرا للقهوة التى كانوا يرتترددوا عليها و فى الحقيقة لم يكن الغرض من لغة الجافا هو ما تستخدم فيه الأن من تطبيقات الويب ولكن كان للأجهزة المنزلية الذكية "intelligent consumer-electronic devices" حيث كانت صن تتوقع أن مع تطور الأجهزة المنزلية ستصبح يمكن برمجتها وتنزيل برامج لها من على النت وتحديثها و لكن هذا لم يحدث لذا فقد قررت صن إيقاف العمل فى هذا البحث ولكن جيمس جوسلينج تحدث مع رئيس الشركة عم إمكانية إستخدامها فى مجال الويب
وبالفعل لم تغلق صن ملف الجافا و أصبحت الأن من أهم لغات الويب حيث تستخدم فى
عمل صفحات الويب المتحركة " Dynamic Web Pages" والمقصود بالحركة هنا هو أن المعلومات التى تعرض بالصفحة متغيرة أو تعتمد على المستخدم "Interactive" أى تفاعلى
وكذلك فى عمل المواقع الكبيرة "large Scale Applications" وكذلك الويب سيرفير وكذلك بعض الأجهزة مثل الموبايل والبيجر و ما إلى ذلك

• الفرق بين الجافا والجافا سكريبت:
تحدثنا عن الجافا وهى لغة برمجية وأغراض البرمجة بواسطة الجافا وهى الويب مثل السيرفليت"Servlet " و الجى إس بى "JSP " و الأبليت " Applets"
أما الجافا سكريبت فهى كأى لغة سكريبت "****** Language" ما هى إلا دوال تكتب داخل صفحات الويب لعمل مهام معينة فى ال"Client Side" أى على جهاز المستخدم مثل التأكد من إدخال المستخدم حقول معينة فى الصفحة ويمكن إيقاف عملها من خصائص المتصفح الذى تستحدمة

• الفرق بين الجافا و اللغات البرمجية الأخرى:
هناك نوعان من البرمجة وهما
1. البرمجة الدالية " بصراحة مش عارف أترجمها كويس"
"Functionally Oriented "
ويكون البرنامج له هدف معين من خلال تنفيذ بعض خطوات متتالية فقط وهذا يظهر فى الفيجوال بيسك حتى الإصدار السادس

2. البرمجة الكائنية "Object Oriented "
ويكون البرنامج له هدف معين يصل له من خلال الكائنات حيث لكل كائن خصائصة و دوالة و قد تعرف البرمجين لهذة الطريقة عندما نظروا للحياة العامة فالإنسان له خصائصة ووظائفة وكذلك كل شئ و تعريف الكائن هو ال " Class "
موجود فى الجافا و الدوت نت والسى بلس بلس


عدل سابقا من قبل مدير الموقع في الجمعة سبتمبر 17, 2010 12:34 pm عدل 1 مرات
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 11:44 am

رد: الجافا (متجدد)
لغات الجيل الرابع

تحدّثنا في الدرس السابق عن لغات البرمجة التي سبقت لغات الجيل الرابع، و قلنا أيضاً أنها جميعاً تشترك في صفة انها تقوم على مبدأ التحدّث بالطريقة التي يفهمها الكومبيوتر.

و يجدر بالذكر أن جميع لغات الأجيال الثلاثة السابقة إذا تمّت ترجمتها على نظام تشغيل، لإانها لا تعمل إلا على هذا النظام.

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

إذاً أي برنامج يتصرّف هكذا:

البرنامج --------> المفسّر/المترجم --------> لغة الآلة

ولأن المترجم متصل مباشرة كما ترون بلغة الآلة فإنه يعتمد عليها. و يختلف من نظام تشغيل إلى آخر.

لذا قال المبرمجون أنهم سيتخيّلون وجود آلة! تكون هذه الآلة محددة و أطلقوا عليها اسم (Virtual machine) أو الآلة التخيّلية. و هم يكتبون برامجهم حسب هذه الآلة و ليس حسب نظام تشغيل محدد هكذا:

البرنامج --------> المفسّر/المترجم --------> الآلة التخيلية --------> لغة الآلة

نلاحظ الآن أن المترجم ابتعد عن لغة الآلة، و أصبح يترجم بناءً على آلة تخيلية.

ما الذي نستفيده؟ البرنامج سيعمل على أي جهاز عليه الآلة التخيلية مهما اختلف نظام التشغيل دون الحاجة لإعادة الترجمة :-)

من لغات الجيل الرابع: C++ and Java و Oracle و Visual Basic و غيرها، وهذه اللغات تعرف بأنها لغات تعتمد على البرمجة الشيئية.

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

هذا هو موضوع الدرس القادم ان شاء الله
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 11:45 am

رد: الجافا (متجدد)
البرمجة بالكائنات الشيئية:

تمهيد

في البداية، أحب أطرح سؤال؟
عندما أقول: (أكل) ما الذي يتوارد إلى أذهانكم؟
يمكن تخطر في بالكم الجملة المشهورة (أكل الولد التفّاحة) أو تتخيلون أي نوع من أنواع الأكل صح. من المستحيل فعلاً أن تفكروا في عملية الأكل دون أن تتخيلوا شخصاً (أو كائناً) يأكل.. أو شيئاً يتم أكله، صح والا أنا غلطانة؟
بالفعل! العقل البشري لا يعترف بوجود الأفعال بدون فاعل لذا فجملة 1+1=2 ليس لها إلا معناها الرياضي المجرّد فقط. ولكن جملة واحد جلس بجانب آخر = شخصين جالسين مع بعض لها معنى، أليس كذلك؟
خلينا من هذا. فلنتصوّر أنني قلت ونحن نتكلّم بشكل عادي (أقصد لم نكن في محاضرة رياضيات) قلت لكم فجأة (24) وسكتٌّ، طبيعي أنّكم جميعاً ستنظرون إلى منتظرين أن أكمل كلامي.. 24.. ماذا؟ 24 ساعة؟ 24 يوم؟ 24 طالب؟ 24 سطر؟ 24 تفاحة.. لكن الرقم 24 المجرّد لا يعني شيء أبداً أبداً خارج مواضيع الرياضيات :-)

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

الصفات
النوع: IBM
السرعة: 500MHz
الذاكرة: 128MB

إذاً اتفقنا أن جهازك له هذه الصفات، فلنفترض معاً بعض الوظائف التي يستطيع جهازك أن يقوم بها
الوظائف
الجمع
الحفظ
الإتصال بطابعة

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

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



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

ماذا نستنتج من ذلك؟
نستنتج أن الفئة أو ال Class هي الموديل الذي أصنع بحسبه الأشياء التي تشترك في الصفات. أو أنه الجامع الذي يجمع الأشياء الفعلية التي تندرج تحته. ولابد هنا من التنويه على نقطة محددة وهي أنّ الفئة ليست شيئاً محسوساً بينما العضو أو الشيء هو التمثيل المحسوس لهذه الفئة.
كيف يمكن تطبيق هذا الكلام باستخدام لغة الجافا..
هذا ما سنعرفه في الدرس القادم.
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 11:46 am

رد: الجافا (متجدد)
البرمجة بالكائنات الشيئية 2

سنتعلّم اليوم معلومات أكثر عن البرمجة بالكائنات الشيئية من خلال مقارنة بين البرمجة بالكائنات الشيئية والبرمجة التقليدية
لنأخذ مثال حي لتوضوح المقارنة

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

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

ماذا نستنتج من ذلك؟
نستنتج أن البرمجة التقليدية تحافظ على ترتيب الأحداث، و يتطلّب التغيير في هذا الترتيب برمجة البرنامج و جميع حلقاته مرّة أخرى.
البرمجة التقليدية تهتم بالأحداث، و تربط بينها الأشياء أو البيانات.
لنفرض أننا أردنا أن نكتب البرنامج بلغة من لغات الكائنات الشيئية (مثل الجافا مثلاً)
سنقرأ السؤال مرة أخرى و لكن هذه المرة سنسأل أنفسنا: (من الأعضاء في هذا المثال؟)
سيقول أحدكم: المسلم
و سيقول آخر: الاسرائيلي
سأعود لأسأل: فيم فكّرنا هذه المرة؟ لم نفكّر في الأحداث، بل فكّرنا في أبطال القصة. السؤال الآن: كيف سنكتب البرنامج الآن؟
سأقول لكم
1) بعد أن قمنا بتحديد الأشياء أو الأعضاء، سنقوم بعمل الموديلات لهم أو بمعنى أصح الفئات. لأنه لا يمكن أن يوجد عضو لا ينتمي لفئة!
الفئة الأولى هي فئة (المسلم)، بم يتميّز المسلم من صفات؟
المسلم
الصفات:
له اسم
له روح وجسد
له حالة (امّا حي و إما ميّت)
القدرات:
يشهد أن لا إله إالا الله ويقول الله أكبر
يستطيع أن يقاتل
يمكن أن يجرح يمكن أن يموت (أو يستشهد)

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

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

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

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

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

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

توضيح:
أي أنني عندما أبدأ المعركة قد يقوم المسلم بالهجوم أولاً، و قد يقوم الإسرائيلي بالغدر، لا يوجد ما يضمن لي أن أحدهما سيسبق الآخر، لأن كلا الفئتين احتفظت بصفاتها و قدراتها بشكل منفصل عن الفئة الأخرى.
إذاً البرنامج بطريقة الكائنات الشيئية يتكوّن من أكثر من ملف، و كل ملف منفصل فعلياً عن الملفات الأخرى. و حين حدوث أي تغيير في أي برنامج فإن أعادة الترجمة (Recompiling) يتم على هذا الملف دون غيره.
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 11:47 am

رد: الجافا (متجدد)
إعداد بيئة التشغيل:

أولاً:

قبل أن نبدا فعلياً في كتابة برنامج جافا يجب تجهيز بيئة العمل المطلوب منكم الذهاب إلى هذا الموقع:
Java Technology

في هذه الصفحة و من القائمة يرجى اختيار Java 2 SDK, Standered Edition
وقم بتنزيل آخر إصدار، قد يكون الملف ذا حجم كبير نسبياً، فإذا كانت الإنترنت عندك كثيرة الانقطاع يستحسن أن تقوموا بتنزيل البرنامج على مراحل كما هو موضّح إذا تتبعت الإرشادات في موقع التنزيل

ثانياً:بعد تنزيل البرنامج يجب أن يتم تحميله، هذا الملف سيخلق حسب الDefault أن الآلة التخيّلة قد أخذت موضعها في:
c:jdk1.3

ثالثاً:يجب كتابة هذين الأمرين في الدوس كلّما أردت تشغيل أو ترجمة برنامج جافا، لذا أنصح بكتابتها في ملف ال Autoexec.bat في الوندوزxx أو في ال system parameters في الوندوز NT و 2000 هذين السطرين مهمّين للغايةو المفروض أن يتم كتابة السطرين كما هما في الدوس و بدون أي فراغات spaces. و لا تنسوا أن تضعوا (;.) في بداية تعريف ال classpath هكذا:
و يمكنك التأكّد من المكان المضبوط بعرض محتويات القرص الصلب.


الآن البيئة صارت للتشغيل. و للتأكّد من ذلك: اذهب إلى الدوس و اكتب الأمر التالي:
java -version
المفروض ان كان التثبيت و ما تلاه تم بطريقة صحيحة أن تظهر هذه النتيجة:



رابعاً:
هذه الخطوة ليست اجبارية. و لكنها لتسهيل التعليم. فعادة يستخدم مبرمجو الجافا ال Notepad الموجودة في نظام الوندوز. و لكن توجد بعض المحررات الخاصة بالمبرمجين والتي تقوم بتلوين أوامر اللغات المختلفة.
من المحررات الشهيرة TextPad الذي يمكن تنزيله من موقع
http://www.textpad.com
و من مميزات هذا المحرر أنه يحتوي على قائمة قابلة للتعديل، يمكن من خلالها تشغيل المترجم و المشغّل دون الحاجة للذهاب إلى محرّك الدوس.
بهذا نكون قد استكملنا مكوّنات بيئة التشغيل التي سنحتاج لها للبدء بكتابة برامج الجافا الخطيرة التي سنعملها سوياً
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 11:49 am

رد: الجافا (متجدد)

البرنامج الأوّل بلغة الجافا:



جرت العادة أن يقوم المبرمجون عند دراسة أي لغة فإنّهم يكتبون برنامج يقوم بعرض كلمتي (Hello World) و سنقوم بالمثل: نفتح ال notepad أو ال textpad و نكتب التالي:
الجافا متجدد L06_01


أقترح بعد أن نكتب البرنامج أن تحفظه في حافظة تقوم بتسميتها myjava تحت المشغّل C مباشرة.
و يجب أن تحفظه بهذا الاسم: HelloWorld.java و لاحظ الأحرف يجب أن تكون بنفس الصفة يعني هذا الاسم: Helloworld لن يقوم بالمطلوب.
و لأننا نكتب بلغة الجافا، فلابد أن يكون ملحق. الآن جاء وقت الاختبار الصعب (فهل سننجح في تشغيل البرنامج؟)
عبر ال Dos prompt أو ال Command نذهب إلى الحافظة myjava من ال :C و للتأكّد نقوم بعرض محتويات الحافظة هكذا:
الجافا متجدد L06_02

الآن سنقوم بعمل الترجمة لهذا الملف. و للتذكير فالترجمة هنا تعني أننا سنحوّل الملف من لغة نفهمها نحن إلى لغة تفهمها لغة الآلة التخيليّة، تابع الخطوات على الصورة التالية:
الجافا متجدد L06_03

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

أتعرف الآن ماذا ستجد لو قمت بعرض محتويات الحافظة؟ فلنجرّب:
الجافا متجدد L06_04


هل رأيت؟ لا تخف. فهذا ليس سحراً، نعم لقد ظهر ملف جديد في الحافظة و هو HelloWorld.class نفس اسم الملف السابق و لكن بملحق (extension) جديد :- و هو class. لقد قانت الآلة التخيلية بانشاء هذا الملف القابل للتشغيل. الآن جاء دور التشغيل:
الجافا متجدد L06_05


تلاحظ أننا حين كتبنا اسم الملف كتبناه بدون ملحق ذلك أنّه لاداعي له. لأن الآلة التخيلية لا تقوم بتشغيل أي ملف من نوع آخر. هي مخصصة لتشخيل الملفات من نوع class فقط لا غير. لذا لا داعى (و لا يجب) أن يتضمن اسم الملف المشغّل الملحق class معه.
و هكذا تشاهد في الشكل السابق كلمة Hello World الرائعة و هي تزيّن الشاشة دليل عمل البرنامج بنجاح. اخطاء شائعةبعد أن قمت بنسخ البرنامج المكتوب كما هو (و الذي تعمدت أن يكون كصورة حتى تكتبه بنفسك أن يكون كصورة حتى تكتبه بنفسك
و قمت بمحاولة ترجمته، قد تظهر لك هذه الأخطاء:

الجافا متجدد L06_06
هذا الخطأ يعني أنك أخطأت في اسم الملف الذي تحاول عمل ترجمه له أي أنك تترجم ملفاً غير موجود.

الجافا متجدد L06_07
هذا الخطأ ينتج اذا قمت بتسمية الملف باسم يختلف عن اسم الفئة في الداخل

3) و قد يظهر لك هذا الخطأ أثناء محاولة تشغيل البرنامج و لو تمت الترجمة بنجاح
الجافا متجدد L06_08

قد يحدث هذا الخطأ. و هو خطأ شائع و محيّر
فكما ترون عند الرقم (1) الclass الذي أحاول تشغيله موجود، و قمت بكتابة اسمه بالشكل الصحيح كما في الرقم (2) و مع ذلك يقول انه لا يجد الكلاس كما واضح في الرقم (3).

و هذا يعني أنّك نسيت اضافة (;.) في ال classpath. المسألة بسيطة قم بعمل التالي و تشغيل الملف مرة أخرى:

الجافا متجدد L06_09



عدل سابقا من قبل مدير الموقع في الجمعة سبتمبر 17, 2010 11:58 am عدل 1 مرات
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 11:50 am

رد: الجافا (متجدد)

شرح البرنامج الأوّل:


لقد قمنا في الدرس السابق بكتابة برنامج صغير، و قد كان بهذا الشكل:
الجافا متجدد L06_01


اليوم سنقوم بفهمه سطراً سطراً
فلنبدأ بسم الله الرحمن الرحيم:

السطر الأوّل:
الجافا متجدد L07_line1

السطر الأول يحتوي على تعريف الفئة (class).
و نحن هنا سنعرّف فئة جديدة اسمها HelloWorld. و قد اعتاد مبرمجو لغة الجافا على اعتماد تسمية الفئات بطريقة معيّنة (Naming Convention)
كلمة Public تسمى (مُغيّر دخول-Access Modifier) و هي تسبق تعريف الفئات classes والأعضاء Objects والمتغيّرات Variables و الوظائف Methods. و سنطّلع في دروس قادمة على غيرها من مغيرات الدخول ان شاء الله الجافا متجدد Life%20%2865%29
و مغيّر Public يعني أن هذه الفئة عامة و يمكن لأي فئة أخرى موجودة في الآلة التخيلية (virtual machine) أن تستخرج أعضاء منها، أو أن تقوم على تشغيلها.
و ملف الجافا قد يحتوي على تعريف لأكثر من فئة. و لكن فئة واحدة فقط يمكنها public و هي التي يتم تسمية الملف عليها. فمثلاً، يمكنني أن أقول التالي:
public class FirstClass {
}
class SecondClass {
.
}

في المثال السابق يوجد لدينا ملف كتبناه على TextPad أو NotePad و يحتوي على تعريف فئتين. و نلاحظ أن احداهما فقط هي التي تم تعريفها لتكون public و على هذه الأساس، سيكون اسم الملف على هذه الفئة، وفي مثالنا سيكون: FirstClass.java. نلاحظ أن السطر الأوّل ينتهي برمز (}) و هو يعني أن تعريف الفئة (class) سيبدأ عند هذه النقطة. و بما أن لكل شيء بداية و نهاية، فإننا نتوقّع أن يتوقّف تعريف البرنامج عند العلامة المقابلة ({) و هذا يعني أن تعريف الفئات يكون دائماً محصوراً بين رمزي المجموعة الجافا متجدد Life%20%2865%29

السطر الثاني:
الجافا متجدد L07_line2
السطر الثاني يأتي لتعريف وظيفة(method) من الوظائف. سنتعرّف على الوظائف بشكل مفصّل في درس قادم ان شاء الله. لكن ما يهمّنا الآن هو الوظيفة الموجودة بين أيدينا.

هذه الوظيفة هي ذات نوعية خاصة، انها ال main method و هي نقطة البداية لأي برنامج يتم تشغيله من مشغّل الدوس (Dos prompt). لنعد بذاكرتنا قليلاً إلى الوراء، هل تذكرون ما قلناه حين تحدّثنا في مقارنة بين البرمجة بالطريقة التقليدية (Proccess Oriented) و البرمجة بالطريقة بالكائنات الشيئية؟الجافا متجدد Life%20%2865%29
لقد ذكرنا شيئاً عن نقطة البداية. ففي البرمجة بالكائنات الشيئية نضع نقطة البداية، ثم يقوم أعضاء الفئات المختلفة بتقاذف الأحداث فيما بينها.

و لكن لابد من نقطة بداية. و في حالتنا نقطة البداية هي هذا السطر و ما يعقبه من أوامر محصورة بين قوسي المجموعة إن أي برنامج جافا، قد يتكون من عدة ملفات (بحيث يكون كل ملف محتوياً لى تعريف فئة)، و يجب أن تحتوي فئة واحدة عاى نقطة البداية، التي تتمثّل في وظيفة main. وظيفة ال main method هي في الحقيقة نقطة البداية التي تتحدّث عنها الآلة التخيلية للجافا، في حالة قمنا بتشغيل أي ملف جافا من محرك الدوس. و هي في الواقع فئة تتبع للفئة بشكل عام و لا تخص الأعضاء المنتمين لهذه الفئة.
الجافا متجدد Spaceالسطر الثالث:
الجافا متجدد L07_line3
إن هذا السطر في الواقع يقوم باستدعاء و ظيفة println التي تقوم بكتابة ما يمرر لها في الأقواس (و في حالتنا هو Hello World). ما سبق هذه الوظيفة هو عنوان العضو و الفئة التي توجد فيها هذه الوظيفة، حتى تقوم الآلة التخيلية بتشغيلها بشكل صحيح.
الجافا متجدد Spaceالسطر الرابع والخامس:
الجافا متجدد L07_braces

نقوم هنا بغلق الأقواس، و نلاحظ أن تعريف الفئة قد تضمّن تعريف الوظيفة main و نلاحظ أننا نغلق القوس الداخلي أولاً ثم الخارجي و هكذا.


ملاحظات:الجافا متجدد Life%20%2865%29

في السطر الثالث، الكلمة الأولى و هي System هي في الواقع اسم لفئة. و في هذه الفئة توجد صفة اسمها out.
out في الواقع هي عضو في فئة PrintStream و يستطيع أعضاء هذه الفئة استخدام وظيفة ال println هذا هو تسلسل هذه الكلمات. الجافا متجدد Life%20%2865%29

يلا الى اللقاء في الدرس القادم
الجافا متجدد Life%20%2833%29الجافا متجدد Life%20%2833%29الجافا متجدد Life%20%2833%29
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:02 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
الآلة التخيلية للجافا JVM:


تمهيد


تذكر شركة ال Sun Microsystems أن قوة لغة الجافا تكمن في قوة ثلاث وحدات فيها:
الآلة التخيلية Java Virtual Machine
جامع نفايات البرنامج Garbage Collector
أمان الكود Security of the code
و في الواقع فإن المحورين الثاني والثالث، على أهمية عظيمة، و لكنهما يتحركان ضمن المحور الأول و هو الآلة التخيلية.
الآلة التخيلية للغة الجافا:

الجافا متجدد L08_four

تنقسم هذه الالية الى اربعة اقسام:

class loader: إن محمل الفئات (Class Loader) يقوم على قراءة الملف (class) و احضاره من المكان الذي تم حفظه فيه إلى الآلة التخيلية. تماماً مثلما يقوم قارئ الملفات في الكومبيوتر باحضار الملفات المطلوبة من القرص الصلب إلى ال CPU وحدة التشغيل المركزية. و يقوم ال Class Loader بالتأكد في الوقت ذاته من عدم وجود أخطاء برمجية.

Bytecode verifier:كثيرة هي البرامج التي تبدو بريئة في ظاهرها، بينما تحوي ما يكفي من الأمور المدمّرة مخبأة فيها. و لعل البرامج المكتوبة بلغة السي من أبرز الأمثلة على ذلك. فبكتابة برنامج صغير يجمع بكل براءة رقمين و يخزّن الناتج في مكان معين في الذاكرة، يقوم الملف فعلياً بمسح محتويات القرص الصلب! فبعض الأماكن في ذكرة الكومبيوتر حساسة للقيم التي توضع فيها.
لذل فقد أخذت الجافا احتياطها لمثل هذه التجاوزات غير المرغوبة. ففي ال Byte Code Verifier يتم التأكد من عدم تجاوز البرنامج بأي شكل من الأشكال. فلا يقوم بالكتابة في أماكن لا يجب أن يكتب فيها، كما يتم التأكد من عدم احتواء الفئة (ال class) من أي أمر يكسر قواعد اللغة و حواجزها، حتى و لو كان مقبولاً من ناحية ال Syntax أو السياق البرمجي.


Interpeter:يقوم المفسّر بقراءة الأوامر أمراً أمراً. مهمته تتلخّص في أنه يجهّز الأوامر بالتتابع كي يتم تشغيلهم في المرحلة الرابعة.

Run time:يطلق على الآلة التخيلية للجافا بشكل عام اسم Java RunTime مجازاً فقط. و لكن الواقع أن هذا الجزء من الآلة التخيلية هو الرأس المدبّر (رئيس العصابة يعني، فهذه الوحدة هي التي تقوم بالتشغيل الفعلي للأوامر، و تقوم أيضاً بما يلزم من اتصالات مع نظام التشغيل و أدوات الادخال و غيرها.

تعتبر JVM الجزء الوحيد من بيئة البرمجة الجافيية (ههه) الذي يعرف ما هو نظام التشغيل الذي تعمل عليه البرامج المختلفة. فالفئات كما ذكرت، تعرف أنها يجب أن تعمل لحساب الآلة التخيلية. و هي واحدة في كل مكان مهما اختلف نظام التشغيل و نوع الكومبيوتر. أما الآلة التخيلية نفسها، فهي العضو الذي يتصل بالكومبيوتر.. و يقوم بما يلزم من عرض على الشاشة، أو قراءة من الكيبورد، اذاً لابد أن تعرف ال JVM عن نظام التشغيل الذي تعمل عليه.
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:04 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
المتغيّرات:

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

إنك في هذه الحالة ستكتب اسمك بجانب "الاسم"، و ستكتب عنوانك بجانب "العنوان". و لو أراد الله سبحانه و تعالى أن يفوز شخص غيرك فإن الاسم الذي سيكتب في خانة "الاسم" سيكون مختلفاً بالتأكيد. و هذا بالضبط هو المتغيّر. فخانة الاسم تعتبر متغيّر، قد يأخذ قيمة اسمك أو اسمي أو اسم أي شخص آخر.
و لكن لنكن واقعيين، هل من الممكن أن يأتي شخص و يكتب في خانة الاسم:"1234567"؟ لا أظن، فهمها كان أبوه عاشقاً للارقام، فلن يسمي ابنه بالأرقام Wink من جهة أخرى فلن يكتب شخص مهما بلغت غرابة أطواره كلمة "الشمس المشرقة" في خانة رقم الهاتف.
إذا المتغير قد يأخذ قيماً مختلفة ذات نوع محدد. فهناك متغيرات تأخذ قيماً حرفية مكونة من أحرف فقط مثل خنة الاسم. و هاك متغيرات رقمية مكونة من أرقام فقط مثل خانة رقم الهاتف.
في لغة الجافا توجد أنواع من المتغيرات، وفي هذا الدرس سنلقي الضوء على بعضها:

المتغيرات الرقمية (Numaric Data Types):
في لغة الجافا تود لدينا 6 أنواع للمتغيرات الرقمية، نستطيع تقسيمها إلى قسمين كبيرين:

المتغيرات الصحيحة(Integral Variables): و تتكون من 4 أنواع:


  • byte: و هذا النوع يخزّن الأرقام الصحيحة في حجم من الذاكرة مقداره بايت واحدة.
  • short: و هذا النوع يخزّن الأرقام الصحيحة في حجم من الذاكرة مقداره 2 بايت.
  • int: و هذا النوع يخزّن الأرقام الصحيحة في حجم من الذاكرة مقداره 4 بايت.
  • long: و هذا النوع يخزّن الأرقام الصحيحة في حجم من الذاكرة مقداره 8 بايت.

المتغيرات الكسرية(Floating Point Variables): و تتكون من نوعين:


  • float: و هذا النوع يخزّن الأرقام الكسرية في حجم من الذاكرة مقداره 4 بايت.
  • double: و هذا النوع يخزّن الأرقام الكسرية في حجم من الذاكرة مقداره 8 بايت.
المتغيرات النصية (Textual Data Types):
تضم نوع واحد فقط:
char: و يخزّن في حجم من الذاكرة مقداره 2 بايت. و هذا المتغيّر يخزّن حرفاً واحداً فقط. و يجدر بي أن أوضح هنا أن أي زر يمكن أن تضغط عليه في الكيبورد هو في الواقع char. و بالمناسبة فإن الرقم 1 يختلف كثيراً عن الحرف '1' و يكتب هكذا محصوراً بين علامتي تنصيص مفردتين. و الثاني '1' لا يمكن اجراء عمليات حسابية عليه لأنه مخزّن على أساس انه متغير نصّي. و لكن 1 لو تم تخزينه في متغير رقمي فيمكن بالطبع اجراء عمليات حسابية عليه.
من أمثلة الأرقام التي يمكن تخزينها في سلسلة من ال char : رقم الهاتف، لأنه لا فائدة من اجراء عملية حسابية على رقم تيلفون

المتغيرات المنطقية
تضم نوع واحد فقط:
boolean: و هذا النوع يخزّن نوعاً مميزاً من القيم. انه يخزّن قيمة من اثنتين فقط هما: true, false. و هذا النوع من المتغيرات يستخدم في المقارنات المنطقية

الجافا متجدد Spaceالمتغيرات التي يعرفها المبرمج(Aggregate Data Types):
هي المتغيرات التي يقوم المبرمج بتعريف نوعها. مثل ال classes لتي نقوم بكتابتها في ملفات و برامج الجافا. ملخص:


  • المتغير هو مكان لتخزين القيم التي يحتاج المبرمج لحفظها بشكل مؤقت. و قد تتغير من آن إلى آخر. و يتم تحديد نوع القيمة التي يخزنها أي متغير.
  • أنواع المتغيرات لها حجم محدد للتخزين في الذاكرة.
  • يستطيع المبرمج أن يعرف أنواعاً لا عدد لها من المتغيرات باستخدام ال classes.
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:07 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
التعليقات:

الجافا متجدد Spaceماهي التعليقات؟:
انها الأسطر التي يتجاهلها مترجم الجافا، و لكنها تجعل الكود أسهل قراءة للمبرمج نفسه. بعبارة اخرى انها مجموعة الملاحظات التي يضعها المبرمج في كوده لتسهيل قراءته.

الجافا متجدد Spaceأنواع التعليقات في الجافا:
يمكننا ان نضع ملاحظاتنا في برامج الجافا بثلاثة طرق:
التعليق بسطر واحد:
الجافا متجدد L10_single_1

كما هو موضح في الشكل، فإن هذا النوع من التعليق يتم بوضع علامتي (//) قبل السطر المراد تعليقه. و هذا يعني أن يتجاهله المترجم تماماً. و لكنه بالطبع يقوم بتوضيح بعض الأمور للمبرمج. فأنت مثلاً و انت تنظر للصورة تعرف ان الرقم 100 الموجود في الأسفل يمثل ال total الذي يتحدث عنه المبرمج. و هذا بالطبع يعني شيئاً ما للبرنامج
الجافا متجدد L10_single_2

أما في هذا الشكل، فقد تم اضافة التعليق في نهاية بعض الأسطر. و هذا يسهّل الأمور. لأن المترجم سيقوم بتنفيذ البرنامج حتى يصل لعلامتي (//) عندها سيتجاهل بقية السطر، و سينتقل لتنفيذ السطر التالي.

التعليق بعدة أسطر:
الجافا متجدد L10_multi

نلاحظ هنا أنه تم حجز عدد من الأسطر بين (*/) و (/*). و هذا يعني ان هذه الأسطر هي عبارة عن تعليق. و لن يتم تنفيذها في البرنامج، و لكنها وضعت للتوضيح.
ان رؤية المترجم لـ (*/) تجعله يتجاهل كل ما يقابله حتى يصل لعلامة (/*) و يقوم بتنفيذ ما يليها.

التعليق بهدف اضافة معلومات لملفات المساعدة:
توفر الـ SDK أداة رائعة لإنشاء ملفات المساعدة و هي javadoc. و ان استدعاء هذا الأمر على أي ملف جافا، يقوم بانشاء عدد من ملفات المساعدة بصيغة الهتمل. و سنتعرض لهذا بالتفصيل ان شاء الله في الدروس الختامية لهذه السلسلة. ما يهمنا الآن هو ان ملفات المساعدة هذه سيتم انشاؤها بناءاً على المعلومات الموجودة و التي قمت أنت بتوفيرها في برنامجك. لذا فقد فلابد من كتابة هذا النوع من التعليقات بصيغة محددة، حتى يتم تضمينها ضمن ملفات المساعدة.
الجافا متجدد L10_doc

كما ترى في الصورة فقد تم حصر التعليق بين (**/) و (/*) و هذا يعني ان هذه العبارة ستكون خاصة بالتعليق الذي سيظهر في ملفات المساعدة.
نلاحظ في هذا النوع من التعليقات انه يجب ان تسبق بعض المكونات المحددة في البرنامج، و انها توضح بعض الامكانات لها.

الخاتمة:
ان التعليقات في أي برنامج تساهم في توضيحه و تجعل قراءته أسهل. و اذا كنت تنوي ان تكون مبرمجاً محترفاً، فلا تجعل تهمل التعليقات أبداً. بل و لابد أن تجعل كودك أسهل و أسهل بجعل الكود يتكلم عن نفسه بأن تستخدم اسماء واضحة للمتغيرات و الفئات.
خاتمة القول، استخدم العليق كلما بدا ذلك ضرورياً. و لا تنسى أن شيئاً يبدو واضحاً و بديهياً الآن قد لا يبدو كذلك بعد اربعة أو خمسة أسابيع.
</blockquote>

</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:08 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
استخدام المتغيرات

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

اشهار المتغيرات:
ان اشهار المتغيرات يتم في الجافا على هذه الصيغة:
type identifier;
لنفرض مثلاً اننا نريد اشهار متغير من نوع متغير صحيح int
int x;
في السطر السابق يمثّل (x) اسم لمتغير من نوع رقم صحيح يتم تخزينه في 4 بايت. و يمكن اعطاؤه أي قيمة مثلاُ:
x=10;
و هكذا نكون أعطينا المتغير (x) القيمة 10. و بالمثل نستطيع اشهار متغيرات من أي نوع آخر.
و توفر الجافا اعطاء المتغيرات قيم مبدئية عند اشهارها، مثلاً.. نستطيع أن نكتب في برنامجنا:
double x=14.3;
char ch='m';

اننا في ما سبق، قد قمنا باشهار متغيرين الأول من نوع double و قد أعطيناه قيمة مبدئية هي: 14.3، اما المتغير الثاني فهو متغير نصي من نوع char و أعطيناه قيمة مبدئية هي الحرف 'm'.

الجافا متجدد Spaceمثال تطبيقي على اشهار واعطاء قيم للمتغيرات في الجافا:

في الصورة التالية نرى برنامج مكتوب بلغة الجافا. و قد قمنا فيه بانشاء بعض المتغيرات و من ثم طباعتها.
الجافا متجدد L11_firstWithError

في السطر السابع (و يقع في المنطقة الوردية) مثلاُ قمنا بانشاء متغير من نوع short و أعطيناه قيمة مبدئية هي 200. و نلاحظ ان جميع جمل الجافا تنتهي بـ (Wink.
بينما في السطر السادس قمنا بانشاء متغير من نوع byte و لم نعطه اي قيمة مبدئية.
عند تشغيل البرنامج السابق ستواجه المشكلة التالية:
الجافا متجدد L11_noInitial

ان هذه المشكلة ظهرت تحديداً عندما حاولنا طباعة المتغيرين b وnumber. لاحظ انها لم تظهر عندما قمنا باشهارهما. و لكنها ظهرت عند محاولتنا لاستخدامهما. هل تستطيع ان تعطي سبباً لذلك؟
في الواقع ان السبب هو اننا لم نعطهما قيمة مبدئية! ثم حاولنا كباعتهما. الآن ما الذي نحاول فعله؟ نطبع قيمة لا نعرفها! لذا سيتوقف مترجم الجافا و يعطيك الخطأ السابق.
كيف نعالج المشكلة؟ نعطيهما قيماً قبل أن نحاول طباعتهما.
الجافا متجدد L11_firstCorrect

نلاحظ في هذه الصورة أننا قمنا باعطاء قيماً للمتغيرات التي اشهرناها عن طريق المساواة في حالة المتغير b و عن طريق وضع ناتج الطرح في المتغير number. و هكذا حللنا المشكلة.
يمكننا أيضاً ترتيب الطباعة في الأسطر من 28 إلى 35.
لنأخذ السطر الـ 30 مثلاُ
System.out.println("number = " + number);
سبق و شرحنا طريقة الطباعة في الجافا. في هذا السطر نقوم في الواقع بطباعة هذه الجملة:
"number = "
ثم قمنا بعلامة زائد التي تعني اننا سنطبع شيئاً آخر إلى جانبها. ثم وضعنا اسم المتغير number و هذا يعني انه سيقوم بطباعة قيمة المتغير number.
و هنا أحب أن أضع ما نفعله في الدوس:
الجافا متجدد L11_dos1

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

مثال تطبيقي على استخدام المتغيرات في الجافا:
هنا لدينا برنامج يقوم بانشاء ثلاثة متغيرات من نوع عدد صحيح int. و البرنامج يقوم باعطاء المتغيرين الأولين x , y قيم أولية. ثم يضع ناتج الجمع في المتغير الثالث z.
الجافا متجدد L11_second

لاحظ جملة الطباعة في آخر البرنامج.. مرتبة جداً، أليس كذلك؟
انظروا الى النتيجة:
الجافا متجدد L11_dos2
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:10 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
تعريف فئة:
درسنا اليوم سيكون تعريف فئة التاريخ، و سنلقي فيه بعض الضوء على الوظائف في الجافا، ان الدرس سيكون طويلاً نوعاً ما، و لكنه يضع الأسس المهمة لكل ما سيلي من برامج ان شاء الله.


لقد اخترت لكم فئة تعتبر المثال المفضّل عند معظم المصممين لوضوحها و سهولة استخدامها. لنضع التصميم المبدئي لهذه الفئة مع بعض
Date
الصفات
رقم يمثل اليوم
رقم يمثل الشهر
رقم يمثل السنة
لنقم بكتابة ذلك بالجافا. لنتوقف و نفكّر قليلاً. ما الذي نقوم بتعريفه؟ اننا نقوم بتعريف فئة اسمها Date، اذاً سنكتب التالي:
الجافا متجدد L12_Date_0
الخطوة التالية هي تعريف مميزات أو صفات هذه الفئة. نلاحظ ف يالجدول السابق، أننا وضعنا ثلاثة أرقام بحيث يمثّل أحدها اليوم و الثاني الشهر و الثالث السنة.
لذا سنضع ثلاثة متغيرات رقمية (في الوقت الحاضر، و قد نغيرها فيما بعد) لكل صفة من الصفات، هكذا:
الجافا متجدد L12_Date_1

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


الوظيفة هي مجموعة من الأوامر المكتوبة بلغة الجافا، تقوم بمهمة محددة. لنقم بوضع الامكانية الأولى و هي الاستعلام عن التاريخ، سيظهر البرنامج كما يلي:

الجافا متجدد L12_Date_2

سنتوقف هنا قليلاً، لننظر للكود الذي تركته في المساحة البيضاء. فقد قمنا فيه بتعريف الوظيفة. في السطر الأول من الوظيفة نرى التالي:
public String getDate(){
اننا في هذا السطر نقوم بتعريف وظيفة. الكلمة الأولى public لو تذكرون اننا تحدثنا عنها عندما كتبنا أول برنامج بالجافا. فهذه الكلمة هي مغيّر الدخول أو (Access Modifier). و قد وضعناه لهذه الوظيفة (Method) عام، لأننا نريد لأي فئة أو برنامج آخر يقومون باستخدام هذه الفئة أو اعضاءها أن يتمكنوا من الاستعلام عن التاريخ.
ان أي وظيفة في أي فئة لابد أن يكون لها نوع اعادة (Return type). و في مثالنا، ما الذي نريده ان يود الينا.... التاريخ أليس كذلك؟ حسناً التاريخ الذي نريده سيكون في صيغة نصية (String)
الكلمة التالية هي اسم الوظيفة و يقوم المبرمج بتحديدها. و هذه الكلمة تكون عادة في صيغة فعل يدل على الوظيفة التي تؤديها هذه الوظيفة. في حالتنا هذه سمّيناها:
getDate()
لأننا في الواقع نريدها أن تعيد لنا قيمة تخبرنا عن التاريخ. لابد ان ينتهي تعريف أي وظيف بقوسين دائريين، و هما في هذه الوظيفة لا يحتويان على أي شيء. ثم قوس المجموعة، ننتقل للسطر التالي و هو في داخل الوظيفة:
String str=day + "/" + month + "/" + year;
في السطر السابق نلاحظ اننا قمنا بتعريف (اعلان او اشهار) متغيّر من نوع نصي كلمي: String و أسميناه str، و أعطيناه قيمة مبدئية عبارة عن شكل التاريخ بحيث وضعنا اليوم ثم علامة "/" و الشهر، ثم علامة "/" ثم السنة. و هكذا أصبح المتغير str فيه التاريخ المخصص لأي عضو في الفئة (والذي قد يختلف من عضو إلى آخر)
في السطر التالي:
return str;
نلاحظ استخدام الكلمة return وهي في اللغة الانجليزية تعني (اعادة) و هكذا كلمة return في السطر السابقة تقوم بارجاع القيمة التي تعيدها الوظيفة. و لابد أن يكون ما يلي هذه الكلمة من نفس نوع return type للوظيفة.
في مثالنا كان الـ return type هو String، و هكذا وضعنا بعد كلمة return المتغير من نوع النص الكلمي String و كان في حالتنا المتغير str.

ملخص الوظيفة السابقة

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

في الصورة السابقة نلاحظ اننا في تعريفنا لوظيفة تحديد التاريخ، قد قمنا بتعريفها بطريقة تختلف قليلاً عن وظيفة الاستعلام. ولكن المبدأ هو نفسه في الحالتين.
لنتابع معاً، السطر التالي:
public void setDate(int d, int m, int y){
هذه الوظيفة هي أيضاً public مثل سابقتها. و لكن انظروا إلى النوع الذي تعيده: void و هو نوع متغيرات لم نتعرّض له أبداً. لأنه ببساطة ليس نوعاً لمتغير. هو نوع ليخبرنا ان هذه الوظيفة لا تقوم باعادة أي قيمة. انها تؤدي وظيفة محددة فقط لا غير.
نلاحظ أننا اسمينا الوظيفة: setDate و لكن ما تلاها ليس قوسين دائريين فارغين، بل فيهما السطر التالي:
int d, int m, int y
نطلق على ما سبق parameter list أو قائمة المتغيرات المدخلة للوظيفة. في مثالنا هنا نريد ان نعطي التاريخ ثلاث قيم، قيمة لليوم، و قيمة للشهر و قيمة للسنة. و هكذا قمنا بادخال ثلاث متغيرات هم d و m و y بحيث يمثل كل منهم على الترتيب: day, month, year.
فنلق نظرة على ما هو داخل الوظيفة:
day = d;
month = m;
year = y;

اننا في داخل هذه الوظيفة نساوي المتغيرات التي عرفناها في الفئة (Date class) بالـ parameter list.
عليك ان تقوم بتجهيز كود هذه الفئة كما هو، و تقوم بكتابته و عمل ترجمة له حيث اننا سنقوم في الدرس القادم باستخدام هذه الفئة ان شاء الله، و أتصور أن الأمور غير الواضحة ستتضح.
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:11 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
استخراج عضو من فئة

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

الجافا متجدد L13_useDate_1

في البرنامج السابق في السطر الخامس قمنا باعلان متغير من نوع Date و أسميناه birthday، اذاً نحن نحتاج الآن إلى عضو من فئة Date التي كتبناها في الدرس السابق.
كي نعرف المتغير من نوع Date نكتب التالي:
Date birthDate;
لكي نفهم الجملة السابقة، علينا أن ننظر إلى الصورة التالية. و هي تمثّل جزء من الذاكرة. نريد ان نحجزه للمتغير birthDate من نوع Date.
الجافا متجدد L13_mem_0

كما هو موضّح في الصورة ان قيمة المتغير في الذاكرة تمثلها علامات استفهام. ذلك ان المتغير birthDate ليس كائن في حد ذاته. بل هو متغير لعنوان الكائن.
كي تتم ترجمة الجملة السابقة بدون مشاكل يجب أن يكون ملف Date.class موجوداً في نفس الحافظة. (في المستقبل سنتعلم انشاء الله كيف نحدد أماكن الفئات). و لكن في الوضع الحالي سنكتفي بوضع هذا الملف مع الملف السابق في نفس الحافظة.
الآن لكي ننشئ الكائن نفسه علينا أن نستخدم الطريقة التالية:

الجافا متجدد L13_useDate_2

نلاحظ في السطر السابع من البرنامج الموضح في الصورة السابقة هذه الجملة:
birthDate=new Date();
هممم أعتقد أن لديك الآن العديد من الأسئلة، أليس كذلك؟
اذاً دعنا نكمل الشرح اليوم بطريقة الأسئلة و الأجوبة
مالفرق بين المتغير من نوع Date و المتغير من أي نوع آخر ممن ألقينا عليه الضوء في درس المتغيرات؟
ان المتغير من نوع Date هو من فئة قام المبرمج بتعريفها. أي انه متغير يمثّل عضواً من فئة. اما المتغيرات سابقة الذكر مثل int و char و boolean فهم متغيرون لا ينتمون فعلياً لفئة محددة، و لكنهم يمثلون أنواع المتغيرات البسيطة. ان المتغير Date يعتبر أكثر تعقيداً نوعاً ما.
لم قمنا باستخدام الكلمة new؟ و ما الفائدة من السطر السابع؟
سبق و ضمن شرحنا للسطر الخامس من نفس البرنامج أن اوضحنا ان اعلان المتغيرات من نوع الفئات أو ما نطلق عليهم Aggregate Data Types هي في الواقع اعلان النيّة عن اعلان المتغير. و لكن ما حدث في السطر السابع، ان المترجم قام بتهيئة جميع أجزاء التاريخ الفعلي، و أنشأ كائناً من نوع Date ثم وضع عنوان الذاكرة لهذا الكائن في المتغير birthDate.
لم أفهم، أرجو التوضيح أكثر في السؤال السابق؟
دعونا نستخدم الرسوم التوضيحية، لمعرفة ما تم في هذه الجملة:
Date birthDate=new Date();
ان القسم الأول من الجملة (أو في برنامجنا ما هو موجود في السطر الخامس) يمكن تمثيله بالصورة التالية:
الجافا متجدد L13_mem_1

ان القسم المظلل من الصورة يصور لنا ما يعنيه الجزء الأول من الجملة. انه يعني اننا قمنا بانشاء متغير (علبة) تحفظ في داخلها عنوان كائن شيئي من نوع Date. و لكن لاحظ أن القيمة المبدئية في المتغير غير معرّفة حتى هذه اللحظة (قبل ان ننتقل لبقية الجملة). أي اننا نمهد لانشاء كائن من نوع Date و لكننا لم ننشئه حتى الآن، لذا وضعنا في داخل المتغير birthDate علامات استفهام.
أما الصورة التالية:
الجافا متجدد L13_mem_2

فهي تظلل القسم الأخير من الجملة الذي يعني اننا سنقوم بانشاء كائن من نوع Date في ذاكرة الكومبيوتر. و لنفرض مجرد فرض ان عنوان هذا المكان الذي وضعنا فيه الكائن هو العنوان الموضح في اسفل المنطقة المظللة.
ملاحظة: ان المتغيرات day و month و year سيتم اعطاؤهم القيمة المبدئية (0) بشكل اوتوماتيكي. لأنهم ينتمون لكائن، و ليس لوظيفة محددة.
اننا حتى الآن أنشأنا على أحد طرفي الجملة متغيراً لا توجد فيه أي قيمة. و في الطرف الآخر أنشأنا في الذاكرة كائناً شيئيّاً من نوع Date. لاحظ ما سيحدث الآن:
الجافا متجدد L13_mem_3


ان علامة المساواة في هذه الجملة تعني ان عنوان الكائن الذي انشأناه في الذاكرة سيتم وضعه في المتغير birthDate. و هذه هي طريقة اعطاء المتغير من نوع Aggregate Data Type القيمة المبدئية. هل المقصود ان عدم وضع القيمة المبدئية لأي متغير من هذا النوع يعني عدم القدرة على استخدام هذا المتغير؟
بالضبط! ان المتغير الشيئي أو الكائني أو الذي نريد أن ننشيء عن طريقه عضواً من فئة محددة لابد من اعطائه قيمة مبدئية باستخدام الكلمة new. لأنه كما لاحظنا من السيناريو السابق، ان الاكتفاء بتعريف المتغير، يقوم بوضع علامات استفهام في المتغير.
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:12 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
استخدام عضو من فئة:

في الدرس السابق قمنا بانشاء متغير من نوع Date في هذا البرنامج:
الجافا متجدد L13_useDate_2

و اليوم سنقوم باجراء التغييرات التالية:
الجافا متجدد L14_useDate_3

لنتابع الخطوات التي قمنا بها في الكود السابق:
Date birthDate = new Date();
هذه الخطوة سبق و شرحنا الهدف منها في الدرس السابق. و هي باختصار تعني انشاء متغير يحفظ في داخلة قيم خاصة بكائن من نوع Date.
والآن، بما أن birthDate هو كائن من نوع Date فانه يملك كل ما يملكه أي كائن (عضو-object) ينتمي لهذه الفئة. و للتذكير سأضع برنامج فئة الـ Date هنا:
الجافا متجدد L14_Date

و الآن لنتابع الأسطر:
System.out.println(birthDate.getDate());
هذا السطر يقوم في الواقع بعدة أمور، انه يقوم باستدعاء الوظيفة: getDate الخاصة بالكائن birthDate. و كما نعرف ان هذه الوظيفة ستعطينا التعبير النصّي للتاريخ أي انها سترجع لنا قيمة نصة كلمية (String) لذا وضعناها مباشرة في داخل وظيفة الظباعة التي نستخدمها.
و هذا مشابه تماماً لأن نقول التالي:
String str = birthDate.getDate();
System.out.println(str);

ذلك اننا قمنا بوضع القيمة التي ترجعها لنا الوظيفة الخاصة بالكائن المسمّى birthDate في متغير نصي من نوع String ثم قمنا بطباعة هذا المتغير. سنلاحظ ان هذه الجملة ستطبع لنا القيمة: 0/0/0
أما في السطر التالي:
birthDate.setDate(10,8,2001);
فقد قمنا باستدعاء الوظيفة الخاصة بتحديد التاريخ، و أعطيناها القيم المناسبة لذلك و هي 10 للـ day، و 8 للـ month، و 2001 للـ year.
نلاحظ هنا أننا لم نقم بمساواة هذه الوظيفة بأي متغير، كذلك لم نقم باستدعائها ضمن وظائف أخرى، و السبب ان هذه الوظيفة لا ترجع لنا أي قيمة، أي انها تقوم بتنفيذ مجموعة من الأوامر فقط لا غير.
في السطر التالي قمنا بتكرار أمر الطباعة حتى نرى التغيرات التي حدثت على الكائن الخاص بنا:
System.out.println(birthDate.getDate());
بالرغم من أن الأمر هو نفسه، إلا ان الناتج الذي ستتم طباعته سيختلف، ذلك اننا في السطر الذي سبق هذا السطر (السطر السابع في البرنامج) قمنا باعطاء الـ day و month و year قيماً أخرى، و هي التي ستظهر عند تشغيل البرنامج، هكذا:
الجافا متجدد L14_final

ملاحظة:
اننا في هذا الدرس قمنا بانشاء كائن باسم birthDate من نوع Date و استخدمنا وظائفه المختلفة. و لأننا كتبنا فئة (class) الـ Date بشكل بسيط، فإن هذا يجعلنا نستطيع في أي لحظة أن نطبع أو نظهر القيم المختلفة للفئة، بمعنى. اننا نستطيع في أي لحظة في برنامجنا اليوم ان نضع هذه الجملة:
birthDate.day=20;
و سترى ان البرنامج سيعمل بشكل طبيعي. اذا قمت بطباعة الوظيفة التي تستعلم عن قيمة التاريخ للكائن birthDate ستجد انه يطبع لك القيمة 20 في خانة الـ day. لم لا تجرب بنفسك، لترى النتيجة؟
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:14 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
صفة في فئة عبارة عن عضو من فئة أخرى:

درسنا اليوم فيه شيء من الطول، و شيء من التفصيل. من فضلك لا تقرأه إلا و أنت في حالة ذهنية صافية غير مشوشة.. لأفضل النتائج.. والله الموفّق :-) على فكرة.. فيه بعض الرياضيات أرجو أن يسعدكم هذا لعلمي بولع المبرمجين بالرياضيات
الجافا متجدد Spaceتمهيد
لنجرب أن نضع فئة الإنسان. ماهي صفاته و قدراته؟ عين، لسان، قلب، انه يفكر، يبدع.
ممتاز.
لنتصوّر أننا نرغب في كتابة فئة القلب. و نضع فيها صفات أي قلب: يضخ الدم، ينبض.
رائع جداً..
الآن تصوّر أن عضواً من فئة القلب سيكون صفة لعضو فئة الانسان..
لغز؟ لنحلّه معاً عبر درس اليوم
الجافا متجدد Spaceمقدّمة المثال:
لنفترض أننا نرغب في بناء فئة للخط المستقيم. و حتى نبدأ فعلياً في ذلك. لابد من أن نعرف المزيد عن خصائص و مميزات الخط المستقيم أليس كذلك.
لنسأل أنفسنا:ماهو الخط المستقيم؟حتى نجيب على هذا التساؤل لابد أن نعرف القليل عن خصائص الخط المستقيم. لنتأمّل الشكل التالي:
[imgr]http://www.javagirl.ws/lessons/java/images/l15_img01.gif[/imgr] كما ترى في الشكل. لدينا نقطتان النقطة الأولى: P1 والثانية P2. و يربط بينهما الخط المستقيم. إذا الخط المستقيم هو كل ما يربط بين نقطتين، أليس كذلك؟ حسناً إذا احداثيات النقطة الأولى P1 و احداثيات النقطة الثانية P2 يحددان معاً كيف نرسم الخط المستقيم


نقطة توقف..قد يقول قائل منكم أن للخط لوناً وهو في الشكل اللون الأسود. فأقول صحيح. اللون صفة من صفات الخط. و قد يقول آخر أن لون النقاط أحمر فأقول خطأ. لأن لون النقاط من صفات النقاط و ليس من صفات الخط ;-) فلا تخلط الأمور. فمثلاً يمكن أن نكتب فئة مختصّة بالنقاط نسمّيها Point مثلاً. و نضع فيها صفات النقطة و هي ستكون الاحداثي السيني، و الاحداثي الصادي، و اللون. و لكن حين نعرّف الخط المستقيم ما يهمّنا من النقطة هو احداثياتها. أم لونها فستأخذه بشكل طبيعي من لون الخط نفسه. نحن نتحدّث عن الخط فقط. و استخدمنا النقاط لتوضيح أن الخط يربط بينهما. لم تستوعب النقطة؟ لا تخف أبداً.. تابع الدرس و ان شاء الله تتوضح الأمور


إذاً لدينا الآن فئة الخط المستقيم Line. و لكن في حالتنا اليوم نحن مضطرون إلى بناء فئة أخرى.. ما هي؟
صحيح.. فئة النقطة و لنطلق عليها Point و أي نقطة في العالم تتكون من احداثيين (س، ص) أليس كذلك؟ و باللغة الانجليزية: (x,y). لننظر إلى الشكل التالي:

[imgl]http://www.javagirl.ws/lessons/java/images/l15_img02.gif[/imgl]
فنلاحظ الشكل المجاور قليلاً.. ستجدون النقطة الحمراء و الممثلة بالنقطة P1 تعكس اثنين من الاحداثيات. أحدهما ينعكس على المحور (س) والآخر ينعكس على المحور (ص).
و نلاحظ أيضا في الأرقام التي تجاور النقطة ان الاحداثي السيني تم تعريف أولاً. ثم تم تعريف الاحداثي الصادي.
و لكي نكتب الفئة في اللغة الانجليزية أرجو ملاحظة أن س= x، و أن ص=y. كما ارجو ملاحظة اتجاه اللغة. حيث ان الاتجاه بالانجليزي سيكون من اليسار لليمين هكذا: (x,y).

كتابة البرامج:
الآن و بعد هذه الدراسة المتعمّقة في الهندسة الاحداثية. (أرجو أنها كانت خفيفة على قلوبكم) نستطيع ببساطة أن نبني معاً فئة النقطة أو Point. لنتأمّل الكود التالي:
الجافا متجدد L15_point01

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

تجدون أن الخط المستقيم له صفتان تميزانه (أو بمعنى أصح تميّزان أي عضو نقوم باستخراجه من هذه الفئة) و هما النقطة الأولى p1 و النقطة الثانية p2.
والآن لنلخّص ما فعلناه. لقد كتبنا فئة و هي فئة النقطة Point و هي فئة قائمة بذاتها. ثم كتبنا فئة الخط المستقيم Line و استخدمنا في تعريفها عضوين من الفئة الأولى. فالنقطة p1 في فئة الخط المستقيم عبارة عن صفة لعضو. و هي بحد ذاتها عضو من فئة النقطة Point. أتمنى أن تكون هذه النقطة واضحة :-)
والآن سنكتب برنامج ثالث مثلاً ليكون هو البرنامج الذي نستخدم فيه أعضاء من فئة الخط المستقيم مثلاً. و سأسمّيه Painter لأننا ان شاء الله سنكتب في نهاية هذه الدورة برنامج رسم بسيط
الجافا متجدد L15_Painter01
بالطبع الهيكل العام للبرنامج مفهوم وواضح من دروس سابقة.
الجافا متجدد Spaceشرح كود برنامج Painter
لننظر إلى الشكل:
الجافا متجدد L15_painter01p1

نلاحظ عرض السطرين 5 و 6 فيهما استخراج عضوين هما line1 و line2 من فئة الخط المستقيم. ثم قمنا بعد ذلك بحجز الذاكرة لهما لكونها من فئة قمنا بتعريفها (Aggregate Data Type) كما شرحنا في الدرس التالث عشر. هنا الطريق تمام و مفتوح

لننظر للشكل التالي:
الجافا متجدد L15_painter01p2

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

نقطة توقف..إن هذه الخطو ضرورية جداً جداً جداً جداً جداً. ستسأل لماذا.. تذكّر معي أننا قمنا بتعريف الخط المستقيم في البرنامج بأن فيه عضوين من فئة النقطة Point. و لم نقم بعد بحجز أي مساحة لهذين العضوين. و هكذا لابد أن نقوم بحجز المساحة للنقطتين الخاصتين بالخط الأول و كذلك النقطيتن الخاصتين بالخط الثاني. و إذا لم نقم بهذا العمل. فنحن في الواقع لن نتمكّن من تشغيل البرنامج لأن النقاط ليست جاهزة للاستخدام و لن نتمكّن في الواقع من استخدام x و y لأي نقطة. لأنه بكل بساطة النقاط ليست موجودة و لم يتم حجز الذاكرة المناسبة لها بعد. راجع الدرس الثالث عشر لمزيد من المعلومات حول هذه النقطة.
هل تعتقد أن هذه مشكلة يجب أن نجد لها حلاً. تفكير رائع وهذا ما سنفعله في الدرس القادم من هذا الموضوع.

لننظر للشكل التالي
الجافا متجدد L15_painter01p3

هنا نجد الأسطر من 15 إلى 19. و في السطر 15 نجد تعليقاً يخبرنا أننا سنقوم بإعطاء قيماً للخط المستقيم line1 . و هذا يعني أننا سنحدد النقاط التي يصل بينهما. و بتفسير أكثر سنقوم بتحديد الاحداثيات السينية و الصادية لكلتا النقطتين. نلاحظ أننا استخدمنا الـ dot notation هنا و هذا يعني انني سأقوم باستخدام صفة (في حالتنا) خاصة بالعضو الذي ينتمي للفئة Line. لننظر لدفتر الرسم البياني و نحاول رسم هذا الخط الذي يربط بين النقطتين (10,10) و (20،20).
الجافا متجدد L15_line10102020

والآن لننظر للشكل التالي:
الجافا متجدد L15_painter01p4

كما في القسم السابق، و لكن هذه المرة في الأسطر من 21 إلى 25 سنقوم بتحديد الاحداثيات لنقطتي الخط المستقيم الثاني. لننظر للشكل التالي الذي يمثل الخط المستقيم على الرسم البياني:
الجافا متجدد L15_line5492

والآن لنتابع الجزء الأخير:
الجافا متجدد L15_painter01p5
الأسطر من 27 إلى 37 تقوم بطباعة السطر بشكل متب كما في أي سطر طباعة آخر. تطبعه على الشاشة.
كل ما في الأمر أننا قمنا بترتيب المخرجات.

نقطة توقف..استخدام اشارة (+) في داخل جملة الطباعة لا تعني أننا سنقوم بالجمع. إلا في حالو واحدة وهي أنه وُجد على طرفي هذه الإشارة داخل أمر الطباعة عددين قابلين للجمع. و حتى هذا ليس الحال دائماً. لأنه يعتمد في بعض الأحيان على ترتيب المتغيرات و موقعها في جملة الطباعة نفسها. علامة الجمع بين المتغيرات من نوع String و هي التي تمثلها العبارات المحصورة بين علامتي التنصيص " و "، يعني أنه سيتم جمع هذه العبارات. و هذا ما تفعله جملة أو أمر الطباعة System.out.println.

التشغيل
إنّك إذا قمت بكتابة جميع البرامج بشكل صحيح، فإنّك بعد عمل الترجمة Compile للملفات الثلاثة، و تشغيل الملف الأخير Painter، فإنه سيظهر لك هذا الناتج:
الجافا متجدد L15_painterResult01


الخاتمة
هذا ما لدي في هذا الجزء. و لكن دعوني أسأل، هل ما فعلناه كان الأفضل؟ أم أن هناك طريقة أفضل لعمل نفس الناتج. الجواب ستجدونه في الدرس القادم إن شاء الله
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:15 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
Constructors

في الدرس السابق قمنا بعمل مهم جداً. و سنقوم اليوم بنفس العمل و لكن بطريقة أسهل. باستخدام مفهوم الـ Constructor.
أرجو أن تقوم بقراءة المقدّمة على الأقل من الدرس السابق (إن لم تكن فعلت) و الأفضل أن تطلع عليه بأكمله حتى تكون على علم بما نفعله هنا.

تمهيد
لننظر إلى هذه البرامج الثلاثة سابقة الذكر و الشرح في الدرس السابق لقد قمنا بتعريف فئة النقطة في الدرس السابق بهذا الشكل:<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L15_point01
</blockquote>
ان تعريف لفئة النقطة بهذا الشكل يجعلها تواجه مشكلة. و هي أننا نضطر لإعطاء قيماً لمتغيراتها x و y بشكل يدوي في الفئات الأخرى التي تستخدمها و تستدعيها. كما فعلنا في هذه الخطوات من فئة Painter:<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L15_painter01p4
</blockquote>
إذا نحن بحاجة لوسيلة تجعلنا أثناء تكوين أي عضو من فئة النقطة Point أن نعطي قيماً لمتغيراته. ما أقصده بالتكوين هو هذه الجملة:<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L16_new
</blockquote>إن عبارة الجافا متجدد L16_new1 تعني أننا سنقوم باستخدام بتكوين عضو فعلي من فئة النقطة Point. هممو لكن ألا تلاحظون شيئاً؟.. لاحظو معي أن الجافا متجدد L16_new2 اسم الفئة نفسه يليه قوسان. و هذا ما يعرف بالـ Constructor. وهو عبارة عن طريقة التكوين التي يتم بها انشاء العضو من الفئة.
الجافا متجدد Spaceكيف نقوم بإعادة تعريف الConstructor؟
إن الجافا متجدد L16_new2 يعرف باسم: Default Constructor. و هي الذي توفره أي فئة موجودة في الآلة التخيلية. و لا يحتاج المبرمج لتعريفه و لا للإشارة إليه.
و يمكن للمبرمج إذا أراد أن يقوم بتعريف الـ Constructor الذي يريده. لنفرض مثلاً في فئة النقطة. أننا أردنا يقوم المبرمج بتمرير قيماً صحيحة للمتغيرين x و y أثناء تكوين العضو من فئة النقطة Point. أي لنفرض أنه أراد أن يكتب هذه الجملة:
الجافا متجدد L16_niceway

بدلاً من هذه الطريقة:
الجافا متجدد L16_badway

الطريقة الأولى طريقة لطيفة أليس كذلك؟ أفضل و اسهل عند استخراج الأعضاء من فئة النقطة.
لنتأمّل الكود التالي الجديد لفئة النقطة نفسها:<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L16_point02
</blockquote>
لاحظ السطر 6. ستجد أننا كتبنا كوداً قد يبدو عجيباً للوهلة الأولى:<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L16_constructor
</blockquote>نلاحظ أننا كتبنا اسم الفئة، و هي في حالتنا Point، ثم فتحنا أقواساً. و في داخل الأقواس قمنا بتعريف سلسلة من المتغيرات تفصل بينهما الفاصلة (,).
من الضروري جداً جداً أن نكتب سلسلة المتغيرات بترتيب محدد. أي أننا نقوم بتوقع الاحداثي السيني، ثم الاحداثي الصادي و ليس العكس.<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L16_cons
</blockquote>
لاحظ في نهاية السطر السادس يوجد قوس مجموعة. مما يعني أننا سنقوم بكتابة بعض الكود و لا تنس أن تغلق قوس المجموعة بعد الانتهاء من كتابة ما تريد.
والآن لننظر إلى داخل الـ Constructor. ما الذي قمنا بتعريفه. في السطر 7 و 8. نلاحظ أننا أخذنا القيم من المتغيرات التي مررت لنا عبر تكوين العضو، و وضعناها في المتغيرات الخاصة بالعضو.
المتغيرات الممررة xx و yy هي متغيرات مؤقتة. تنتهي بمجرد الانتهاء من تكوين العضو (و الوصول لقوس المجموعة الموجود في السطر التاسع. و لعلنا نفصّل في هذا أكثر في درس الوظائف ان شاء الله.

نقطة توقفعندما تحدثنا عن الـ Constructor الافتراضي. و قلنا أنه يتوفّر بشكل افتراضي لأي فئة. فإن ذلك يتم إذا كانت الفئة لا تحتوي على Constructor أما اذا قام المبرمج بتعريف Constructor خاص به، فإن الـ Constructor الافتراضي أو default constructor ذو القوسين الفارغين لا يتم ايجاده. أي أن عبارة الجافا متجدد L16_new ستنتج خطأً في الترجمة. ذلك أن الconstructor الموجود يختلف في عدد المتغيرات الممررة عن الجافا متجدد L16_new2. إذا رغب المبرمج في constructor ذو سلسلة متغيرات ممررة فارغة مثل: الجافا متجدد L16_new2، فعليه أن يكتبه بنفسه.
يمكن للفئة أن يكون لها أكثر من constructor. كل منهم يختلف عن الآخر في عدد أو نوع المتغيرات في السلسلة الممررة لكل منهم، أو كلاهما.


البرامج مرة أخرى

آن و قد تعلمنا الـ constructors. نستطيع كتابة البرامج الموجودة في الدرس السابق بشكل أفضل مما سبق. فبرنامج النقطة سيكون بهذا الشكل كما كتبناه معاً قبل قليل:
<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L16_point02</blockquote>
لنحاول أن نكتب برنامج الخط المستقيم بنفس الطريقة. بأن نقوم بتجهيز constructor خاص به، هكذا:

<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L16_line</blockquote>
نلاحظ أننا استخدمنا نفس المفهوم. قمنا بتعريف constructor له متغيرين في سلسلة التمرير parameter list من نوع Point.
والآن لنلق نظرة على الفئة Painter:
الجافا متجدد L16_painter
لندرس معاً الأسطر من 5 إلى 8:

<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L16_line12</blockquote>
قليل من التركيز من فضلك. فالآن المرحة الحرجة التي نقوم فيها بتطبيق ما قمنا بالتجهيز له مع بداية الدرس.
السطر 5، نقوم فيه بتعريف أو اشهار اثنين من المتغيّرات من نوع Line. اسم الاول line1 و الثاني line2.
في السطر 7 نقوم بعدة خطوات. انظر الشكل:

<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L16_explain</blockquote>
لنذهب إلى الخطوة رقم 1 و التي تجدون بجانبها رقمين 10 و 10, هما الاحداثيين السيني و الصادي للخط الأول. الآن نريد أن نكوّن منهما نقطة.
لننتقل للمرحلة رقم 2. و التي تجدون بجانبها هذه الجملة الجافا متجدد L16_new3 و هي تعني أننا سنقوم بتكون عضو في الذاكرة من نوع Point. و لأن فئة النقطة Point توفر constructor يأخذ رقمين صحيحن من نوع int أثناء تكوين العضو. فأصبح بإمكاننا الآن وضع الرقمين 10 و 10 في الأماكن المشار لها بالأسهم.
حسناً رائع جداً. والآن لننزل إلى السطر نفسه (سبب البلاوي اللي نحن فيها من الصبح هاهاهاهاها).

<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L16_line1</blockquote>
حسب تعريف الـ constructor الموجود في الفئة Line ما نوع المتغير المتوقّع هنا؟ Point. فعلاً. و هذا بالضبط ما فعلناه. قمنا بوضع العضو الذي استخرجناه في
الخطوة 2 في المكان الذي يفترض أن يكون فيه متغير من نوع نقطة.

نقطة توقفسيتساءل بعضكم هنا. لماذا لم نقم بتعريف متغير من نوع نقطة Point هكذا:<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L16_pointag
</blockquote>
لنسأل أنفسنا. ما الاستخدام الذي سنستخدم فيه المتغير في هذه الحالة؟ اننا نريد أن نمرره عبر constructor الخط المستقيم. و لن نقوم باستخدامه بعد ذلك أبداً. إذا في المسألة حجز لموارد النظام. لأننا نريد تمرير القيمة التي سيتم تخزينها في عضو آخر (وهو العضو الفعلي الموجود في فئة الخط المستقيم Line.
حتى تتوضح المسائل أكثر. سنقلب المسألة. تخيل أن لدي خطاً مستقيماً فيه عضوين من فئة النقطة Point. و لكن لم يتم تحديد قيمهما بعد.
فهل الأفضل أن أقوم بإنشاء عضوين حقيقين ثابتين، و أمرر قيمهما إلى الأعضاء في الخط المستقيم. أم أنشئ عضوين مؤقتين، ينتهي دورهما بمجرّد تمرير القيم؟
أتصور أن الحل الثاني هو الأنسب. و هذا ما فعلناه فعلاً. قمنا بانشاء الأعضاء داخل استدعاء constructor الـ Line، و بمجرّد أن تمرر قيمتهما، لن يبقى لهما وجود. و هكذا نحافظ على مصادر النظام في الذاكرة.
من الممكن طبعاً استخدام الطريقة الأولى، و لكن الطريقة الثانية عادة برمجية محمودة.

وطبعاً في نهاية البرنامج و في الأسطر من 10 إلى 20 نفس أوامر الطباعة التي ذكرناها في الدرس السابق

ملاحظات مهمة
يمكن تعريف الكونستراكتور بحيث يكون فارغاً من الكود. بل قد تكون لديك أسباب لذلك.
إذا قمت بتعريف constructor خاص بك، فأنك تفقد الـ constructor الافتراضي، فإذا أردت أن تحتفظ به، عليك أن تقوم بكتابته يدوياً.
يمكن أن يكون لنفس الفئة أكثر من Constructor يختلفون في أعداد أو أنواع المتغيرات في سلسلة المتغيرات الممررة لهم، أو كلاهما.
شكل الـ Constructor قد يشبه شكل الوظيفة، و لكن تذكّر دائماً. اسم الـ Constructor هو نفس اسم الفئة، و لا يوجد له نوع بعكس الوظيفة.
إن عمل new هو انشاء العضو من الـ constructor المناسب. فإذا لم يوجد constructor في الفئة. تقوم new باستخدام الـ constructor الافتراضي
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:16 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
أوامر التحكّم - الجمل الشرطية

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


لنتصوّر أننا نكتب برنامجاً صغيراً جداً. يخزّن رقماً في متغير، ثم يقارن هذا المتغير بالرقم عشرة، فإذا كان المتغير أصغر نعرض على الشاشة جملة معينة. و إذا كان أقل من عشرة، سنعرض على الشاشة جملة أخرى. لننظر لل شكل التالي:
الجافا متجدد L17_decision

إن هذا الشكل يمثل حالة اتخاذ قرار. لو نظرت للشكل المعيّن في وسط الصورة ستجد أن لدينا فيه سؤالاً له جواباً من اثنين إما أن يكون نعم (صح)، أو لا (خطأ). و في الشكل السابق، كان السؤال عن قيمة رقم محدد (هل قيمة الرقم أكبر من 10؟) و هذا هو السؤال. فإذا كانت الإجابة نعم فإننا سنفعل شيئاً. و ننفذ ما في الدائرة الخضراء على اليمين، أما إذا كانت الإجابة لا، فسنقوم بفعل شيء آخر و تنفيذ ما في الدائرة الوردية على اليسار.
و لتطبيق ذلك في البرمجة، لننظر للشكل التالي:
الجافا متجدد L17_if_struct
حيث نبدأ بالكلمة (if) و بعدها نفتح قوسين دائريين نضع في داخلها شرطاً تكون قيمته إما true أو false. بعدها نفتح قوس مجموعة نضع في داخله ما نريد تنفيذه في حال كانت الجملة الشرطية صحيحة (true). و هذا ما نسميه (جملة إذا) أو (If Statement). و هي أول نوع من الجمل الشرطية.
و الآن لنتأمّل معاً الكود التالي:

الجافا متجدد L17_Test10_1

لقد قمنا باشهار المتغيّر number و أعطيناه القيمة 5 كما في السطر 4.
و الآن لننظر إلى الكود من السطر 8 إلى 12:
الجافا متجدد L17_if
إننا في هذه الأسطر نقوم بتطبيق جملة إذا. بحيث نلاحظ في السطر الثامن أننا وضعنا الجملة المنطقية (الرقم أكبر من 10).فإذا كانت العبارة صحيحة فسنقوم بتنفيذ الكود في الجزء المحصور بين قوسي المجموعة الذي يلي الجملة المنطقية مباشرة. أما إذا كانت العبارة خاطئة، فسنقوم بتنفيذ الجزء الذي يلي كلمة else و المحصور أيضاً بين قوسي مجموعة.

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

Switch Statement
لنفرض أننا نريد أن نكتب برنامجاً يقوم بعدة عمليات مختلفة حسب قيمة متغير. و لنفترض أن لدينا متغيراً اسمه grade نخزّن فيه درجة
الطالب. فإذا كانت الدرجة (A) نطبع كلمة (Excellent) أما إذا كانت (B) نطبع كلمة (Very Good)، أما إذا كانت (C) نطبع كلمة (Good)، أما إذا كانت (D) نطبع كلمة (Poor) و لو كانت أي شيء آخر نطبع كلمة (You Failed).
طبعاً يمكننا القيام بذلك بسلسلة من جمل if الشرطية هكذا:

نقطة توقف
عند المقارنة بين المتغير grade و الحرف 'A' استخدمنا بينهما علامتي يساوي لا علامة واحدة. فعلامة = الواحدة تعني أننا نريد أن نضع قيمة في هذا المتغير. و العلامتين (==) تعني أننا نقارن ما بين الموجود على طرفي العلامتين. و لنا حديث مفصّل عن الجمل المنطقية و أدواتها في ملحق منفصل ان شاء الله.
نسمي هذا النوع من If الشرطية: nested If أي وجود if داخل if و هكذا. و تقدّم لنا معظم لغات البرمجة و منها لغة الجافا جملة switch الشرطية. التي تسهّل كتابة البرنامج إذا كنت تعتمد فيه على عمل بعض الخطوات بحسب قيمة متغير محدد. والآن لنتعرّف على الهيكل العام لجملة switch، أثناء حل البرنامج الذي تحدّثنا عنه في المثال:

الجافا متجدد L17_TestGradeSwitch

أول ذي بدء. نلاحظ أننا قمنا بتعريف متغير من نوع char اسمه grade. ثم بدأنا جملة switch و التي تكتب هكذا: switch ثم نفتح قوسين دائريين يتضمنان مفتاح. و مفتاح جملة switch هو المتغير الذي على اساس قيمته سنعرّف الحالات cases المختلفة. المفتاح في حالتنا هو grade وقد تم تعليمه بدائرة خضراء في الشكل السابق.
ثم نفتح قوس مجموعة. و نلاحظ أن القومس محدد بالخط الأصفر. و لابد أن يتضمن هيكل switch في داخله كل ما يتعلّق بهذه الجملة.
داخل جملة switch سنقوم بتحديد القيم. و نكتبها هكذا case ثم نضع القيمة تليها نقطتان رأسيتان (Smile بعدها نفتح قوس مجموعة نضع في داخله الجمل و الأوامر التي نريد تنفيذها إذا كانت قيمة المفتاح تساوي القيمة التي تلي case.
و هكذا حتى تنتهي كل الحالات. و يمكن (اختيارياً) استخدام الحالة default في حالة لم تتساوى قيمة المفتاح مع أي من القيم المذكورة.
إن جملة switch تختلف في طريقة تسلسل الأوامر. فبمجرّد أن يتم الدخول في أي حالة من الحالات، يتم في الواقع تنفيذ جميع الحالات التي تليها. لننظر للشكل التالي:
الجافا متجدد L17_switch_struct

نلاحظ أنه لدينا المفتاح key وأننا قمنا بتحديد القيم value1 و value2 و.. هكذا.
والآن لنتابع السيناريو. لنفترض أن قيمة key كانت تساوي فعلياً value2. في الواقع سيتم تنفيذ statement2. ومن ثم statement3 ومن ثم statement4.
أما إذا ساوت قيمة Key الـ value1 فسيتم تنفيذ statement1. و من ثم نجد كلمة break و هي تعني الخروج نهائياً من جملة switch كاملة. و هكذا لن يتم تنفيذ أي شيء آخر.
إذا ساوت قيمة key الـ value3، فسيتم تنفيذ الجملة statement3 و من بعدها statement4.
و هكذا فإن ترتيب الاختيارات مهم للغاية اذ يعتمد تنفيذها على هذا الترتيب. و لهذا وضعنا في المثال السابقة كلمة break في نهاية كل اختيار، حتى نضمن عدم تنفيذ أي جملة أخرى في داخل اقواس switch.

نقطة توقف

  • يمكن أن يكون مفتاح الـ switch من نوع int أو char و لا يمكن عمل switch على نوع من الـ aggregate data types التي يقوم المبرمج بتعريفها.
  • استخدام كلمة break بعد كل اختيار ليس اجبارياً و لا ضرورياً و يتحكّم في ذلك طبيعة الاوامر التي تريد تنفيذها و البرنامج الذي تريده.
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:18 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
أوامر التحكّم - التكرار

اليوم نتابع الحديث عن اوامر التحكم المهمة في البرمجة. وحديثنا اليوم سيكون عن التكرار Loops. فأنت تحتاج في بعض الأحيان أن تقوم بتكرار مجموعة من الأوامر المتتالية اكثر من مرة.

مقدّمة
لنفترض أننا نرغب في طباعة الجملة "I am a muslim" أربع مرات. طبعاً ستقولون أنه يمكننا أن نكتب البرنامج التالي و سيقوم بالمطلوب:

<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L18_printThem01</blockquote>
فعلاً هذا صحيح، البرنامج يكتب الجملة 4 مرات، و لكن لاحظ معي البرنامج مرة أخرى، ستجد أننا قمنا بكتابة الأمر
الجافا متجدد L18_printStatement
أربع مرات. و هذا قد يكون حلاً مناسباً لأن عدد مرات التكرار كان 4، و لكن لنتصور أننا نريد أن نطبع الجملة 100 مرة أو ربما 1000 مرة. أو ربما نرغب في تكرارها عدداً من المرات يعتمد على تحقيق شرط معين. بالطبع لابد لنا عندها أن نستخدم أدوات التحكم التي تقوم بتكرار الأوامر. و توفّر لك لغة جافا ثلاث طرق لتكرار الأوامر. سنتعرّف عليها فيما يلي

الجافا متجدد Spacefor loop
نستخدم هذا النوع من التكرار حين تكون عدد مرات التكرار محددة و معروفة. مثلاً. أي أنني أعرف مسبقاً عدد المرات التي سأقوم بتكرار الأوامر على عددها. في الحالة التي كانت في المقدّمة. نعرف أن عدد مرات التكرار كان 4.
يكتب كود الـ for loop على هذا الشكل:
for( initialization ; condition ; increment ) {
Statement 1;
..


لاحظ أن كل ما هو أحمر، لابد من كتابته بنفس الشكل و الطريقة، و الآن لنفسّر الألغاز الثلاثة الموجودة في السطر الأول و التي تفصل بينها فواصل منقوطة (و ليست فواصل عادية):


  • initialization: نضع في هذا الجزء متغير، و نعطيه القيمة المبدئية التي يبدأ منها التكرار. و سنرى بعد قليل كيف يفيدنا هذا. ويمكنك أن تنشئ متغيراً جديداً و تعطيه القيمة المبدئية

  • condition: هنا نضع الشرط الذي نتوقّف عن العد عنده. إن تحقق الشرط في هذه الجملة، يعني أن التكرار سوف يتوقّف.

    increment: هنا نضع جملة الزيادة (أو النقصان) و نعني بذلك، الرقم الذي نزيد المتغير الذي عرّفناه في قسم initialization.


ثم تلاحظ أن جملة for لها قوسا مجموعة يحصران بينهما مجموعة الأوامر المراد تكرارها.
لنحاول تطبيق ذلك على مثال عملي:

<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L18_for</blockquote>
كيف تعمل جملة for في المثال السابق؟

اتبع الخطوات حتى تعرف كيف تعمل جملة for:

  • أول ما يصل البرنامج لأمر for يقوم بادئ ذي بدء بتنفيذ الجملة التالية:

    الجافا متجدد L18_init
    حيث يقوم بحجز مساحة للمتغير (i) و يعطيه القيمة (0).

  • يتحقق من الشرط الموجود في هذه الجملة:

    الجافا متجدد L18_condition
    إذا أرجع الشرط قيمة (true) أي أنه بلغة البشر كان صحيحاً فسينفّذ الخطوة رقم 3. أما إذا أرجع القيمة false، أي أن الجملة كانت خاطئة فسيقفز حتى الخطوة 5.

  • سينفذ الأوامر المحصورة بين قوسي المجموعة بالترتيب حتى يصل إلى القوس الذي يغلق جملة for، و في حالتنا سيقوم بتنفيذ أمر الطابعة. هكذا:

    الجافا متجدد L18_print

  • سيعود التنفيذ إلى سطر جملة for الأول مرة أخرى، و هذه المرة، سيقوم بتنفيذ الجزء الثالث من جملة for و هو:

    الجافا متجدد L18_inc
    حيث سيقوم بزيادة قيمة المتغير (i) -في هذه الحالة بواحد- أي أنه ستصبح قيمة (i) الجديدة هي (1) بعد أن كانت صفراً. ثم سيعود لتنفيذ الخطوة 2 مرة أخرى.

  • إذا وصلت إلى هذه الخطوة معنى ذلك أن الشرط في الخطوة 2 لم يتحقق، و أعاد لي القيمة false عندها، سنخرج من جملة for، ونقوم بالبدء في تنفيذ الأوامر التي تليها، و في حالتنا الأمر الذي يطبع كلمة Hala هكذا:

    الجافا متجدد L18_finish

أرجو أن تكون الخطوات قد أوضحت جملة for بشكل تام

نقطة توقف

  • من الممكن الاستغناء عن أقواس المجموعة في جملة for إذا كان الأمر المراد تكراره واحداً فقط، و لكن من الأفضل أن يتم التعوّد على وضع الأقواس، حتى يصبح برنامجك أوضح عند قراءته.
  • يمكنك تجربة أن تطبع المتغير (i) مع الجملة. و حاول بناءً على نفس المنهاج أن تطبع جدول الضرب.
  • المتغير (i) سيكون مجاله فقط في داخل الـ for ولن يمكن استخدامه خارجها، إلا مع إشهاره من جديد.
  • يمكن عمل جملة for داخل جملة for أخرى، و سيتم تنفيذ جملة for الداخلية كل مرة من البداية مع كل تنفيذ لجملة for الخارجية.
  • من الممكن أن ننقص قيمة المتغير i في جزء الـ Increment. ليتم العد تنازلياً إذا بدأنا من قيمة كبيرة للـ (i).
while loop
في هذا النوع من التكرار في الجافا، يتم تكرار مجموعة الأوامر بناءً على تحقق شرط معيّن. وهذا هو الشكل العام لجملة while:
while( condition ) {
Statement 1;
Statement 2;
..
}



فتحقق الشرط الموجود في ما بين القوسين بعد كلمة while (يعني تكون قيمته المنطقية true) يعني أنه سيتم تنفيذStatement 1 و Statement 2 و هكذا. لنفترض أننا نريد أن نكتب برنامجاً يقوم بعرض مجموع الأرقام المتتالية حتى رقم محدد، لننظر للبرنامج التالي:<blockquote style="margin: 1em; padding: 0px;">
الجافا متجدد L18_while
</blockquote>
لاحظ في المثال، في البداية قمنا باشهار ثلاثة متغيرات: المتغير (i) ووضعنا فيه القيمة صفر، و المتغير (max) ووضعنا فيه القيمة 4،و المتغير sum و أعطيناه القيمة صفر.

ثم بدأنا نكتب جملة while، ووضعنا في مكان الـ condition الجملة المنطقية (i<=max), في هذه الجملة، نقارن قيمة المتغير (i) بقيمة (max). فإذا كانت فعلاً أصغر منها أو تساويها فإن الجملة المنطقية ستكون صحيحة true و سيتم الدخول إلى جملة while و تنفيذ السطرين التاليين:<blockquote style="margin: 1em; padding: 0px;">
الجافا متجدد L18_while01


نقطة توقف

  • لاحظ أننا قمنا بتغيير قيمة (i) داخل جملة while و زيادتها. و هكذا هي جاهزة للمقارنة من جديد، و لو لم نقم بذلك، ستظل الجملة صحيحة، و سيظل البرنامج ينفذ الأوامر.
  • إذا لم يتحقق الشرط في جملة while فلن يتم تنفيذ الأوامر داخل الجملة أبداً.
do ..while loop
جملة do..while هي نفسها جملة while و لكن يتم تنفيذ الأوامر قبل التحقق من الشرط. بينما في جملة while يتم التحقق من الشرط، ثم التنفيذ. و هكذا فإن الأوامر في داخل do..while سوف يتم تنفيذهم على الأقل مرة واحدة.
تكتب جملة do..while هكذا:
do {
Statement 1;
Statement 2;
..
} while(condition)

يمكنك تطبيق الأمثلة في الجمل السابقة على هذه الجملة. وهكذا نكون قد غطينا أوامر التكرار في لغة
</blockquote>
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:20 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
الوظائف

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

إنشاء الوظائف
لكتابة أي فئة نحتاج أن نقوم بالتالي:

<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L19_syntax</blockquote>
و في الشكل التالي تشرح السطر الأول من الشكل السابق، و الذي يطلق عليه method signature:

<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L19_explainHead
</blockquote>فأول كلمة هي public هذه عبارة عن Access modifier و يمكن أن يحل محلها أي من الكلمات باللون البنفسجي، أو كما هو موجود في البداية [none] أي أنه من الممكن ألا تكون موجودة أبداً.
الكلمة الثانية هي void و هي تعني نوع القيمة التي ترجعها الوظيفة. فإذا كانت void فهذا يعني أن الوظيفة لا تعيد قيمة، و إنما تقوم بعمل محدد فقط، أما إذا كانت غير ذلك، فإن هذا يعني أن الوظيفة تعيد قيمة محددة، و لابد من استخدام كلمة return داخل الوظيفة في هذه الحالة. و من الممكن أن يكون نوع القيمة التي ترجعها الوظيفة أي واحدة من الكلمات باللون الأخضر. و نلاحظ أنها قد تكون أيضاً عبارة عن فئة من الفئات.
نصل بعدها لكلمة methodName و هي هنا الاسم الذي نعطيه للوظيفة، و يفضّل أن يكون فعلاً، يبدأ بحرف صغير.
بعد ذلك نجد أننا فتحنا قوساً دائرياً، و في داخله وضعنا سلسلة المتغيرات المدخلة للوظيفة (parameters list). و التي يتم تحديد نوعها، و اعطائها اسماً لاستخدامه داخل الوظيفة، و يفصل بينها باستخدام الفاصلة. و من الممكن أن لا تكون هناك أي متغيرات مدخلة للوظيفة، و يكون القوس فارغاً.

نقطة توقف
المتغيرات الموجودة في سلسلة المتغيرات المدخلة (parameters list) تكون صالحة للاستخدام داخل الوظيفة فقط، و لا يمكن استخدامها خارج الوظيفة أبداً

Method Overloading
يمكن في الجافا كتابة وظيفة بنفس الاسم مرتين (!!!!) نعم تستطيع ذلك. ولكن يجب أن يكون توقيع الوظيفة مختلفاً في كل مرة. أي أن نوع الإرجاع، أو قائمة المتغيرات المدخلة تكون مختلفة إما في النوع أو في العدد. و هذا يسمّى في الجافا Method Overloading. لنأخذ مثالاً على ذلك.
لنفرض أننا نريد كتابة وظيفة تقوم بجمع رقمين، وإعادة الناتج. و لكن الأرقام موجودة بأنواع عدة. منها الـ int ومنها float و منها double. و كلها مختلفة عن بعضها البعض. يمكننا في هذه الحالة كتابة عدة وظائف كلها بنفس الإسم، و لكن نوعية المتغيرات في سلسلة المتغيرات المدخلة تختلف في كل مرة، و معها يختلف نوع القيمة المرجعة.
سنكتب وظائف الجمع في فئة اسمها AddTwo هكذا:

<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L19_AddTwo</blockquote>
نلاحظ أننا كتبنا فئتين بنفس الاسم، و لكن بنوع المدخلات مختلف، و نوع إرجاع مختلف، فمرة تاخذ متغيرين من نوع int و تعيد جمعهما في صورة int، و مرة تأخذ متغيرين من نوع float و تعيد ناتج جمعهما في صورة float أيضاً.
الآن سنكتب فئة رئيسية، نقوم من خلالها إستخراج عضو من فئة AddTwo و نستخدم الوظيفتين sum مرة لجمع متغيرين من نوع int و مرة متغيرين من نوع float، هكذا:

<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L19_AddMain</blockquote>
لاحظ معي لقد استخدمنا نفس الاسم في كل مرة للوظيفة في السطرين 10 و 11. و هذا يسهّل استخدام الوظيفة كثيراً.
و أبسط مثال على method overloading هي وظيفة الطباعة التي استخدمناها منذ اليوم الأول. فنحن نستخدمها أحياناً لطباعة نصوص، و أحياناً لطباعة أرقام. و أحياناً لطباعة أرقام كسرية. و هذا يدل على أنه تم تعريف الوظيفة بأكثر من تعريف في داخل الفئة، و كل تعريف يختص بطباعة نوع من أنواع المتغيرات. و نحن لم نشغل بالنا كثيراً، فنحن نكتب نفس اسم الوظيفة في كل مرة، و لا ندري أنه يتم استدعاء وظائف مختلفة حسب نوع المدخلات.

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

الجافا متجدد L19_voidالجافا متجدد L19_return
كما يمكننا تقسيم الوظائف حسب وضعية الوظيفة في الفئة إلى نوعين، وظائف خاصة بالفئة، ووظائف خاصة بالعضو. و يتم في النوع الأول كتابة كلمة (static) في توقيع الوظيفة (method signature). و هكذا نكون قد جعلنا هذه الوظيفة هي خاصة بالفئة بشكل عام و ليست خاصة لعضو من الأعضاء. و بإمكان أي عضو استخدامها من الفئة مباشرة دون الحاجة لانشاء عضو من الفئة. و كمثال على ذلك وظيفة random في فئة Math.
فنحن نستطيع استخدامها بالإشارة لاسم الفئة مباشرة دون الحاجة لإنشاء عضو في الفئة، و استخدامها عبره.تماماً كما في المثال السابق، يمكننا أن نجعل وظائف الجمع static و نستخدمها مباشرة دون الحاجة لإنشاء عضو من فئة AddTwo، هكذا:

<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L19_staticAddTwo</blockquote>
نلاحظ أننا عرفنا الفئات لتكون static في السطر الثالث و الثامن، و هكذا نكون قد جعلناها خاصة بالفئة بشكل عام لا بعضو من الأعضاء. و الآن فقط نستطيع أن نستخجمها بهذا الشكل:

<blockquote style="margin: 1em; padding: 0px;">الجافا متجدد L19_staticAddmain</blockquote>
نلاحظ أننا في السطرين الثامن و التاسع استخدمنا وظيفة sum مسبوقة باسم الفئة AddTwo مباشرة، دون الحاجة لاستخراج عضو من الفئة AddTwo، لأنه تم تعريف الوظيفة على أنها static.
سيتم التفصيل عن الـ access modifiers في الدرس القادم إن شاء الله.
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:21 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
try and catch

الجافا متجدد Spaceالمقدّمة
في رأيي المتواضع ان أفضل وسيلة لفهم أوامر الـ try والـ catch هي أن نحاول قبلاً أن نستوعب الـ Exceptions بشكل تام.
إعلان حالة الطوارئ (throws) هي الوسيلة التي تستخدمها الآلة التخيلية في الجافا للإعلان عن وجود مشكلة أو خطأ في تشغيل البرنامج
فمثلاً حين تحدث مشكلة ما لا تستطيع الآلة التخيلية التعامل معها لذا توقف عمل البرنامج تماماً (بشكل غير لائق بالنسبة للمبرمج طبعاً) وتعلن المشكلة التي واجهتها بأن تقوم بعملية throw (بالعربي قذف أو إلقاء) لهذه المشكلة.
في الحقيقة الآلة التخيلية تقوم بالإعلان عن نوعين من الأخطاء أو المشاكل، Errors وهي الأخطاء التي لا حيلة للمبرمج في التعامل معها (مثلاً أن ينقطع التيار الكهربائي) والنوع الثاني هو الـ Exceptions وهي الأخطاء التي يمكن أن يتوقعها المبرمج ولديه الوسيلة للتعامل معها.
إذاً لننسَ الـ Errors ونحاول التركيز على الـ Exceptions.
حتى نفهم خطورة الexceptions وفائدتها في الوقت ذاته.. دعوني أستخدم مثالي المفضل.. الكرة
لنتخيل أن الآلة التخيلية حين تواجه مشكلة تضعها في كرة زجاجية وتقذف الكرة في الهواء..
ماذا سيحدث؟.. سترتفع الكرة في الهواء.. ثم سترتد إلى الأرض يفعل الجاذبية.. حتى.. هممم حتى ترتطم بالأرض وتتفتت إلى قطع صغيرة وهذا يعني أن البرنامج سيتوقف تماماً عن العمل!
ما الحل في رأيكم؟ أليس لطيفاً لو كان لدينا في البرنامج وسيلة لالتقاط الكرة بالسلامة قبل أن تتكسر على الأرض؟

المشكلة:
لنأخذ هذا المثال البسيط.
الجافا متجدد L20_tryexample
في السطر الأول أنشأت متغير من نوع نصي ووضعت فيه القيمة x
في السطر الثاني أنشأت متغير من نوع رقم صحيح وقرأت القيمة الرقمية من المتغير النصي. طبعاً في الحالات العادية من المفترض أن تكون القيمة الموجودة في النص رقم.. مثلاً "123" ولكن في حالتنا كانت حرف وليس رقماً.. لذا عملية القراءة ستسبب حدوث exception كما يلي:
الجافا متجدد L20_tryexampleRun
ما حدث في هذه الحالة نسميه Exception. وما ترونه في الصورة الأخيرة هي وسيلة الآلة التخيلية لإخبارنا أنها واجهت مشكلة، ولا تعرف كيف يمكن أن تحلها. وفي الحقيقة في الصورة ستجدون اسم الـ Exception وهو: NumberFormatException.
وهذا هو في الواقع اسم كرتنا الزجاجية التي سيلقيها البرنامج في حال فشل في قراءة رقم من النص

خطة العمل.. فكر معي
طبعاً في مثالنا البسيط، تعمّدتُ وضع قيمة نصية في المتغير النصي.. وهذا يعني أن هناك دائماً مجال لأن يقوم شخص ما بإدخال قيم خاطئة، وهذا يعني أننا يجب أن نكون حذرين نوعاً في التعامل مع أنواع المدخلات.
كيف نحل ذلك؟ ما رأيكم في هذا السيناريو:
سنحاول قراءة قيمة رقمية صحيحة عن طريقة Integer.parseInt من المتغير النصي str..
إذا فشلنا وألقت الآلة التخيلية بالاستثناء NumberFormatException سنكون مستعدين وسنلتقطه، ثم نتعامل معه.

الجافا متجدد Spacetry & catch
try & catch نستخدمهم في حالة كانت لدينا وظيفة method من المحتمل أن تقذف exception.
هكذا:
الجافا متجدد L20_tryexampleSol
الآن القسم الأول (try) نحاول أن نجرب فيه شيئاً ما.. في حالتنا نحاول قراءة رقم من متغير نصي.. لنفترض أن المحاولة فشلت.. وألقى البرنامج exception في هذه الحالة سيتحول الموضوع إلى ال catch..
ونلاحظ أننا بين قوسين بعد كلمة catch مباشرة حددنا نوع الاكسبشن الذي سنلتقطه.. إذا وضعنا Exception فقط.. فإنه سيلتقط أي نوع من الاستثناءات بدون تحديدها (فجميع الاستثناءات تكون فئة مستمدة من فئة Excetption).
في داخل الكاتش نستطيع أن نحدد ماذا سنفعل في حالة حدوث الخطأ أو المشكلة..
ويمكننا أن يكون في جزء الـ try أكثر من statement تسبب كل منها exception مختلف، وهكذا يمكن أن يكون لدينا أكثر من catch بحيث يتكفّل كل منها بـ exception مختلف، ومن الممكن أيضاً استخدام جزء أخير finally بحيث يلتقط أي exception آخر، هكذا:
الجافا متجدد L20_tryCatchFinally

سيكون جميلاً..
لو أنني غطيتُ الـ throw و الـ throws أيضاً.. سأحاول تغطيتهما في وقت لاحق.. ولكن أتصور أنه يمكنك أن تفتح الباب لفهمهما الآن..

أفكار
يمكنك دائماً أن تقوم بتعريف الاستثناءات الخاصة بك بحيث تكون extends Exception لتتعامل مع الاستثناءات الخاصة ببرامجك (فإذا كان لديك مثلاً كلاس للخط المرسوم على الشاشة، فأتصور سيكون مفيداً لو وضعت في اعتبارك أنه يمكن أن يحاول المستخدم رسم الخط خارج حدود الرسم وعملت الاستثناء المناسب)
بالمناسبة Exception كلاس موجود في java.lang ولا تحتاج لعمل أي import

وهيك بكون خلصت شرح لدورس المتعلقة بل هي اللغة انشا الله بل الدروس القادمة رح بلش باعطاء الامثلة
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:24 pm


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

نحنا بل الدرس السابق خلصنا شرح برنامج الجافا و كيفية عملوا انشا الله تكونوا استفدتوا منها الجافا متجدد Life%20%2865%29

وهلئ لح بلش اعطيكم امتلة تطبيقية على كيفية عمل البرنامج انشا الله تستفيدوا منها الجافا متجدد Life%20%2865%29الجافا متجدد Life%20%2865%29


المثال الاول:
الأقراص والأعمدة (Recursion)

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

الحل:
لنفترض أنه لدينا الشكل التالي:
الجافا متجدد Ex01_hanoi01
عدد من الأقراص في العمود الأول على اليسار، ونرغب بنقلها للعمود الثالث مثلاً. في هذه الحالة، إذا تمكّنا بطريقة ما من نقل جميع الأقراص التي تعلو القرص الأصفر إلى العمود الثاني، فإننا سنستطيع بالتالي أن ننقل القرص الأصفر الكبير إلى الثالث هكذا:
الجافا متجدد Ex01_hanoi02
الآن انتهينا من القرص الكبير الأصفر، ونريد بالتالي نقل القرص الوردي أعلاه مباشرة، فإننا إذا تمكّنا من نقل جميع الأقراص التي تعلو الوردي إلى العمود الأول، فإننا سنستطيع أن نضع الوردي على الأصفر هكذا:
الجافا متجدد Ex01_hanoi03
إننا إذاً في كل مرحلة من مراحل الحل نقوم باعتبار أحد الأعمدة هو الهدف، ونقوم باعتبار أحد العمودين الآخرين مؤقتاً، ننقل فيه الأقراص التي تعلو أكبر قرص، حتى نتمكن من نقل القرص الكبير إلى العمود المطلوب.
نجد هنا أننا نكرر العملية نفسها، فإننا نبدأ بالعكس، نفترض أننا قمنا فعلياً بنقل الأقراص التي تعلو الكبير، ونبدأ نقترب من القرص الأصغر حتى ننجح في النهاية من نقل جميع الأقراص إلى العمود المطلوب.
الجافا متجدد Spaceالكود
الجافا متجدد Ex01_code
الجافا متجدد Spaceكيف يعمل البرنامج؟
يبدأ البرنامج في السطر العاشر بقراءة عدد الأقراص من المستخدم، ولنفترض أننا قمنا بإدخال القيمة 3 هكذا:
الجافا متجدد Ex01_start
ثم يقوم بتشغيل الوظيفة doHanoi بتمرير أربعة قيم لها عدد الأقراص، والقيمة واحد والقيمة ثلاثة والقيمة اثنان.
لنلقِ نظرة على كود الدالة نفسها، وكيف تنتقل القيم إليها:
الجافا متجدد Ex01_parameters
أي أنه عند تشغيل الوظيفة method في المرة الأولى، تكون القيم الممررة هي:
المرحلة البيضاء:
الجافا متجدد Ex01_var01
نلاحظ عند الدخول إلى الوظيفة أن أول سطر هو أداة (if) الشرطية، حيث يتأكّد من أن عدد الأقرص أكبر من أو يساوي الواحد، وفي حالتنا عدد الأقراص كان 3، سيقوم بالدخول وتنفيذ السطر 18 وهو نداء للوظيفة نفسها وهو ما يعرف بالـ Recursion في البرمجة، ولكن بقيم جديدة.
من المهم جداً هنا أن نلاحظ أننا لم نكمل تشغيل النداء الأول للوظيفة، بل توقفنا عند السطر الثامن عشر. ثم قمنا بنداء الدالة مرة أخرى بقيم جديدة. لننظر إلى القيم الممرة الآن:
الجافا متجدد Ex01_parameters2
وتكونالقيم الممررة في المرحلة الزرقاءكالتالي:

الجافا متجدد Ex01_var02
عند دخول الوظيفة سنجد الأداة الشرطية مرة أخرى، والقيمة لازالت تحقق الشرط (عدد الأقراص أكبر من أو يساوي الواحد). عند الدخول، سنجد نداءً جديداً لنفس الدالة، ونلاحظ أننا توقفنا عند السطر الثامن عشر مرة أخرى، ونادينا الوظيفة من جديد بالقيم الجديدة الزرقاء هكذا:
الجافا متجدد Ex01_parameters3
وتكون القيم الممررة في المرحلة الوردية كالتالي:
الجافا متجدد Ex01_var03
عند دخول الوظيفة سنجد الأداة الشرطية مرة أخرى، والقيمة لازالت تحقق الشرط (عدد الأقراص أكبر من أو يساوي الواحد). عند الدخول، سنجد نداءً جديداً لنفس الدالة، ونلاحظ أننا توقفنا عند السطر الثامن عشر مرة أخرى، ونادينا الوظيفة من جديد بالقيم الجديدة الوردية هكذا:
الجافا متجدد Ex01_parameters4
الآن القيم الممرة في المرحلة الصفراء ستكون كالتالي:
الجافا متجدد Ex01_var04
الأداة الشرطية في المرحلة الصفراء لا تتحقق، لأن عدد الأقراص = صفراً، والصفر ليست أكبر من ولا تساوي الواحد، لذا سيعود إلى السطر التاسع عشر من المرحلة الوردية، وسيقوم بطباعة القيم الموجودة في (start) و(end) في المرحلة الوردية كما يلي:
بالقيم في المرحلة الوردية: الجافا متجدد Ex01_var03
وهذا يعني أننا نقلنا القرص الموجود في أعلى العمود الأول إلى العمود الثالث، هكذا:
الجافا متجدد Ex01_two
ثم سيتابع للسطر العشرون في المرحلة الوردية، سنجد أننا نستدعي نفس الوظيفة مرة أخرى، ولكن بقيم جديدة هكذا:
الجافا متجدد Ex01_parameters5

وستكون القيم في هذه المرحلة الخضراء هكذا:
الجافا متجدد Ex01_var05
ولكن كما ترون فإن الشرط لن يتحقق في هذه الحالة لأن عدد الأقراص = صفر، بالتالي ستكون المرحلة الوردية قد انتهت ولا أسطر جديدة، وهكذا سيعود إلى السطر التاسع عشر من المرحلة الزرقاء، وسيكون طباعة القيم في المرحلة الزرقاء، ودعوني أذكركم بها:
الجافا متجدد Ex01_var02 وهكذا سيقوم بطباعة التالي:
الجافا متجدد Ex01_out02
وهذا يعني أننا نقلنا القرص الموجود في أعلى العمود الأول إلى العمود الثاني هكذا:
الجافا متجدد Ex01_three

الآن سيقوم بالانتقال للسطر العشرون من المرحلة الزرقاء، وسيكون كما يلي:
الجافا متجدد Ex01_parameters6
عدد الأقراص في هذه الحالة يحقق الشرط، وبالتالي سيقوم بالدخول إلى محتوى أداة الشرط (إذا) (وهذه هي المرحلة البنفسجية) وهنا سيحاول أن ينادي الوظيفة بعدد الأقراص 1-1=0 ولا حاجة لإعادة ما ذكرناه في السابق من أن هذا لن يحقق الشرط، وبالتالي سيقوم بتنفيذ السطر التالي وهو علامة الطباعة على القيم التي ستكون في هذه المرحلة البنفسجية كالتالي:
الجافا متجدد Ex01_var06

سيقوم بطباعتها كالتالي:
الجافا متجدد Ex01_out03

وهذا يعني أننا قمنا بنقل القرص الموجود في أعلى العمود الثالث إلى العمود الثاني، هكذا:
الجافا متجدد Ex01_four

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

وهكذا سيتم طباعة التالي:
الجافا متجدد Ex01_out04

وهذا يعني أننا نقلنا القرص من أعلى العمود الأول إلى العمود الثالث:
الجافا متجدد Ex01_five

ثم ننتقل إلى السطر العشرون في المرحلة البيضاء وهو يقوم بنداء نفس الوظيفة بالقيم التالية وهكذا نكون قد انتقلنا إلى مرحلة جديدة، وستكون مرحلة اللون البرتقالي:
الجافا متجدد Ex01_parameters7

وهكذا ستكون القيم الجديدة للمرحلة البرتقالية كالتالي:
الجافا متجدد Ex01_var07

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

الجافا متجدد Ex01_parameters8
ونكون قد انتقلنا إلى المرحلة الرمادية، وتكون المتغيرات في هذه المرحلة كما يلي:
الجافا متجدد Ex01_var08
في السطر الثامن عشر من المرحلة الرمادية لن يتم تشغيل الوظيفة لأن القيمة 1-1=0 وبالتالي لن يتم تحقق الشرط، وهكذا سنعود للسطر التاسع عشر من المرحلة الرمادية، والتي سيتم فيها طباعة القيم في المرحلة الرمادية هكذا:
الجافا متجدد Ex01_out05

وهذا يعني أنه سيتم نقل قرص من أعلى العمود الثاني إلى العمود الأول هكذا:
الجافا متجدد Ex01_six

الآن سنتابع إلى السطر العشرون من المرحلة الرمادية، وهو أيضاً لن يفعل شيئاً لأن الشرط لن يتحقق، وهكذا سنعود إلى السطر التاسع عشر من المرحلة البرتقالية وسنطبع القيم الموجودة في المرحلة البرتقالية كما يلي:
الجافا متجدد Ex01_var07

وتكون الطباعة هكذا:
الجافا متجدد Ex01_out06

وهذا يعني أننا قمنا بنقل قرص من العمود الثاني إلى العمود الثالث هكذا:

الآن وصلنا للسطر الأخير من المرحلة البرتقالية، التي بنهايتها تنتهي المرحلة البيضاء والبرنامج، وتشغيل هذه المرحلة سأتركه لكم
تذكر أن عدد الأقراص يمكن أن يكون أكثر من ثلاثة، حاول أن تقوم بتتبع البرنامج في حالة عدد الأقراص كان اثنين أو أربعة أو أكثر.
قد يساعدك على فهم الـ Recursion الشكل التالي:
الجافا متجدد Ex01_recursion
إذ أننا حين نستدعي نفس الوظيفة من داخلها، نكون كأننا نشغلها من البداية لقيم جديدة ولابد أن تنتهي من التشغيل الثاني حتى تعود إلى نقطة ما بعد استدعاء الدالة نفسها
الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:26 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
مقارنة بين برمجيات الجافا والأبليت

الجافا: لغة برمجة أنتجتها شركة صن ميكروسيستمز، تعتمد على البرمجة بالكائنات الشيئية و يمكن كتابة نوعين من البرامج بها:

البرمجيات المستقلّة: (Stand-alone applications)

  • برامج تكتب بلغة الجافا و تعمل على أي جهاز توجد عليه آلة تخيلية.
  • تعمل بشكل منفصل عن الانترنت
  • تعمل بنفسها مباشرة على الآلة التخيلية (Java Virtual Machine)
  • لها الحق في أن تكتب في و تمسح و تضيف ملفات جديدة على الخادم (Server) الموجودة عليه.
  • تستخدم بشكل رئيسي في تصميم نظم كبيرة.
الجافا متجدد Spaceالأبليت: (Java Applets)

  • برامج صغيرة تكتب بلغة الجافا
  • توجد على خادم، و لكن يتم تحميلها ضمن ملف هتمل (html)
  • تحتاج إلى متصفّح لتعمل، و يجب أن يدعم المتصفح الجافا.
  • ليس لها الحق في الاتصال مع أي خادم الا الخادم الذي جاءت منه، و مع المتصفّح الذي تعمل عليه. (وبالتالي فهي أأمن من غيرها من plug-ins الذين تدعمهم المتصفحات)
  • تستخدم بشكل رئيسي لإضافة رونق شكلي على صفحات الويب، أو للقيام بعمليات بسيطة، و أحياناً كوسيط بين المستخدم والخادم.
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:28 pm

رد: الجافا (متجدد)
<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">



</blockquote>
رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
مقارنة بين برمجيات الجافا والأبليت

الجافا: لغة برمجة أنتجتها شركة صن ميكروسيستمز، تعتمد على البرمجة بالكائنات الشيئية و يمكن كتابة نوعين من البرامج بها:

البرمجيات المستقلّة: (Stand-alone applications)

  • برامج تكتب بلغة الجافا و تعمل على أي جهاز توجد عليه آلة تخيلية.
  • تعمل بشكل منفصل عن الانترنت
  • تعمل بنفسها مباشرة على الآلة التخيلية (Java Virtual Machine)
  • لها الحق في أن تكتب في و تمسح و تضيف ملفات جديدة على الخادم (Server) الموجودة عليه.
  • تستخدم بشكل رئيسي في تصميم نظم كبيرة.
الجافا متجدد Spaceالأبليت: (Java Applets)

  • برامج صغيرة تكتب بلغة الجافا
  • توجد على خادم، و لكن يتم تحميلها ضمن ملف هتمل (html)
  • تحتاج إلى متصفّح لتعمل، و يجب أن يدعم المتصفح الجافا.
  • ليس لها الحق في الاتصال مع أي خادم الا الخادم الذي جاءت منه، و مع المتصفّح الذي تعمل عليه. (وبالتالي فهي أأمن من غيرها من plug-ins الذين تدعمهم المتصفحات)
  • تستخدم بشكل رئيسي لإضافة رونق شكلي على صفحات الويب، أو للقيام بعمليات بسيطة، و أحياناً كوسيط بين المستخدم والخادم.
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:30 pm

رد: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
الجافا متجدد Spaceمقارنة بين الجافا والجافا سيكربت (1)

الجافا الجافاسيكريبتانتجتها شركة صن مايكروسيستمزأنتجتها شركة نتسكيبObject Oriented Language
يعني تدعم مفهوم الكائنات
و الوراثة
Object ****d Language
تدعم مفهوم الكائنات و لا تدعم
مفهوم الوراثة
تستطيع الجافا أن تكتب
على الملفات في السيرفر
كما تستطيع استخدام خدمات
السيرفر الأخرى
لاتستطيع الجافا سيكريبت أن تكتب
على الملفات في السيرفر
ولا تستطيع استخدام خدمات
السيرفر الأخرى
برامج الجافا تخزّن كملف منفصل
و يوضع لها أمر لقراءتها مثل
أمر الصورة في ال HTML
أوامر الجافا سيكريبت تكون
مضمّنة في الهتمل HTML
لا يمكن الحصول على البرنامج
لأنه يكون في صورة Class
الا اذا استخدم برنامج خاص هاها
يمكن نقل البرنامج حتى و لو
كان في ملف آخر و لا يمكن حفظ
الحقوق بأي صورة
أول أربع حروف جافاأول أربع حروف جافاتكتب بها برامج منفصلة
تعمل على الكومبيوتر بانفصال
عن المتصفّح
لابد من وجود متصفّح لتعمل
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
الـــ♥ـــــوافـــ♥ــــي
مدير الموقع
مدير الموقع
الـــ♥ـــــوافـــ♥ــــي


عدد المساهمات : 1861
نقاط : 4239
السٌّمعَة : 1
تاريخ التسجيل : 02/09/2010
الموقع : المملكة العربية السعودية

الجافا متجدد Empty
مُساهمةموضوع: رد: الجافا متجدد   الجافا متجدد I_icon_minitimeالجمعة سبتمبر 17, 2010 12:32 pm

د: الجافا (متجدد)

<blockquote class="postcontent restore " style="margin: 0px; padding: 0px; word-wrap: break-word;">
الجافا الجافاسيكريبت
انتجتها شركة صن مايكروسيستمز أنتجتها شركة نتسكيبObject Oriented Language
يعني تدعم مفهوم الكائنات
و الوراثة
Object ****d Language
تدعم مفهوم الكائنات و لا تدعم
مفهوم الوراثة
تستطيع الجافا أن تكتب
على الملفات في السيرفر
كما تستطيع استخدام خدمات
السيرفر الأخرى
لاتستطيع الجافا سيكريبت أن تكتب
على الملفات في السيرفر
ولا تستطيع استخدام خدمات
السيرفر الأخرى
برامج الجافا تخزّن كملف منفصل
و يوضع لها أمر لقراءتها مثل
أمر الصورة في ال HTML
أوامر الجافا سيكريبت تكون
مضمّنة في الهتمل HTML
لا يمكن الحصول على البرنامج
لأنه يكون في صورة Class
الا اذا استخدم برنامج خاص هاها
يمكن نقل البرنامج حتى و لو
كان في ملف آخر و لا يمكن حفظ
الحقوق بأي صورة
أول أربع حروف جافاأول أربع حروف جافاتكتب بها برامج منفصلة
تعمل على الكومبيوتر بانفصال
عن المتصفّح
لابد من وجود متصفّح لتعمل
</blockquote>

الرجوع الى أعلى الصفحة اذهب الى الأسفل
https://al-wafi.forum.st
 
الجافا متجدد
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتدى اول همسة :: لغات البرمجة-
انتقل الى: