البرمجة

تصميم واختبار مسار المشي في علوم الحاسوب

في محاولتك لكتابة الكود لفصل الدراسة الخاص بك في علوم الحاسوب، قد قمت بتعريف فئة تسمى “WalkingPath” تحتوي على مصفوفة “markers” وتحتوي على طرق لاختبار معلومات المسار. على الرغم من أن الكود يظهر أنه قد تم كتابته بشكل صحيح، إلا أن هناك بعض النقاط التي يمكن تحسينها وتبسيطها لجعل الشيفرة أكثر قراءة وصيانة.

للبداية، يمكنك استخدام تعبير الإعادة المباشرة بدلاً من استخدام “if-else” في طرقك “isLevelSegment” و “isDifficult” لتحسين قراءتها. إليك كيف يمكن تحسينها:

java
public boolean isLevelSegment(int start, int end) { int min = markers[start]; int max = markers[start]; for (int i = start + 1; i <= end; i++) { if (markers[i] > max) max = markers[i]; if (markers[i] < min) min = markers[i]; } return (max - min) <= 10; } public boolean isDifficult() { int changes = 0; for (int i = 1; i < markers.length; i++) { if (Math.abs(markers[i] - markers[i - 1]) >= 30) changes++; } return changes >= 3; }

تم استخدام Math.abs() للتأكد من أنك تأخذ القيم المطلوبة بدون اعتبار للاتجاه.

الآن، بالنسبة للطريقة الرئيسية (main method) التي تقوم باختبار الطرق السابقة، يمكنك كتابة الكود التالي:

java
public class Lab11 { public static void main(String[] args) { WalkingPath path = new WalkingPath(); path.markers = new int[]{10, 20, 30, 40, 25, 35, 45}; // قم بتعيين القيم الخاصة بك int startSegment = 2; int endSegment = 5; boolean isLevel = path.isLevelSegment(startSegment, endSegment); boolean isDifficult = path.isDifficult(); System.out.println("Is the segment level? " + isLevel); System.out.println("Is the path difficult? " + isDifficult); } }

هنا قمت بإنشاء كائن “WalkingPath”، قمت بتعيين مصفوفة “markers” ببعض القيم لاختبار الطرق، ثم استخدمت الطرق isLevelSegment و isDifficult لاختبار الطريق وطباعة النتائج.

يمكنك تغيير قيم المصفوفة ونقاط البداية والنهاية وفقًا لاحتياجات اختباراتك.

المزيد من المعلومات

بالطبع، دعونا نوسع قليلاً على الكود ونضيف بعض المعلومات التي قد تفيدك في تطوير وفهم تصميم البرنامج الخاص بك.

لنبدأ بمراجعة الفئة WalkingPath. يمكننا إضافة تعليقات توضيحية للكود لتوضيح وظيفة كل جزء، كما في الأمثلة التالية:

java
public class WalkingPath { private int[] markers; // تحقق مما إذا كانت القطعة من المسار على نفس المستوى public boolean isLevelSegment(int start, int end) { int min = markers[start]; int max = markers[start]; for (int i = start + 1; i <= end; i++) { if (markers[i] > max) max = markers[i]; if (markers[i] < min) min = markers[i]; } return (max - min) <= 10; } // تحقق مما إذا كان المسار صعبًا بناءً على تغيرات الارتفاع public boolean isDifficult() { int changes = 0; for (int i = 1; i < markers.length; i++) { if (Math.abs(markers[i] - markers[i - 1]) >= 30) changes++; } return changes >= 3; } }

التعليقات تساعد في فهم أهداف الطرق بشكل أفضل.

أما بالنسبة للفئة Lab11 التي تحتوي على الطريقة الرئيسية، يمكننا أيضاً إضافة بعض التوضيحات:

java
public class Lab11 { public static void main(String[] args) { // إنشاء كائن من فئة WalkingPath WalkingPath path = new WalkingPath(); // تعيين قيم لمصفوفة markers path.markers = new int[]{10, 20, 30, 40, 25, 35, 45}; // قم بتعيين القيم الخاصة بك // تحديد نطاق القطعة التي تريد اختبارها int startSegment = 2; int endSegment = 5; // اختبار ما إذا كانت القطعة على نفس المستوى وطباعة النتيجة boolean isLevel = path.isLevelSegment(startSegment, endSegment); System.out.println("Is the segment level? " + isLevel); // اختبار ما إذا كان المسار صعبًا وطباعة النتيجة boolean isDifficult = path.isDifficult(); System.out.println("Is the path difficult? " + isDifficult); } }

هنا قمنا بتحديد كائن WalkingPath، وقمنا بتعيين مصفوفة markers بقيم اختبارية. ثم قمنا بتحديد نطاق القطعة التي نريد اختبارها، وأخذنا النتائج من الطرق isLevelSegment و isDifficult وقمنا بطباعتها.

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

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر