تعرف على البرمجة الكائنية OOP في JavaScript
البرمجة الكائنية OOP هي نمط برمجي يعتمد على الكائنات Objects لتنظيم الكود وإعادة استخدامه بطريقة أكثر كفاءة.
حيل يتم تمثيل البيانات والوظائف على شكل كائنات تحتوي على خصائص Properties ووظائف Methods.
مفاهيم OOP في JavaScript:

حيث JavaScript تدعم OOP ولكن بأسلوب خاص، حيث تعتمد على النماذج Prototypes بدلًا من الأصناف Classes كما في لغات أخرى مثل Java أو C++.
ومع ذلك بدءًا من ES6، تم تقديم الكلاسات Classes وذلك لتسهيل كتابة الكود بأسلوب OOP.
الكائنات Objects حيث أن الكائن في JavaScript هو مجموعة من الخصائص properties والوظائف methods.
وهنا person كائن يحتوي على خاصيتين وهما name وage` ووظيفة greet.
وايضا إنشاء كائنات باستخدام الدوال البانية Constructor Functions وذلك قبل تقديم class في ES6، كانت الطريقة الشائعة لإنشاء كائنات قابلة لإعادة الاستخدام هي استخدام الدوال البانية.
وهنا، Person دالة بانية Constructor لإنشاء كائنات جديدة.
الكلاسات Classes وهى متوفرة منذ ES6 حيث تسهل class في JavaScript كتابة الكود بأسلوب OOP شبيه باللغات الأخرى مثل: Java و C++، وتتميز بالآتى:
- الكود أكثر وضوحًا وأسهل في القراءة.
- كما يتيح مفهوم الوراثة بسهولة (كما في القسم التالي).

الوراثة Inheritance حيث تمكن الوراثة من إنشاء كائنات جديدة بناءً على كائنات أخرى.
والكائنات النموذجية Prototypes حيث أن JavaScript تعتمد على النماذج Prototypes ووهي أساس الوراثة في اللغة.
وهنا greet تمت إضافته إلى النموذج prototype للكلاس Person، مما يجعله مشتركًا بين جميع الكائنات التي تنشأ من Person.
الكبسلة Encapsulation وهي إخفاء البيانات الداخلية ومنع التعديل المباشر عليها.
والتعددية Polymorphism وهى تعني القدرة على إعادة تعريف الدوال في الكلاسات الموروثة.
لذلك JavaScript تدعم OOP عبر الكائناتObjects والنماذج Prototypes والكلاسات Classes، كما يمكن إنشاء الكائنات باستخدام الدوال البانية أو الكلاسات ES6.
وتدعم JavaScript مفاهيم OOP الأساسية مثل: الكائنات، الوراثة، الكبسلة، التعددية، وprototype مهم لفهم كيفية عمل الوراثة في JavaScript، واستخدام class يجعل الكود أكثر تنظيمًا وأسهل في الصيانة.
اقرا ايضا/تعرف على ES6 وكل ما يخصه لغة الجافا اسكريبت
نصائح فعالة لتعلم البرمجة الكائنية OOP في JavaScript:
فهم الأساسيات أولًا وذلك قبل التعمق في OOP، تأكد من إتقان المفاهيم الأساسية في JavaScript مثل:
- المتغيرات Variables.
- الدوال Functions.
- والمصفوفات Arrays والكائنات Objects.
- ونطاق المتغيرات Scope والمعاملات Operators.
لذلك إذا لم تكن مرتاحًا مع هذه المفاهيم، فحاول مراجعتها أولًا لتسهيل فهم OOP.
وفهم مفهوم الكائنات Objects جيدًا حيث في JavaScript، كل شيء تقريبًا كائن، لذلك تدرب على إنشاء الكائنات العادية وفهم كيفية تخزين البيانات فيها.
لذلك حاول إنشاء كائنات تمثل أشياء من الواقع مثل: الهاتف، المستخدم، الحساب البنكي، إلخ.
وتعلم كيفية إنشاء الكائنات باستخدام Constructor Functions وذلك قبل استخدام class، جرب إنشاء كائنات باستخدام الدوال البانية Constructors.
لذلك افهم كيف يعمل this داخل الدوال البانية، حيث يشير إلى الكائن الحالي.
تعلم class والوراثة Inheritance حيث ابدأ باستخدام class لإنشاء الكائنات وتعلم الوراثة بين الكلاسات، وايضا افهم كيف يستخدم extends لإنشاء كلاس فرعي والاستفادة من ميزات الكلاس الأب.
واستوعب مفهوم prototype وكيفية استخدامه حيث تعتمد JavaScript على النماذج Prototypes بدلاً من الكلاسات التقليدية، لذا من المهم فهم كيفية إضافة وظائف للكائنات عبر prototype.

لذلك تأكد من فهم الفرق بين الخصائص العادية والخصائص المعرفة عبر prototype.
وتدرب على الكبسلة Encapsulation وإخفاء البيانات لذلك استخدم الخصائص الخاصة لجعل بعض البيانات غير متاحة مباشرة من خارج الكلاس.
وهذا يساعد في حماية البيانات ومنع التعديلات غير المقصودة عليها.
اقرا ايضا/تعلم برمجة c sharp – برمج الألعاب والتطبيقات بسهولة C#
وقم بحل تمارين وتحديات عملية وذلك لأن التطبيق العملي هو المفتاح لتعلم OOP لذلك جرب هذه التحديات:
أنشئ كائن يمثل طالبًا، يحتوي على خصائص مثل: الاسم، العمر، والدورات التي يدرسها.
وأنشئ كلاس Book يحتوي على عنوان الكتاب، اسم المؤلف، وسنة النشر، ثم أنشئ كلاس EBook يرث منه ويضيف خاصية download لتحميل الكتاب.
أنشئ كلاس Shape ثم أنشئ Rectangle وCircle يرثان منه، مع دالة لحساب المساحة لكل منهما.
ولا تتوقف عن التعلم والتطوير حيث أنزOOP مفهوم واسع، لذا حاول دائمًا استكشاف مواضيع متقدمة مثل: التعددية Polymorphism وهى تستخدم فى إعادة تعريف الدوال في الكلاسات الفرعية.
والبرمجة الوظيفية Functional Programming وذلك بجانب OOP، واستخدام JavaScript مع TypeScript لفهم الفروق بين الأنواع.
دمتم بخير.