لغة الـ Java
(12) تعريف فئة

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

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

لقد اخترت لكم فئة تعتبر المثال المفضّل عند معظم المصممين لوضوحها و سهولة استخدامها. لنضع التصميم المبدئي لهذه الفئة مع بعض :-)

 

Date

الصفات:
رقم يمثل اليوم
رقم يمثل الشهر
رقم يمثل السنة



لنقم بكتابة ذلك بالجافا. لنتوقف و نفكّر قليلاً. ما الذي نقوم بتعريفه؟ اننا نقوم بتعريف فئة اسمها Date، اذاً سنكتب التالي:



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

لذا سنضع ثلاثة متغيرات رقمية (في الوقت الحاضر، و قد نغيرها فيما بعد) لكل صفة من الصفات، هكذا:



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

 

Date

الصفات:
رقم يمثل اليوم
رقم يمثل الشهر
رقم يمثل السنة
 
الامكانيات:
امكانية الاستعلام عن التاريخ
امكانية وضع التاريخ
 



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



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

 

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.

ما رأيكم لو قمنا بتعريف الوظيفة الثانية معاً أيضاً و هي تحديد التاريخ.

سنكتبها في الجافا بهذا الشكل:



في الصورة السابقة نلاحظ اننا في تعريفنا لوظيفة تحديد التاريخ، قد قمنا بتعريفها بطريقة تختلف قليلاً عن وظيفة الاستعلام. ولكن المبدأ هو نفسه في الحالتين.

لنتابع معاً، السطر التالي:

 

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.

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

تحياتي
JavaGirl

 

 

 

 


Copyright © www.kettaneh.net