لتعريف Class, يجب عليك كتابة التالي:
1- Access Modifier (عادةً نكتُب public).
2- كلمة class المحجوزة.
3- إسم الclass (يجب أن يخضع لقوانين كتابة إسم المُتغير).
4- مجال (scope) الclass (يبدأ بقوس الفتح وينتهي بقوس الإغلاق).
تأمل المثال التالي والذي يحتوي على مُتغيرين مُعلن عنهُما (Declared) داخل المجال الخاص بالClass (هذه المُتغيرات المُعلن عنها داخل مجال الClass وخارج الإقترانات (Functions) الخاصة به يُطلق عليها Instance Variables):
المثال الأول:
رمز ال// يعني أن كُل شيء سيتم كتابتُه بعد ذلك وحتى نهاية السطر عبارة عن كلام عادي غير برمجي.
من الجدير بالذكر أنه من الأفضل الإعلان عن الInstance Variables باستخدام Access Modifiers مما يُحدد كيف سيتم التعامُل مع هذه المُتغيرات خارج مجال الClass.
مبدأياً, سنتحدث عن الpublic والprivate لأنهُما الأكثر شيوعاً بين الAccess Modifiers:
public: يُمكن الوصول إليه من أي مكان.
private: يُمكن الوصول إليه فقط داخل مجال الClass.
كما هو مُتعارف عليه, يبدأ إسم الClass بحرف كبير, بينما يبدأ إسم المُتغير بحرف صغير.
يتفق كُل من إسم الClass وإسم المُتغير على أن أي كلمة أُخرى تتبع الكلمة الأولى في الإسم يجب أن تبدأ بحرف كبير.
من الأفضل الإلتزام بذلك للمُساعدة في سهولة تتبُع البرنامج.
لفهم كيفية فعل ذلك, تأمل المثال التالي:
لدينا جُملتين برمجيتين مُنفصلتين الأولى تُعرف Class والثانية تُعلن عن مُتغير ...
1- {} public class MyName
2- ;int studentAverage
تأمل المثال التالي الذي يُضيف Access Modifiers للInstance Variables المُعلن عنها في المثال الأول:
المثال الثاني:
تُكتب الجُمل البرمجية التي سيتم تنفيذُها عادةً داخل الإقتران main.
تذكر أن الهدف من كتابة الClass هو إعادة الإستخدام, ولكن الClass لا يُمكن أن يكون مُفيد إلا إذا تم الإعلان عن Object منه, يجب أن نقوم بالإعلان عن الObjects لنتمكن من مُناداة الإقترانات الموجودة داخل الClass ولكي نكون قادرين على التعامُل مع الInstance Variables الموجودين داخل الClass.
من الان فصاعداً, سنُطلق على الإقترانات المُعرفة داخل الClass إسم Methods بدلاً من Functions. لذلك, الMethod هو إقتران مُعرف داخل الClass.
كما تحدثنا سابقاً, الجافا عبارة عن لُغة برمجة بالكيانات المُوجهة. لذا, يجب أن يكون لديك على الأقل Class واحد في كُل برنامج جافا.
يجب أن تُكتب الmain داخل Class أيضاً. الان, تأمل المثال التالي والذي يُعدل المثال السابق ليُضيف عليه الmain. داخل الmain, سنقوم بالإعلان عن 3 Objects من الMyClass وسنُعدل ونطبع قيم الInstance Variables.
المثال الثالث:
كما ترى في المثال السابق, فإن الmain عبارة عن S
tatic
Method.
سنتحدث لاحقاً عن الStatic Methods والStatic Variables.
تحتوي قائمة المُعاملات (Parameter List) الخاصة بالmain على "String [] args" وهي مُرتبطة بالمصفوفات (Arrays) والسلاسل (Strings), ولكننا لسنا مُهتمين بالهدف من كتابتها حالياً. سنستخدمها فقط كما هي في كُل مرة نكتُب فيها الmain.
ناتج تنفيذ البرنامج السابق هو:
السبب في ظهور الفواصل العشرية في الناتج راجع إلى تعريف المُتغير y من نوع double, ومن المعروف أن الأرقام من نوع double تحتوي على عدد صحيح وفاصلة عشرية لإظهار الكسور. في المثال السابق لم نكتُب كسوراً لذلك ظهرت أصفار بعد الفواصل العشرية في كُل من ال6.0 وال-5.0 وال0.0.
وكما يظهر في الجُمل البرمجية المكتوبة في الmain, فإن الإعلان عن الObject يتم كالتالي:
1- إسم الكلاس (MyName في المثال السابق).
2- إسم الObject (يجب أن يخضع لقوانين كتابة إسم المُتغير).
3- كلمة new المحجوزة (لعمل مرجع (Reference) جديد في الذاكرة بإسم الObject يقوم بالإشارة إلى MyName).
4- إسم الClass مرة أُخرى (لعمل الReference).
5- Parameter list (فارغة في المثال السابق (سنتحدث عن فائدة إستخدام الParameter List عندما نتحدث عن الConstructors)).
كما تحدثنا سابقاً, المثال السابق يُوضح أن كُل Object لديه نُسخة خاصة به من الInstance Variables. لذلك, فإن المُتغير x في الC1 يمتلك قيمة مُختلفة عن قيمة المُتغير x في الC2 مثلاً.
لاحظ أنه ينبغي عليك إستخدام النُقطة (Dot Operator) للوصول إلى الMethods والInstance Variables داخل الObject من خلال إسم الObject, وذلك لأن كُل Object عبارة عن نُسخة مُنفصلة من الClass.
لم نقُم بتغيير قيمة أي من المُتغيرات الprivate خارج نطاق الClass, ولكن المُتغير y المُعلن عنهُ بprivate والmain موجودان داخل الClass نفسُه. لذلك فإنه من المُمكن تغيير قيمة هذا المُتغير مُباشرة من الmain.
نستطيع القول أن الmain عبارة عن method خاصة تُستخدم لتنفيذ البرنامج عادةً. لذلك, تُنفذ دون الحاجة إلى أي جُملة إستدعاء.
عندما تقوم بالإعلان عن مُتغير في الجافا دون تهيئة (Initialize) أي إعطاؤه قيمة, فإن المُحول البرمجي (Compiler) الخاص بالجافا سيُعطيه قيمة ال0 تلقائياً.
تُقسم الClasses بالجافا إلى مجموعتين, المُعرفة مُسبقاً (موجودة أصلاً), والمُعرفة عن طريق المُبرمج.
كما تُظهر جُمل الطباعة في المثال السابق فإن الpint عبارة عن Method خاصة بالClass المُسمى out, والذي هو أيضاً جُزء من الClass المُسمى System.
الصيغة العامة لجُملة الطباعة في الجافا:
تحتوي الParameter List الخاصة بالprint على ما نُريد طباعته على صندوق الناتج.
System.out.print ();
تحتوي الParameter List الخاصة بالprint على ما نُريد طباعته على صندوق الناتج.
يتبع ...
سامر المناصرة
ليست هناك تعليقات:
إرسال تعليق