تمرينات

تمرين 11.1
في لعبة الكلمات سكرابل (Scrabble)، كل قطعة تحتوي على حرف، يستعمل لتركيب الكلمات، ونقاط، تستخدم لتحديد قيمة الكلمة.
a. اكتب تعريفاً لصنف اسمه Tile يعبر عن قطع سكرابل. متغيرات الحالة يجب أن يكونا محرفاً يدعى letter وعدداً صحيحاً يدعى value.
b. اكتب عملية بناء تأخذ معاملات اسمها letter وvalue وتهيئ متغيرات الحالة.
c. اكتب عملية اسمها printTile تأخذ كائن Tile كمعامل وتطبع متغيرات الحالة بصيغة سهلة القراءة.
d. اكتب عملية اسمها testTile تنشئ كائن Tile له الحرف Z والقيمة 10، ثم تستخدم printTile لطباعة حالة الكائن.
إن الغرض من هذا التمرين هو التدرب على الجزء الميكانيكي من إنشاء تعريف لصنف جديد وشفرة تختبره.

تمرين 11.2

اكتب تعريفاً للصنف Date، وهو نوع كائني يحوي ثلاثة أعداد صحيحة، year، month، وday. يجب أن يحوي هذا الصنف عمليتي بناء. الأولى لا تأخذ أية معاملات. أما الثانية فيجب أن تأخذ ثلاثة معاملات year، month، وday وتستخدمها لتهيئة متغيرات الحالة.
اكتب عملية main تنشئ كائن Date جديد باسم birthday. يجب أن يحتوي الكائن الجديد على تاريخ ميلادك. يمكنك استخدام أي من عمليتي البناء.

تمرين 11.3

العدد الكسري هو عدد يمكن تمثيله بكسر يكون حديه عددين صحيحين. مثلاً، 2/3 عدد كسري، ويمكنك اعتبار 7 عدد كسري بما أن مقامه 1. في هذه الوظيفة، سوف تكتب تعريف صنف للأعداد الكسرية.
a. أنشئ برنامجاً جديداً يدعى Rational.java يعرف صنفاً باسم Rational. يجب أن يحتوي كائن Rational على متغيري حالة من النوع int لتخزين البسط والمقام.
b. اكتب عملية بانية لا تأخذ أية متحولات وتعطي المتغيرين قيمة الصفر.
c. اكتب عملية تدعى printRational تأخذ كائن Rational كمتحول وتطبعه في صيغة مناسبة.
d. اكتب عملية main تنشئ كائناً جديداً من النوع Rational، وتعطي قيماً ما لمتغيري الحالة الخاصين به، وتطبع ذلك الكائن.
e. في هذه المرحلة، ستملك برنامجاً مصغراً قابلاً للاختبار. اختبره و –في حال دعت الحاجة- صحح الأخطاء.
f. اكتب عملية بانية أخرى للصنف تأخذ متحولين وتستخدمهم لتهيئة متغيرات الحالة.
g. اكتب عملية باسم negate تعكس إشارة العدد الكسري. يجب أن تكون هذه العملية معدّلة، لذلك يجب أن يكون نوع إرجاعها void. أضف بعض السطور إلى main لاختبار العملية الجديدة.
h. اكتب عملية باسم invert تقلب العدد بالتبديل بين بسطه ومقامه. أضف سطوراً إلى main لاختبار العملية الجديدة.
i. اكتب عملية تدعى toDouble تحول العدد الكسري إلى عدد عشري (عدد ذو فاصلة) وتعيد النتيجة. هذه العملية هي تابع مجرد؛ فهي لا تعدل على الكائن. كما هو الحال دائماً، اختبر العملية الجديدة.
j. اكتب عملية معدّلة باسم reduce تختزل العدد الكسري إلى أبسط شكل له وذلك بحساب القاسم المشترك الأكبر (GCD) للبسط والمقام وتقسيمهما عليه. يجب أن تكون هذه العملية تابعاً مجرداً؛ يجب ألا تعدل متغيرات الحالة للكائن الذي استدعيت العملية عليه. لحساب GCD، انظر التمرين 6.10.
k. اكتب عملية باسم add تأخذ عدد كسريين كمتحولات وتعيد كائناً جديداً من نوع Relational. يجب أن يحتوي الكائن المعاد على مجموع المتحولين.
توجد عدة طرق لجمع الكسور. يمكنك استخدام أي منها، لكن عليك التأكد من اختزال نتيجة العملية بحيث لا يوجد للبسط والمقام قواسم مشتركة (ما عدا 1).
إن الغرض من هذا التمرين هو كتابة تعريف صنف يتضمن مجموعة من العمليات المتنوعة. بما في ذلك عمليات بناء ومعدلات وتوابع مجردة.



Scrabble هي علامة تجارية مسجلة تملكها Hasbro, Inc. في الولايات المتحدة الأمريكية وكندا، وفي بقية العالم
J.W. Spear & Sons Limited of Maidenhead, Berkshire, England، فرع من شركة Mattel, Inc..