Home
Module 5
Pillar 4 of OOP
Abstraction
التجريد - إخفاء التعقيد وإظهار الضروري فقط
🎨إيه هو التجريد Abstraction؟
🚗 تشبيه العربية
لما بتسوق عربية:
- • بتدوس دواسة البنزين → العربية بتمشي
- • مش محتاج تعرف إزاي المحرك شغال جوه
- • مش محتاج تفهم نظام الحقن أو الجيربوكس
ده التجريد: إخفاء التفاصيل المعقدة وإظهار الـ interface البسيط! 🎯
✅ الفرق بين Abstraction و Encapsulation
- • Abstraction: إخفاء التعقيد (مش محتاج تعرف إزاي)
- • Encapsulation: حماية البيانات (مينفعش تغير)
📌 الفايدة
- • تبسيط الاستخدام للمبرمجين
- • إخفاء التفاصيل الداخلية
- • سهولة التعديل في المستقبل
🏗️ طبقات التجريد
💡 المستخدم بيتعامل مع الطبقة العليا بس - مش محتاج يعرف التفاصيل اللي تحت
🌍أمثلة من الحياة الحقيقية
📱
الموبايل
بتفتحه وتستخدمه - مش محتاج تفهم الـ circuits جوه
☕
ماكينة القهوة
بتدوس زرار - مش محتاج تعرف إزاي بتسخن المية
🏧
ATM
بتسحب فلوس - مش محتاج تعرف إزاي بيتواصل مع البنك
📦Abstract Class
smartDevice.ts
// Abstract Class - القالب المجرد
abstract class SmartDevice {
protected isOn: boolean = false;
// Regular method - جاهزة للاستخدام
togglePower(): void {
this.isOn = !this.isOn;
if (this.isOn) {
this.turnOn();
} else {
this.turnOff();
}
}
// Abstract Methods - لازم تتنفذ
abstract turnOn(): void;
abstract turnOff(): void;
abstract getStatus(): string;
}
// Implementation 1 - TV
class SmartTV extends SmartDevice {
turnOn(): void {
console.log("📺 TV is now ON");
}
turnOff(): void {
console.log("📺 TV is now OFF");
}
getStatus(): string {
return this.isOn ? "Playing" : "Off";
}
}
// Implementation 2 - AC
class SmartAC extends SmartDevice {
turnOn(): void {
console.log("❄️ AC is cooling");
}
turnOff(): void {
console.log("❄️ AC stopped");
}
getStatus(): string {
return this.isOn ? "Cooling" : "Off";
}
}🔍 شرح كل جزء:
🏛️ الـ Abstract Class
abstract class SmartDevice - مينفعش تعمل منه Object مباشرة، لازم class يورثه
⚡ Method جاهزة
togglePower() فيها code جاهز - كل الأولاد بيورثوها زي ما هي
📋 Abstract Methods
abstract turnOn() - مفيهاش code! كل child لازم ينفذها بطريقته
🔧 التنفيذ المختلف
SmartTV و SmartAC كل واحد نفذ الـ abstract methods بطريقته الخاصة!
🎮جرب بنفسك - Smart Home
اختار الجهاز:
الحالة:
📺
getStatus()
الشاشة اتفت
device.togglePower() → OFF
💡 لاحظ: كل الأجهزة عندها نفس الـ interface (togglePower, turnOn, turnOff) - لكن كل واحد بيشتغل بطريقته الخاصة!
📝 ملخص Abstraction
🎨
Hide Complexity
إخفاء التفاصيل المعقدة
🔌
Simple Interface
واجهة سهلة الاستخدام
🏛️
Abstract Class
قالب + abstract methods
🔧
Implementation
التنفيذ الفعلي