جافاسكربتالكلاس
- مفهوم الكلاس
- تعريف كلاس جديد
- إضافة خصائص في الكلاس
- إضافة دوال في الكلاس
- مفهوم كونستركتور الكلاس
- وضع قيم إفتراضية في الكونستركتور
مفهوم الكلاس
الكلاس ( Class ) عبارة عن نوع بيانات جديد يتم تعريفه، و هذا النوع يمكنه أن يحتوي على دوال، متغيرات، مصفوفات إلخ..
في هذا الدرس ستتعلم كيفية إنشاء كلاس جديد و كيفية إنشاء كائنات منه خطوة خطوة.
تعريف كلاس جديد
لتعريف كلاس جديد نكتب الكلمة class، يليها الإسم الذي نريد إعطاؤه له، ثم نضع أقواس تحدد بدايته و نهايته.
في المثال التالي قمنا بتعريف كلاس جديد إسمه Person.
مثال
أول حرف في إسم الكلاس أكتبه دائماً كحرف كبير ( Capital Letter ) فهذا هو المتعارف عليه.
إنشاء كائن من الكلاس
لإنشاء كائن من الكلاس نستخدم الكلمة new و يليها كونستركتور ( Constructor ) الكلاس.
في المثال التالي قمنا بإنشاء كائن من الكلاس Person إسمه p.
مثال
في المثال السابق Person() يعتبر الكونستركتور الإفتراضي الموجود في الكلاس Person حيث أن مفسر جافاسكربت ينشئه له بشكل تلقائي إن لم نفعل ذلك و لهذا يمكننا استخدامه.
إضافة خصائص في الكلاس
الخصائص ( Attributes ) هي الأشياء التي يتم وضعها في الكلاس (كالمتغيرات، المصفوفات و الكائنات) و التي سيتم إعطاء نسخة خاصة منها لكل كائن يتم إنشاؤه منه.
في المثال التالي قمنا بتعريف كلاس إسمه Person يحتوي على 3 خصائص.
مثال
أي كائن يتم إنشاؤه من الكلاس Person سيملك نسخته الخاصة من الخصائص الموجودة فيه.
الوصول لخصائص الكائن
في المثال التالي قمنا بتعريف كلاس إسمه Person يملك 3 خصائص.
بعدها قمنا بإنشاء كائن منه مع إعطاء قيمة لكل خاصية يملكها، و من ثم قمنا بعرض جميع قيم خصائصه.
مثال
إضافة دوال في الكلاس
الكلاس يمكنه أن يحتوي على دوال ( Methods ) خاصة به، بمعنى أنه يمكن استدعاءها من خلال الكائنات التي ننشئها منه فقط.
أي خاصية في الكلاس تريد الوصول إليها من دالة موجودة فيه يجب أن تضع this قبلها.
مثال
عند تعريف دالة بداخل الكلاس فإننا نكتب إسمها فقط بدون استخدام الكلمة function.
الوصول للدوال من الكائن
في المثال التالي قمنا بتعريف كلاس إسمه Person يحتوي على 3 خصائص و دالة إسمها printInfo() مهمتها طباعة جميع قيم الخصائص الموجودة فيه عندما يتم إستدعاءها.
بعدها قمنا بإنشاء كائن منه مع إعطاء قيمة لكل خاصية يملكها، و من ثم قمنا باستدعاء الدالة printInfo() لعرض قيم خصائصه.
مثال
مفهوم كونستركتور الكلاس
الكونستركتور ( Constructor ) يمكن إضافته في الكلاس لجعل عملية إنشاء الكائنات منه أكثر سهولة، حيث أنه يمكن من خلاله إنشاء الخصائص و تمرير القيم لها بشكل مباشر.
في حال لم تقم بإضافة كونستركتور بنفسك في الكلاس فإن مترجم جافاسكربت سيضيف واحد فارغ فيه كما يلي.
يتم تنفيذ الأوامر الموضوعة في الكونستركتور في اللحظة التي يتم فيها إنشاء كائن من الكلاس.
حل مشكلة تضارب الأسماء
التعامل مع الكونستركتور مشابه جداً للتعامل مع الدوال حيث أنه يمكن وضع باراميترات فيه و يمكن إعطاءها قيم أولية أيضاً.
بفضل الكلمة this يمكنك استخدام نفس الأسماء للباراميترات و الخصائص و التفريق بسهولة بينهما.
إذا استخدمت الكلمة this للإشارة إلى خاصية غير موجودة في الكلاس فإنه سيتم إضافتها كخاصية جديدة فيه.
إضافة كونستركتور في الكلاس
في المثال التالي قمنا بتعريف كلاس إسمه Person يحتوي على كونستركتور من خلاله يمكن تعريف خصائص الكلاس و تمرير القيم إليها، بالإضافة إلى دالة إسمها printInfo() تسمح بعرض قيم الخصائص.
بعدها قمنا بإنشاء كائن منه و تمرير قيم لخصائصه بشكل مباشر، و من ثم قمنا باستدعاء الدالة printInfo() لعرض قيم خصائصه.
مثال
بما أن الكونستركتور يحتوي على 3 باراميترات، كان لا بد لنا و أن نمرر قيمة لكل باراميتر منهم عند إنشاء الكائن.
وضع قيم إفتراضية في الكونستركتور
يمكنك وضع قيم إفتراضية لباراميترات الكونستركتور حتى لا تكون مجبر على تمرير قيمة لكل باراميتر منهم عند إنشاء كائنات من الكلاس.
للدقة فإن الباراميتر الذي لا يتم تمرير قيمة له عند إنشاء الكائن سيستخدم القيمة الإفتراضية الموضوعة فيه.
التعامل مع القيم الإفتراضية
في المثال التالي قمنا بتعريف كلاس إسمه Person يحتوي على كونستركتور الباراميترات فيه تملك قيم إفتراضية، بالإضافة إلى دالة إسمها printInfo() تسمح بعرض قيم خصائصه.
بعدها قمنا بإنشاء كائنين منه على النحو التالي:
- في الكائن الأول لم نمرر قيم حتى يتم استخدام القيم الإفتراضية.
- في الكائن الثاني قمنا بتمرير قيم لخصائصه بشكل مباشر
في النهاية قمنا باستدعاء الدالة printInfo() من كلا الكائنين لعرض قيم خصائصهما.