CALM/arwiki huggingface dataset:
بلتا هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 139 نسمة بحسب إحصاء 2016.
بيت فزيه هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 322 نسمة بحسب إحصاء 2016.
برم بايين هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 637 نسمة بحسب إحصاء 2016.
تشيغاب هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 92 نسمة بحسب إحصاء 2016.
دشت عباس هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 144 نسمة .
امامزادة عباس هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 104 نسمة بحسب إحصاء 2016.
عين خوش هي مستوطنة تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 671 نسمة بحسب إحصاء 2016.
عين صوله هي مستوطنة تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 287 نسمة بحسب إحصاء 2016.
غتارة شهرك ثارالله هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 513 نسمة .
خيبر شهرك خيبر هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 332 نسمة بحسب إحصاء 2016.
محمد خان هي مستوطنة تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران.
شهرك بدر هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 91 نسمة بحسب إحصاء 2016.
شهرك استقلال هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 514 نسمة بحسب إحصاء 2016.
شهرك فجر هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 375 نسمة بحسب إحصاء 2016.
شهرك حمزة هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 599 نسمة بحسب إحصاء 2016.
شهرك مملح هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 547 نسمة بحسب إحصاء 2016.
شهرك مطارفه هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 86 نسمة بحسب إحصاء 2016.
شهرك نصر هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 393 نسمة بحسب إحصاء 2016.
شهرك سادات هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 237 نسمة بحسب إحصاء 2016.
شهرك سبتون هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 506 نسمة بحسب إحصاء 2016.
شهرك وليعصر هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 942 نسمة بحسب إحصاء 2016.
شهرك ذوالفقاري هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 931 نسمة بحسب إحصاء 2016.
شيخ نوروز شهرك فتح هي قرية تقع في قسم دشت عباس الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 366 نسمة بحسب إحصاء 2016.
قسم نهرعنبر الريفي هي منطقة ريفية تقع في Musian District في إيران. يقدر عدد سكانها بـ 4,037 نسمة .
برة بيجه هي قرية تقع في قسم نهرعنبر الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 272 نسمة بحسب إحصاء 2016.
تشم فاضل هي قرية تقع في قسم نهرعنبر الريفي (مقاطعة دهلران) في إيران.
تششمة شيرين هي قرية تقع في قسم نهرعنبر الريفي (مقاطعة دهلران) في إيران.
دال بري هي قرية تقع في قسم نهرعنبر الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 0 نسمة بحسب إحصاء 2016.
غور هي مستوطنة تقع في قسم نهرعنبر الريفي (مقاطعة دهلران) في إيران.
جليزي بالا هي قرية تقع في قسم نهرعنبر الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 983 نسمة بحسب إحصاء 2016.
جليزي بايين هي قرية تقع في قسم نهرعنبر الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 198 نسمة .
مرزآباد هي قرية تقع في قسم نهرعنبر الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 0 نسمة بحسب إحصاء 2016.
نهرعنبر هي قرية تقع في قسم نهرعنبر الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 0 نسمة بحسب إحصاء 2016.
بتك هي قرية تقع في قسم نهرعنبر الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 537 نسمة بحسب إحصاء 2016.
بتك اعراب هي قرية تقع في قسم نهرعنبر الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 738 نسمة بحسب إحصاء 2016.
سادات دالبري هي قرية تقع في قسم نهرعنبر الريفي (مقاطعة دهلران) في إيران. يقدر عدد سكانها بـ 499 نسمة بحسب إحصاء 2016.
هو حجر الزاوية في لغة الجافا حيث تعتبر الفئات الوحدات الأساسية في لغة البرمجة الكائنية نظرا لما تحتويه الفئات (Classes) من كائنات وطرق وبيانات.
تعريف الفئة.
الفئة هي القالب البرمجي للغة الجافا الذي يحدد شكل الكائنات لما تحتويه من بيانات ومعاملات والكائن ينتمي للفئة وليس العكس
وبالتالي للفئة عناصر منها المتغيرات والنهج (الدوال –الطرق)
إذا الفئة هي كالمستودع الذي يستطيع المبرمجون ان يجمعوا فيه البيانات والطرق (الدوال) تحت سقف واحد.
إنشاء الفئات.
يتم إنشاء الفئات بإستخدام الكلمة المفتاحية class وهي من الكلمات المحجوزة في الجافا ويكون الشكل العام للفئة كما يلي:
هذا إذا كان البرنامج يحتوي على عدة فئات مجتمعة في ملف واحد وبالتالي فإن الفئة الرئيسية التي تحتوي على الدالة Main تبدأ بمحدد الوصول Public class أي أن الفئة عامة، وتبدأ جميع الفئات الأخرى بالكلمة المحجوزة Class.
أما إذا كان البرنامج يحتوي على عدة فئات كلا في ملف منفصل فلابد لكل الفئات أن تبدأ بعبارة Public class ويجب أن تحتوي أي فئة على دالة واحدة ومتغير واحد على الأقل أو كلاهما وعند تصميم فئة يراعى نوع البيانات ومدى موافقتها معا داخل الفئة بمعنى لو كانت الفئة مثلا مصممة لتخزين أسماء موظفين وأرقام هواتفهم وعناوينهم لن يكون مناسب أن يوضع بنفس الفئة بيانات عن حالة الطقس وحالة البحر ومعدل سقوط الأمطار، ولذلك يجب أن مراعاة الناحية المنطقية عند تصميم الفئة من حيث علاقة البيانات المتعامل معها في نفس الفئة.
تعتبر الكائنات البرمجية (Objects) المفتاح لمفهوم البرمجة كائنة التوجه، وهي مشابهة للكائنات الحقيقية من حيث المبدأ: كلاهما يتجلى في حالة وسلوكات. الكائن يخزن حالته في حقول (fields)، (تسمى متغيرات في لغات برمجية أخرى) ويعرض تصرفاته من خلال طرق (methods) تسمى دوال (functions) في لغات برمجية أخرى. الطرق تعمل على الحالة الخاصة بالكائنات، وتشكل الآلية الأساسية للتواصل بين الكائنات. إخفاء الحالة واشتراط أن يكون كل تفاعل مع الكائن يمر عبر الطرق الخاصة به، يعرف ب تغليف البيانات (Data encapsulation)، وهو مبدأ أساسي في البرمجة الكائنية التوجه.
في مثال الدراجة:
عندما تحديد الحالة (السرعة الحالية، الإيقاع الحالي للدواسة، الدولاب الحالي) وتحديد الأطراف التي تستطيع تغيير هذه الحالة، فإن الكائن يبقى متحكما في الطريقة المتاحة لاستعماله من أي عنصر خارجي. مثلا، إذا كانت الدراجة تتوفر فقط على 6 دواليب، فإن الطريقة التي تقوم بتغيير الدولاب يمكنها أن ترفض أي قيمة أصغر من 1 وأكبر من 6.
العلاقة بين الفئات.
من أشهر العلاقات بين الفئات Relational between Classes هي:
-الاعتماد "يستخدم-واحد" (uses–a).
-التجميع "يمتلك –واحد" ( has–a).
-الميراث "هو –واحد" (is–a).
الاعتماد (يستخدم –واحد ).
هي من أكثر العلاقات وضوحاً والأكثر عموماً. على سبيل المثال فئة الطلب تستخدم فئة الحساب بسبب أن كائنات الطلب تحتاج كائنات الحساب للتحقق من الوضع الائتماني. لكن فئة السلعة لاتعتمد على فئة الحساب بسبب ان كائنات السلعة لاتحتاج أبدا للقلق حول حسابات العملاء. وهكذا، تعني هي فئة تعتمد على فئة أخرى إذاً هي تستخدم وسائلها أو تتعامل مع الأشياء من تلك الفئة.
في محاولة لتقليل الفئات التي تعمد على بعضها البعض وهذه النقطة هي إذا كانت فئة (أ) تجهل وجود فئة (ب) إذاً فئة (أ) هي غير مهتمة بأي تغير يحصل في فئة (ب) وهذا يعني (أي تغير يحصل في فئة(ب) لايسبب الخلل في فئة (أ)) في مصطلحات هندسة البرمجيات هناك حاجة للتقليل بين اقتران الفئات.
علاقة التجميع (يمتلك واحد ).
هي علاقة سهلة الفهم لأنها علاقة ملموسة. على سبيل المثال كائن الطلب يحتوي على كائنات السلعة. الاحتواء يعني أن الكائنات من الفئة (أ) تحتوي على كائنات من الفئة (ب).
الميراث (هو-واحد).
يعبر عن العلاقة بين فئة أكثر خصوصية وفئة أكثر عمومية. على سبيل المثال فئة الطلب المستعجل ترث من فئة الطلب، فئة الطلب المستعجل المتخصصة لها طرق خاصة للتعامل مع الأولويات وطريقة مختلفة لحساب رسوم الشحن، ولكن أساليب أخرى مثل إضافة السلع والفواتير هي موروثة من فئة الطلب. بشكل عام إذا كانت فئة (أ) امتداد لفئة (ب) إذاً الفئة (أ) ترث الأساليب من الفئة (ب) ولكن لها المزيد من الميزات.
العديد من المبرمجين يستخدمون ترميز لغة النمذجة الموحده (UML) لرسم مخططات الفئة التي تصف العلاقات بين الفئات. على سبيل المثال في الرسم البياني للفئات يتم رسم الفئات على شكل مستطيلات ورسم العلاقات على شكل أسهم مع مختلف أشكالها (الجدول السابق يوضح أهم الاشكال).
استخدام فئات معرفة مسبقا.
لايمكن القيام باي شيء في الجافا من دون استخدام الفئات، والمبرمج رغم تعامله مع العديد من الفئات أثناء عمله فهو غير ملزم بمعرفة جميع الميزات النموذجية أو التقليدية لكائنات التوجه.
على سبيل المثال، يمكن استخدام أساليب أو طرق (method) لفئة الرياضيات Math class، مثل Math.random، من دون الحاجة إلى معرفة كيف يتم تنفيذها، كل ما يحتاج إليه المبرمج هو معرفة الاسم والمعلمات (parameters) إن وجدت.
هذه هي نقطة الكبسلة أو التغليف (encapsulation) وسوف تنطبق بشكل صحيح على جميع الفئات.
ولكن فئة الرياضيات تقوم بكبسلة الوظيفة فقط من دون الحاجة إلى اخفاء البيانات. بسبب عدم وجود بيانات.
الكائنات ومتغيرات الكائنات.
للعمل مع كائنات يمكنك أولاً البناء عليها وتحديد حالتها الأولية. ثم قمت بتطبيق أساليب للكائنات.
في لغة البرمجة جافا، يمكنك استخدام منشئات لبناء الحالات الجديدة. المنشئ هو أسلوب خاص الذي يهدف إلى بناء وتهيئة الكائنات. دعونا نلقي نظرة على مثال. مكتبة جافا القياسية تحتوي على فئة التاريخ. الكائنات الخاصة بها تصف النقاط في الوقت المناسب مثل "كانون، ديسيمبر 31, 1999, 23:59:59 بِتَوْقِيت غْرِينِتْش".
تم تجهيز مصممي اللغة حقاً التنبؤ بهذه الأنواع من القضايا؟ إذا أنهم يقومون بعمل فقير اللغة يصبح مشوشا وغير سارة، ولكن المبرمج التعيس عاجزة عن القيام بأي شيء حيال ذلك. مع الفئات هو تفريغ مهمة تصميم لمصمم مكتبة. إذا كانت الفئة غير مثالية يمكن بسهولة كتابة المبرمجين الآخرين فئات الخاصة بهم لتحسين أو استبدال نظام الطبقات. لإثبات هذه النقطة "جافا" مكتبة التاريخ مشوش قليلاً، وتجري حاليا إعادة تصميم رئيسي يمكنك زيارة الرابط التالي: http://jcp.org/en/jsr/detail?id=310
المنشئات دائماً لها نفس الاسم كاسم الفئة. وهكذا يسمى المنشئ لفئة التاريخ تاريخ. لإنشاء كائن تاريخ يمكنك دمج المنشئ مع المشغل الجديد كما يلي:
()new Date
هذا التعبير يبني كائن جديد. تتم تهيئة الكائن إلى الوقت والتاريخ الحاليين. إذا كنت تريد، يمكن تمرير الكائن إلى أسلوب:
وبدلاً من ذلك يمكنك تطبيق أسلوب للكائن الذي كنت شيدت فقط. أحد الأساليب لفئة التاريخ هو الأسلوب" toString". أن يستدعي اسلوب تمثيل سلسلة للتاريخ. هنا كيف أن تطبيق الأسلوب toString على كائن تاريخ المشيدة حديثا:
يتم استخدام الكائن شيدت مرة واحدة فقط في هذين المثلين. عادة سوف تحتاج إلى الصمود على الكائنات التي يمكنك بناء حيث أنه يمكنك يمكن الحفاظ على استخدامها. ببساطة يمكنك تخزين الكائن في متغير:
وهناك فارق هام بين الكائنات ومتغيرات الكائن.
-فعلى سبيل المثال البيان:
Date desdline; // deadline doesn't refer to any object
تعريف كائن المتغير "deadline" يمكن أن تشير إلى كائنات نوع التاريخ.
من المهم أن ندرك أن المتغير "deadline" هو ليس كائن، وفي الواقع لا بعد حتى يشير إلى كائن. لا يمكنك استخدام أي أساليب التاريخ على هذا المتغير في هذا الوقت. مثال:
s = deadline.toString(); // not yet
سوف يؤدي إلى خطأ في وقت التحويل البرمجي. يجب عليك أولاً أن تهيئة متغير "deadline" .
لديك خيارين بالطبع يمكنك تهيئة المتغير مع كائن المشيدة حديثا:
أو يمكنك تعيين المتغير تشير إلى كائن موجود:
الآن كل المتغيرات تشير إلى نفس الكائن.
من المهم أن ندرك أن متغير كائن في الواقع لا تحتوي على كائن. أنه يشير فقط إلى كائن. في جافا قيمة أي متغير كائن مرجع إلى الكائن يتم تخزينها في أماكن أخرى. قيمة الإرجاع من المشغل الجديد أيضا مرجع. بيان مثل:
يتكون من جزأين. التعبير "()new Date"يجعل كائن نوع تاريخ، وقيمته مرجع إلى كائن تم إنشاؤه حديثا. أن المرجع ثم تخزينها في المتغير "deadline".
يمكنك صراحة تعيين متغير كائن إلى فارغة للإشارة إلى أنها حاليا تشير إلى لا كائن.
(if (deadline != null
إذا قمت بتطبيق أسلوب لمتغير يحتوي على null ثم يحدث خطأ وقت تشغيل.
String s = birthday.toString(); // runtime error
اذ لم يتم تلقائياً تهيئة المتغيرات إلى null يجب تهيئة لهم أما عن طريق استدعاء جديدة أو بإعداد منهم إلى null.
ولكن في C++لا يوجد أي إشارات لاغية ولا يمكن تعيين المراجع. وينبغي أن تفكر في متغيرات الكائن Java مماثلة للكائن المؤشرات في c فعلى سبيل المثال:
Date birthday; // Java
هو في الحقيقة نفس:
Date* birthday; //.
بمجرد إجراء هذه الرابطة كل شيء يقع في مكانة. بالطبع ليس تهيئة مؤشر تاريخ حتى تقوم بتهيئته مع مكالمة جديدة. بناء الجملة هو نفسه تقريبا في Java و ++c.
Date* birthday = new Date(); //.
إذا قمت بنسخ متغير واحد إلى آخر ثم كلا المتغيرات تشير إلى نفس التاريخ – فهي المؤشرات إلى الكائن نفسه. ما يعادل مرجع null جافا هو مؤشر NULL في ++C.
في جافا جميع الكائنات الحية في كومة الذاكرة المؤقتة. عندما يتضمن كائن متغير كائن آخر لا يزال هذا المتغير يحتوي على مجرد مؤشر إلى كائن آخر في كومة الذاكرة المؤقتة. في مؤشرات C تجعلك عصبيا لأنهم عرضه لذلك الخطأ. فمن السهل إنشاء مؤشرات سيئة أو خطاء في إدارة الذاكرة. في جافا هذه المشاكل ببساطة الذهاب بعيداً. إذا قمت باستخدام مؤشر غير مهيأ نظام وقت التشغيل موثوق سيقوم بإنشاء خطأ وقت تشغيل بدلاً من إنتاج نتائج عشوائية. كنت لا تقلق بشأن إدارة الذاكرة لأن يعتني أنه جامع البيانات المهملة.
C يجعل محاولة مع دعمها لمنشئات نسخ ومشغلي الإحالة السماح بتنفيذ الأشياء التي تنسخ نفسها تلقائياً. فعلى سبيل المثال نسخة قائمة مرتبطة قائمة جديدة مرتبطة مع محتويات ذاته، لكن مع مجموعة مستقلة من الروابط. و هذا يجعل من الممكن لفئات التصميم مع نسخة نفس السلوك كالأنواع المضمنة. في جافا يجب استخدام أسلوب الاستنساخ للحصول على نسخة كاملة من المتغي.
فئة التقويم الميلادي لمكتبة جافا:
في الأمثلة السابقة قمنا باستخدام فئة التاريخ الذي جزء من مكتبة جافا القياسية. له مثيل من فئة تاريخ دولة هي نقطة معينة في الوقت.
على الرغم من أن لا تحتاج إلى معرفة هذا عند استخدام فئة التاريخ والوقت يمثل عدد المللي ثانية(إيجابية أو سلبية ) من نقطة ثابتة الذي يعد 00:00:00 بالتَّوْقِيت الْعَالَمِيّ، يناير 1970. التوقيت العالمي (UTS) هو التوقيت العالمي الساعة العلمية القياسية التي هي للأغراض العملية نفسها، وعلى دراية (GMT)أو توقيت غرينتش.
ولكن كما تبين تاريخ الطبقة ليست مفيدة للغاية للتعامل مع التواريخ. مصمموا مكتبة جافا اتخاذ وجهة نظر أن وصف تاريخ مثل:
"ديسمبر31، 1999، 23:59:59 " هي اتفاقية التعسفية، تحكمها التقويم. ويتبع هذا الوصف خاصة التقويم الميلادي وهو التقويم يستخدم في معظم الأماكن في العالم.
أن وصف نفس النقطة في الوقت المناسب بشكل مختلف تماما في التقاويم القمرية الصينية أو العبرية ناهيك عن التقويم المستخدمة من قبل العملاء من المريخ. مصمم المكتبة قرر فصل الشواغل لحفظ الوقت وإرفاق أسماء للنقاط في الوقت المناسب. ولذلك يحتوي مكتبة جافا القياسية على فئتين منفصلتين فئة التاريخ الذي يمثل نقطة في الوقت، وفئة التقويم الميلادي الذي يعبر عن التواريخ في تدوين التقويم المألوفة. وفي الواقع يمتد فئة التقويم الميلادي فئة تقويم عامة أكثر التي تصف خصائص التقويمات بشكل عام. من الناحية النظرية يمكن توسيع الفئة التقويم وتنفيذ التقويم القمري الصيني أو تقويم المريخ. لكن المكتبة القياسية لا يتضمن أي تطبيقات التقويم إلى جانب التقويم الميلادي.
فصل قياس الوقت من التقويمات حسن تصميم وجوه المنحى. بشكل عام أنها لفكرة جيدة استخدام فئات منفصلة للتعبير عن مفاهيم مختلفة. فئة تاريخ قد سوى عدد قليل من الطرق التي تسمح لك بالمقارنة بين نقطتين في الوقت المناسب. على سبيل المثال، أساليب القبل والبعد تقول لكم إذا كان يأتي نقطة واحدة في الوقت قبل أو بعد آخر:
((if (today.before(birthday
وقد فئة التقويم الميلادي العديد من أساليب أكثر من تاريخ الطبقة. وبالخصوص فقد عدة منشئات مفيدة. التعبير:
يبني كائن جديد يمثل التاريخ والوقت الذي شيد الكائن.
يمكنك إنشاء كائن تقويم لمنتصف الليل في تاريخ محدد بتزويد السنة شهر ويوم: (new GregorianCalendar(1999, 11, 31
ومن الغريب إلى حد ما تحسب الأشهر من 0. ولذلك 11 هو كانون الأول/ديسمبر. لمزيد من الوضوح وهناك ثوابت مثلCalender.DECEMBER :
(new GregorianCalendar(1999, Calendar.DECEMBER, 31
يمكنك أيضا تعيين الوقت:
(new GregorianCalendar(1999, Calendar.DECEMBER, 31, 23, 59, 59
وبطبيعة الحال سوف تحتاج عادة لتخزين كائن مشيد في متغير:
التقويم الميلادي وتغليف الحقول مثال للحفاظ على التاريخ الذي تم ضبطه. دون النظر في التعليمات البرمجية المصدر من المستحيل معرفة تمثيل الذي استخدمه الفئة داخليا. ولكن بالطبع نقطة التغليف غير مهم. المهم هو مسائل الأساليب التي تكشف عن فئة.
طرق الاسترجاع Mutator and Accessor Methods.
في هذه النقطة ربما كنت تتتسائل: كيف يمكنني تحديد اليوم الحالي أو الشهر أو السنه لكائن التاريخ ميلادي معين ؟ وكيف يمكنني تغير القيم إذا غير راضي معهم؟ يمكن التعرف على طريقه تنفيذ هذه المهام من خلال النظر إلى الوثائق الفوريه أو ملاحظات API في نهايه هذا القسم سوف نتطرق إلى أهم الاساليب في نهايه هذا القسم.
وظيفه التقويم هي حساب السمات مثل التاريخ، يوم من ايام الاسبوع أو الشهر أو السنه، في وقت معين. للاستعلام عن واحد من هذه الاعدادات، يمكنك استخدام طريقه الاسترجاع (get) على فئه التقويم الميلادي. لتحديد العنصر الذي تريد استرجاعه يمكنك تمرير الثابت المعرف في فئه التقويم مثل Calendar.MONTH أو Calendar.DAY_OF_WEEK:
ملاحظات ال API تسرد كل الثوابت التي يمكن استخدامها.
يمكنك تغير مع استدعاء طريقه التعيين (set):
وهناك أيضا طريقة أسهل لضبط السنة والشهر واليوم ومع استدعاء واحد لطريقه التعين (set):
وأخيرا، يمكنك الإضافة(add) عدة أيام أو أسابيع أو أشهر، وغيرها، إلى كائن التقويم:
deadline.add(Calendar.MONTH, 3); // move deadline by 3 months
إذا قمت بإضافة رقم سالب، سينتقل التقويم الوراء.
هناك فرق بين مفهومي طريقة الحصول (get) من جهة والإضافة(add) و طريقه الاستعلام (set) من ناحية أخرى. طريقة الحصول (get) يقوم فقط بالبحث عن حالة الكائن واحضاره. اما طريقه الاستعلام (set) والإضافة (add) تقومان بالتعديل حالة الكائن.الأساليب أو الطرق التي تغير بناءً على طلب الحقول تسمى بأساليب التغير (mutator)، وتلك التي فقط تتمكن من الوصول إلى الحقول بناءً على الطلب دون تعديل تسمى بطرق الاسترجاع(accessor).
والمتفق أو المتعارف عليه هوالطريقه التي تسمى بطرق الأسترجاع مع (get)، وأساليب التغيير مع (set). على سبيل المثال، فإن فئه التقويم الميلادي (GregorianCalendar) تحتوي على getTime وsetTime التي تسترجع وتعيين الوقت الذي يمثل كائن التقويم:
هذه الطرق مفيدة بشكل خاص لتحويل بين التقويم الميلادي وفئه التاريخ. هنا مثال على ذلك. لنفرض أنك تعرف السنة والشهر واليوم وتريد أن تجعل من كائن التاريخ مع هذه الإعدادات. لأن فئه التاريخ لا يعرف شيئاً عن التقويم أولا بناء على كائن التقويم الميلادي(GregorianCalendar) ثم استدعاء طريقة (getTime) للحصول على تاريخ:
على العكس من ذلك، إذا كنت تريد أن تجد السنة أو الشهر أو اليوم لكائن التاريخ، كنت بناء كائن التقويم الميلادي (GregorianCalendar)، ضبط الوقت، ومن ثم استدعاء طريقه الاسترجاع(get):
()GregorianCalendar calendar = new GregorianCalendar
(calendar.setTime(hireDay
(int year = calendar.get(Calendar.YEAR
ننتهي من هذا الباب مع البرنامج الذي يضع فئة التقويم الميلادي (GregorianCalendar) للعمل. يعرض برنامج تقويم للشهر الحالي، مثل هذا:
يتم وضع علامة على اليوم الحالي أو المحدد بعلامة النجمة (*). كما ترون، يحتاج البرنامج إلى معرفة كيفية حساب طول الشهر وأيام الأسبوع من يوم معين.
لكي نحصي اليوم الحالي والشهر بواسطة استدعاء طريقة الاسترجاع (get) مرتين.
ثم نستخدم طريقه الاستعلام (d (set للشهر الأول من واستخدام طريقه الحصول (get) على أيام الأسبوع من ذلك التاريخ.
متغير أيام الأسبوع تحدد لCalendar.SUNDAY إذا كان اليوم الأول من الشهر هو الأحد، إلى Calendar.MONDAY إذا كان يوم الاثنين، إلى اخره. (وهذه القيم هي في الواقع اعداد صحيحة 1، 2،...، 7)، ولكن من الأفضل عدم كتابة التعليمات البرمجية التي تعتمد على تلك المعلومه.
آلة الجافا الافتراضية JVM تدرك لغة المستخدم الحالي. (locale) يصف تنسيق الاعراف المحلية، بما فيها بداية الأسبوع وأسماء أيام الأسبوع. (getFirstDayOfWeek) تستخدم للحصول على اليوم الأول من ايام الاسبوع في مكان محدد.
لتحديد تفصيل البداية المطلوبة، طرحنا 1 من اليوم من كائن التقويم حتى نصل إلى اليوم الأول من الأسبوع.
(while (weekday != firstDayOfWeek
تعريف الفئة الخاصة بك.
الفئات عادة لم يكن لديها طريق رئيسي. بدلا من ذلك، لديهم حقولهم المثال الخاصة والأساليب. لبناء برنامج كامل، يمكنك الجمع بين عدة فئات، واحدة منها لديها طريق رئيسي.
فئة الموظف
أبسط شكل للتعريف فئة في جافا
فئة اسم الفئة
البناء1
البناء2
الطريقة 1
الطريقة 2
الحقل1
الحقل2
مراعاة ما يلي، مبسطة جدا، نسخة من فئة الموظفين التي يمكن استخدامها من قبل رجال الأعمال في كتابة نظام الرواتب.
class Employee
// constructor
(public Employee(String n, double s, int year, int month, int day
// a method
()public String getName
// more methods
// instance fields
نحن كسرنا تنفيذ هذه الفئة بشيء من التفصيل في الأقسام التالية. أولا، على الرغم من قائمة 4-2 يوضح البرنامج الذي يدل على فئة الموظف في العمل. في هذا البرنامج، ونحن بنينا مجموعة الموظف وملئناه مع ثلاثة أشياء:
التالي، ونحن نستخدم طريقة raiseSalary من فئة الموظف لزيادة الراتب لكل موظف بنسبة 5٪:
(for (Employee e : staff
وأخيرا، فإننا طبعنا معلومات حول كل موظف، عن طريق استدعاء أساليب getName، getSalary، وgetHireDay:
()System.out.println("name=" + e.getName
لاحظ أن مثال البرنامج يتكون من فئتين: فئة الموظف وEmployeeTest الفئة مع محدد وصول الجمهور. ويرد الطريقة الرئيسية للتعليمات التي وصفناها للتو في EmployeeTest الصف.
اسم مصدر الملف EmployeeTest.java لأن اسم الملف يجب أن يطابق اسم الفئة العامة. هل يمكن أن يكون فئة العمومي واحد فقط في مصدر الملف، ولكن هل يمكن أن يكون أي عدد من الطبقات غير عامة.
بعد ذلك، عند تجميع شفرة هذه المصدر، يقوم المترجم بإنشاء ملفات الطبقتين في الدليل: EmployeeTest.class وEmployee.class.
بدء تشغيل البرنامج عن طريق إعطاء المترجم بايت كود اسم الفئة التي تحتوي على الطريقة الرئيسية من البرنامج: جافا EmployeeTest المترجم بايت كود يبدأ تشغيل التعليمات البرمجية في الأسلوب الرئيسي في فئة EmployeeTest. هذا الرمز بدوره يبني ثلاثة أشياء الموظف الجديد ويظهر لك دولتهم.
1. ;*.import java.util
2.public class EmployeeTest
3. {
4. (public static void main(String[] args(public static void main(String[] args
5. {
6. // fill the staff array with three Employee objects
7. ;[Employee[] staff = new Employee[3
8. ;(staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15
9. ;(staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1
10.;(staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15
11. // raise everyone's salary by 5%
12. (for (Employee e : staff
13. ;((e.raiseSalary(5)
14.// print out information about all Employee objects
15.(for (Employee e : staff
16. "=System.out.println("name=" + e.getName() + ",salary=" + e.getSalary() + ",hireDay
17. ;(()e.getHireDay+
20. class Employee
21. {
22.(public Employee(String n, double s, int year, int month, int day
23.{
24. ;name = n
25. ;salary = s
26. ;(GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day
27. // GregorianCalendar uses 0 for January
28. ;()hireDay = calendar.getTime
30. ()public String getName
31. {
32. ;return name
34. ()public double getSalary
35. {
36. ;return salary
1. ()public Date getHireDay
2. {
3. ;return hireDay
5. (public void raiseSalary(double byPercent
6. {
7. ;double raise = salary * byPercent / 100
8. ;salary += raise
10. ;private String name
11. ;private double salary
12. ;private Date hireDay
البرنامج في قائمة 4-2 واثنين من الفئات في ملف مصدر واحد. العديد من المبرمجين يفضلون وضع كل فئة في الملف المصدر الخاص بها. على سبيل المثال، يمكنك وضع فئة الموظف في ملف Employee.java وEmployeeTest الصف إلى EmployeeTest.java.
إذا كنت مثل هذا الترتيب، ثم لديك خياران لتجميع البرنامج. يمكنك استدعاء مترجم جافا مع البدل: JAVAC الموظف *. JAVA
ثم، سيتم تجميع كافة ملفات المصدر المطابقة للبدل في ملفات فئة. أو، يمكنك كتابة ببساطة
JAVAC EmployeeTest.java
قد تجد أنه من المستغرب أن الخيار الثاني يعمل على الرغم من أن ملف Employee.java أبدا جمعت صراحة. ومع ذلك، عندما يرى مترجم جافا فئة الموظف تستخدم داخل EmployeeTest.java، وسوف نبحث عن ملف اسمه Employee.class. إذا لم تجد هذا الملف، فإنه تلقائيا بالبحث عن Employee.java ثم يجمع عليه. حتى أكثر من ذلك هو الصحيح: إذا كان الطابع الزمني لإصدار Employee.java التي يجدها هو أحدث من ذلك الملف Employee.class القائمة، سوف مترجم جافا إعادة ترجمة الملف تلقائيا.
تشريح فئة الموظف
في المقاطع التي تتبع، ونحن نريد لتشريح فئة الموظف. دعونا نبدأ مع الطرق الموجودة في هذه الفئة. وكما ترون من خلال دراسة شفرة المصدر،
وهذه الفئة لها منشئ واحد وأربعة طرق:
()public double getSalary
()public Date getHireDay
(public void raiseSalary(double byPercent
يتم تمييزها عن طرق هذه الفئة مثل الجمهور. الجمهور الكلمة يعني أن أي طريقة في أي فئة يمكن استدعاء الأسلوب. (وتغطي مستويات الوصول الأربع الممكنة في هذا المجال والفصل التالي).
التالي، لاحظ أن ثلاثة حقول المثال سوف يعقد البيانات سنقوم التلاعب داخل مثيل فئة الموظف.
الكلمة خاصة بالتأكد من أن الطرق الوحيدة التي يمكن الوصول إلى هذه الحقول على سبيل المثال هي طرق فئة الموظف نفسه. لا توجد طريقة الخارجي يستطيعون القراءة أو الكتابة إلى هذه المجالات.
وأخيرا، لاحظ أن اثنين من حقول سبيل المثال هم أنفسهم كائنات: الاسم والحقول hireDay إشارات إلى سلسلة وأشياء التسجيل. هذا هو المعتاد جدا: غالبا ما تحتوي على فصول المجالات مثيل نوع فئة.
الخطوة الإولى مع المشيد First Step with Constructors.
دعونا ننظر إلى المشيد المدرج في فئة الموظف لدينا
كما ترون، ان اسم المشيد هو نفس اسم الفئة . هذا المشيد يعمل عندما تشيد كائن من فئة الموظف على سبيل المثال، عند إنشاء مثيل فئة الموظف مع رمز مثل هذا:
قمت بتعيين حقول المثيل على النحو التالي
هناك فارق هام بين المشيدات وغيرها من الأساليب. لا يمكن أن ينادى المشيدالا بالتزامن مع المشغل الجديد(new). لا يمكنك تطبيق مشيد إلى كائن موجود لإعادة حقول المثيل.على سبيل المثال،
هو خطأ وقت التحويل البرمجي.
إبقي التالي في عين الاعتبار:
• المشيد له نفس اسم الفئة.
• يمكن أن يكون هناك أكثر من مشيد واحد للفئة.
• يمكن للمشيد ان يكون له صفر، واحد، أو أكثر من المعلمات.
• المشيد ليس له قيمة استرجاع.
• ينادى المشيد دائما مع المشغل الجديد.(new)
معلمات الضمنية والصريحة.
طرق تعمل على الكائنات والوصول إلى حقول المثيل بهم.
طريقة raiseSalary له معلمتين. المعلم الأول، ويسمى معلم ضمني،
هو كائن من نوع الموظف الذي يظهر قبل اسم الأسلوب. المعلم الثاني،
داخل القوسين بعد اسم الأسلوب، هو معلم صريحة. كما ترون، يتم سرد المعلمات صريحة صراحة في اعلان الطريقة، على سبيل المثال، byPercent double .
لا يظهر المعلم الضمني في اعلان الطريقة والكلمة this تشير إلى معلم ضمني. إذا أردت، يمكنك