Home
Module 5
Pillar 4 of OOP

Abstraction

التجريد - إخفاء التعقيد وإظهار الضروري فقط

🎨إيه هو التجريد Abstraction؟

🚗 تشبيه العربية

لما بتسوق عربية:

  • • بتدوس دواسة البنزين → العربية بتمشي
  • • مش محتاج تعرف إزاي المحرك شغال جوه
  • • مش محتاج تفهم نظام الحقن أو الجيربوكس

ده التجريد: إخفاء التفاصيل المعقدة وإظهار الـ interface البسيط! 🎯

✅ الفرق بين Abstraction و Encapsulation

  • Abstraction: إخفاء التعقيد (مش محتاج تعرف إزاي)
  • Encapsulation: حماية البيانات (مينفعش تغير)

📌 الفايدة

  • • تبسيط الاستخدام للمبرمجين
  • • إخفاء التفاصيل الداخلية
  • • سهولة التعديل في المستقبل

🏗️ طبقات التجريد

👤 User / DeveloperPresses button or calls method🔌 Interface / Abstract ClassContract defining available methods⚙️ Implementation DetailsComplex code running behind the scenes💾 System / Hardware / DatabaseHigh LevelLow Level
💡 المستخدم بيتعامل مع الطبقة العليا بس - مش محتاج يعرف التفاصيل اللي تحت

🌍أمثلة من الحياة الحقيقية

📱

الموبايل

بتفتحه وتستخدمه - مش محتاج تفهم الـ 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

التنفيذ الفعلي