ما هي البرمجة كائنية التوجه؟
الفكرة الأساسية
تنظم OOP الحالة والسلوك المرتبطين داخل كائنات. الكلاس يصف نوعًا، والكائن نسخة من هذا النوع لها قيمها. السؤال الأساسي: ما العمليات المسموحة؟ وما الشروط التي يجب أن تظل صحيحة بعدها؟
كورس OOP في جمال تك يتطلب C++. هياكل البيانات والخوارزميات ليستا متطلبين سابقين معلنين لهذا الفرع، وإن كانت المعرفة بالمواد المختلفة قد تساعدك مع التقدم.
مثال بقاعدة واحدة
كائن يتابع عدد الدروس المكتملة من إجمالي ثابت. القاعدة: المكتمل لا يزيد على الإجمالي. بدل إتاحة تعديل العداد بلا ضابط، نوفر عملية تفحص إمكانية إكمال درس آخر.
#include <iostream>
class Progress {
unsigned total_;
unsigned completed_ = 0;
public:
explicit Progress(unsigned total) : total_(total) {}
bool complete_one() {
if (completed_ >= total_) {
return false;
}
++completed_;
return true;
}
unsigned completed() const {
return completed_;
}
};
int main() {
Progress progress(2);
progress.complete_one();
progress.complete_one();
progress.complete_one();
std::cout << progress.completed() << '\n';
}
الناتج 2. المحاولة الثالثة تعيد false وتترك الحالة دون تغيير. هكذا تحافظ الواجهة على شرط ثابت للكائن.
ميّز المصطلحات
| المصطلح | معناه في المثال |
|---|---|
| الكلاس | النوع Progress وعملياته |
| الكائن | نسخة لها قيمها الخاصة |
| الحالة | الإجمالي والعدد المكتمل |
| السلوك | محاولة إكمال درس |
| التغليف | التحكم في الوصول للحفاظ على القاعدة |
جعل المتغير خاصًا أداة مفيدة، لكنه ليس تصميمًا كاملًا. لو كانت كل الدوال تسمح بحالات خاطئة، فلن تحمي القاعدة.
هل تحتاج إلى الوراثة؟
لا يحتاجها هذا المثال. يكفي كلاس واحد له مسؤولية واضحة. تستخدم الوراثة عندما توجد علاقة أنواع وسلوك مناسب للاستبدال، لا لإضافة ميزة لغوية لكل تمرين.
التركيب يعني أن كائنًا يحتوي أو يستخدم كائنات أخرى. مثلًا، قد يحتوي سجل دراسة أكبر على كائن تقدم. اختر العلاقة لأنها تخدم النموذج.
اختبر السلوك
أنشئ إجماليًا من درسين، وحاول الإكمال ثلاث مرات، وتحقق أن العدد يظل اثنين. وفكر في إجمالي صفر: يجب أن تفشل أول محاولة ويظل العدد صفرًا.
الاختبار يفحص ما تسمح به الواجهة، ولا يحتاج إلى فتح المتغير الخاص. هذا الفصل يسمح بتغيير التنفيذ مع بقاء الاتفاق واضحًا.
تمرين تالٍ
اكتب مواصفات إعادة التقدم للصفر. هل تسمح بها؟ هل يبقى الإجمالي؟ وماذا يحدث بعد الإعادة؟ حدد الإجابات قبل إضافة الدالة.
فائدة OOP تظهر عندما تجعل حدود الكائن وقواعده التفكير أبسط. ابدأ بنموذج صغير يمكنك شرحه، ثم انتقل إلى مشروع مبني على حالات واضحة.
مراجع وتفاصيل الكورسات
المراجع التالية تساعد على متابعة التعلم. الأمثلة والتمارين في هذا المقال تعليمية، وتفاصيل الكورسات تُراجع من الكتالوج.