1. الوراثة (Inheritance)
هذا هو المبدأ الأساسي الواضح في مشروعك. تم تقسيم النظام إلى طبقات:
الكلاس الأساسي (Superclass): هو كلاس Person الذي يحتوي على الخصائص العامة المشتركة بين أي فرد في المنظومة مثل (الاسم name والعنوان address).
الكلاسات المشتقة (Subclasses): * كلاس Student: يرث من Person ويضيف خصائص متعلقة بالطالب مثل مصفوفة الدرجات والقدرة على حساب المتوسط.
كلاس Teacher: يرث أيضاً من Person ويضيف خصائص متعلقة بالمدرس مثل مصفوفة المواد التي يدرسها والقدرة على إضافة أو حذف المواد.
2. التغليف (Encapsulation)
يظهر التغليف في كيفية حماية البيانات داخل الكلاسات:
المتغيرات (Attributes) غالباً ما تكون private لضمان عدم التلاعب بها مباشرة من خارج الكلاس.
استخدام دوال الـ Getters والـ Setters للوصول للبيانات أو تعديلها.
إضافة منطق (Logic) داخل الدوال، مثل التأكد من عدم إضافة مادة مكررة للمدرس (Add Math again: false)، وهذا يمنع الوصول العشوائي للبيانات.
3. تعدد الأشكال (Polymorphism)
يظهر هذا المبدأ في إعادة تعريف الدوال (Overriding):
دالة toString(): تم عمل Override لها في كل كلاس (Person, Student, Teacher) لتعطي وصفاً مخصصاً لكل كائن عند طباعته، كما يظهر في مخرجات الكونسول لديك (مثلاً ظهور كلمة Student متبوعة ببيانات الشخص).
مكونات المشروع البرمجية (System Components)
المميزات التقنية التي نفذتها في الكود:
Validations: الكود يتأكد من نجاح أو فشل العملية (مثل Remove Chemistry: false) مما يعني وجود فحص داخلي للمصفوفات.
Composition/Relationship: تظهر العلاقة القوية في المخرجات حيث أن الـ Student "هو" Person (Is-A Relationship).