تعاريف الأصناف وأنواع الكائنات

في كل مرة تكتب فيها تعريف صنف جديد، يتم إنشاء نوع كائني جديد له نفس اسم الصنف. بعيداً جداً في القسم 1.5، عندما عرفنا الصنف Hello، تم إنشاء نوع كائني جديد اسمه Hello. لم نقم بإنشاء أية متغيرات من نوع Hello، ولم نستعمل الأمر new لإنشاء أية متغيرات من صنف Hello، لكن ذلك كان ممكناً!
ذلك المثال ليس منطقياً أبداً، وذلك لعدم وجود سبب يدعونا لإنشاء كائن Hello، وحتى لو قمنا بذلك فهو لن ينفعنا كثيراً. في هذا الفصل، سنلقي نظرة على تعاريف الأصناف التي تعطينا أنواعاً كائنية مفيدة.
إليك أهم أفكار هذا الفصل:
· تعريف صنف جديد ينشئ نوعاً كائنياً جديداً له نفس الاسم.
· تعريف الصنف يشبه قالباً للكائنات: يحدد التعريف متغيرات الحالة التي تملكها الكائنات والعمليات التي تشتغل عليها.
· كل كائن ينتمي إلى نوع كائني ما؛ أي أنه حالة لصنف معين.
· عندما تستدعي new لصنع كائن، تستدعي Java عملية خاصة تدعى الباني (constructor)، يهيّئ متغيرات الحالة. يمكنك كتابة بانٍ واحد أو أكثر في تعريف الصنف.
· العمليات التي تشتغل على نوع ما تكون معرفة في تعريف صنف ذلك النوع.
إليك بعض مشاكل البنية اللغوية المتعلقة بتعاريف الأصناف:
· يجب أن تبدأ أسماء الأصناف (وبالتالي أسماء الأنواع الكائنية) بحرف كبير، ما يساعد على التمييز بينها وبين الأنواع البسيطة وأسماء المتغيرات.
· عادة ما نضع تعريف صنف واحد في كل ملف، ويجب أن يكون اسم الملف نفس اسم الصنف، وأن ينتهي باللاحقة .java. مثلاً، يعرف الصنف Time في ملف باسم Time.java.
· في أي برنامج، يتم التصريح عن صنف واحد على أنه الصنف البادئ (startup class). يجب أن يحتوي صنف البداية على عملية باسم main، وهو المكان الذي يبدأ عنده تنفيذ البرنامج. يمكن للأصناف الأخرى أن تحوي عملية باسم main، لكن تلك العملية لن تنفذ.
وبإزاحة هذه المشاكل عن طريقنا، دعنا ننظر على مثال لصنف معرف بوساطة المستخدم، Time.