البرامج ذات العمليات المتعددة

عندما تنظر إلى تعريف صنف يحوي عمليات متعددة، فإن قراءته من الأعلى إلى الأسفل تبدو مغرية، لكن ذلك سيكون مشوشاً على الأغلب، لأنه ليس ترتيب تنفيذ البرنامج (order of execution of the program).
يبدأ التنفيذ دائماً عند التعليمة الأولى من main، بغض النظر عن موقعها من البرنامج (في حالتنا هذه فقد تعمدت وضعها في النهاية). يتم تنفيذ التعليمات واحدة تلو الأخرى، بالترتيب، حتى تصل إلى استدعاء لعملية. استدعاءات العمليات تشبه الانعطافات في مجرى التنفيذ. بدلاً من الذهاب إلى التعليمة التالية، تذهب إلى السطر الأول من العملية المستدعاة، تنفذ جميع التعليمات الموجودة هناك، ثم تعود وتتابع التنفيذ ثانية من المكان الذي انعطفت منه.
هذا يبدو بسيطاً بما يكفي، عدا أنك يجب أن تتذكر أن تلك العملية قادرة على استدعاء عملية أخرى. بالتالي، بينما نحن في وسط main، قد نضطر إلى الذهاب لتنفيذ التعليمات في threeLine. ولكن بينما نحن ننفذ تعليمات threeLine، ستتم مقاطعتنا ثلاث مرات للذهاب وتنفيذ newLine.
بدورها، تستدعي newLine العملية الجاهزة println، والتي تسبب انعطافاً أخراً أيضاً. لحسن الحظ، فإن Java ماهرة جداً في الحفاظ على مسارٍ يبين مكانها، بحيث تستطيع المتابعة من المكان الذي توقفت عنده في newLine بعد انتهاء تنفيذ println، ثم تعود إلى threeLine، وأخيراً تعود إلى main وهكذا يستطيع البرنامج أن ينتهي.
تقـنياً، لن ينتهي البرنامج عند نهاية main. بدلاً من ذلك، سيتابع التنفيذ في المكان الذي تركه في البرنامج الذي قام باستدعاء main، وهو مفسر Java. يهتم مفسر Java بأشياء مثل حذف النوافذ والتنظيف العام، وبعد ذلك ينتهي البرنامج.
ما هو المغزى من هذه الحكاية المملة؟ عندما تقرأ برنامجاً، لا تقرأ من الأعلى إلى الأسفل. بدلاً من ذلك، تتبع مجرى التنفيذ.