الواجهات

يستخدم GridWorld واجهات Java (Java interfaces)، لذلك أريد أن أشرح ما هي هذه الواجهات. تعني كلمة "interface" أشياء مختلفة بحسب موقعها من الكلام، لكنها في Java تشير إلى ميزة للغة البرمجة: الواجهة هي تعريف صنف لا تملك عملياته أجسام (bodies).
في تعريف الصنف العادي، يوجد لكل عملية نموذج أولي (prototype) وجسم (body) (انظر القسم 8.5). يدعى النموذج الأولي أيضاً بالتوصيف (specification) لأنه يصف اسم العملية، ومعاملاتها ونوع إرجاعها؛ يدعى الجسم بالتطبيق (implementation) لأنه يطبق (implement) التوصيف.
في واجهات Java لا تملك العمليات أجسام، لذا فهي تصف العمليات بدون أن تطبّـقها.
مثلاً، java.awt.Shape هي واجهة فيها نماذج أولية للعمليات contains، وintersects، والعديد من العمليات الأخرى. يوفر الصنف java.awt.Rectangle تطبيقات لهذه العمليات، لذلك نقول
"Rectangle implements Shape". هذا هو السطر الأول من تعريف الصنف Rectangle:
public class Rectangle extends Rectangle2D
implements Shape, Serializable
يرث الصنف Rectangle العمليات من الصنف Rectangle2D ويوفر تطبيقات للعمليات الموجودة في Shape وSerializable. في برنامج GridWorld يطبق صنف Location واجهة java.lang.Comparable بتوفيره العملية compareTo، المشابهة لعملية compareCards في القسم 13.5.
يعرّف GridWorld أيضاً واجهة جديدة، اسمها Grid، التي توصّف العمليات التي يجب على الشبكات (grids) توفيرها. كما يحتوي البرنامج على تطبيقين لها، BoundedGrid وUnboundedGrid.
بقي أن نعقب على الاختصار API الذي يمثل الكلمات "Application programming Interface" – "واجهة برمجة التطبيقات". API هي مجموعة العمليات المتوفرة لمبرمجي التطبيقات حتى يستخدموها. انظر http://en.wikipedia.org/wiki/Applica...ming_interface.