أعرف أكثر

الفصل 4: التحلل


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

قبل:
بعد:

إذا كنت مقيدًا بالأوامر الأربعة المحددة مسبقًا ، فإن الطريقة run لحل هذه المشكلة ستبدو كما يلي:

private void run() {
move();
turnLeft();
turnLeft();
turnLeft();
move();
putBeeper();
turnLeft();
turnLeft();
move();
turnLeft();
turnLeft();
turnLeft();
move();
}

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

على سبيل المثال ، يمكن أن تتحلل مشكلة ملء الثقب في الطريق في المشاكل الفرعية التالية:

  1. نقل ما يصل الى الحفرة
  2. ملء الحفرة عن طريق إسقاط مخروط في ذلك
  3. الانتقال إلى الزاوية التالية

إذا فكرت في المشكلة بهذه الطريقة ، يمكنك استخدام تعريفات الطريقة لإنشاء برنامج يعكس مفهومك لبنية البرنامج. الطريقة run ستبدو كما يلي:

private void run() {
move();
ملءالحفرة();
move();
}

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

private void ملءالحفرة() {
turnRight();
move();
putBeeper();
turnAround();
move();
turnRight();
}

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


الفصل التالي