اذهب إلى المحتوى

السؤال

نشر

لقد بدات تعلم oop (object orianted programming) اليوم منذ حوالي ساعه او ساعتين وقد كتبت هذا الملف عن الoop في typescript.

محتاج أراكم فيها ولو في اي تعديل.

يمكنك تحميل الملف من classes.txt

او يمكنك قرآئته من هنا

 

Why Should I Use Classes Insted Of Functions ?
Classes Offer You A Better Code With Features Like:

1- Encapsulation
2- Inheritance
3- Abstrution
4- Polymorphism

***************************************************

Encapsulation is Create A Class With Related Variables And Functions
Like LocalStorage In JAVASCRIPT
You Have Variables Like: 
length which is number
You Have Methods Like:
getItem
setItem
removeItem
clear

Encapsulation Concept reduce the complexity of the app and reduce the spaghetti Code

***************************************************

Inheritance

Inheritance From Class Is Very Important Concept
The Main Idea Behind Concept Is Child Class inherit properties and methods from the parent class

Imagine We Have More Than On Car Like Tesla, Toyota, Honda, kia, etc....

if we create single class to all of these cars the code will be Agly, Bad and spaghetti

So We Use The Inheritance Concept
We Use It Like This: 

// Parent Class

class Car {
    constructor(public name: string, public createdAt: string, public model: string) {}

    printCarProperties() {
        console.log(`Name: ${name}, createdAt: ${createdAt}, model: ${model}`)
    }
}

// Child Class

class kia extends Car {
   constructor(name: string, createdAt: string, model: string) {
        // Like constructor but from parent class This Super function have the same args of parent class
        super(name, createdAt, model) 
   }
   // Now In This Class We Have The Same Properties And Methods In Parent Class
   // We Can Add More As We Want
   greeting(companyName: string) {
        console.log(`Hello ${companyName}`) 
   }
}

***************************************************

Abstrution

Abstrution is Important Concept To Understand

The Main Idea Behind Abstrution Is _Creating A Model For Variable Or Methods In Main Class_
Like: 

abstract class MainClass {
    name: string;
    age: number;

    constructor(name: string, age: number) {
        this.name = name;
        this.age = age;
    }

    abstract printUserInfo():void;
    abstract username: string;
    abstract userPhoneNumber: string;
}

class Child extends MainClass {
    constructor(name: string, age: number) {
        super(name, age)
    }
    printUserInfo(): void {
        console.log(this.name, this.age)
    }
    username: string = "Hello Username";
    userPhoneNumber: string = "+20 100 892 18 10";
}


It's Hard To Understand In The Beginning But It will be very easy

***************************************************

Polymorphism

Polymorphism is the ability to create a class that has more than one form or in other words, classes have the same methods but different implementations

Recommended Posts

  • 1
نشر

الكود الحالي يبدو جيدًا ويعرض المفاهيم الأساسية لـ OOP بشكل جيد. ومع ذلك، قد يكون من الأفضل إضافة بعض الأمثلة العملية لتوضيح المفاهيم بشكل أفضل، وخاصةً فيما يتعلق بالـ Polymorphism و ال Encapsulation 

أمثلة لتوضيح المفاهيم الأساسية لـ OOP في TypeScript.

مثال على الـ Encapsulation:

class BankAccount {
  private balance: number;

  constructor(initialBalance: number) {
    this.balance = initialBalance;
  }

  public deposit(amount: number): void {
    this.balance += amount;
  }

  public withdraw(amount: number): void {
    if (amount <= this.balance) {
      this.balance -= amount;
    } else {
      console.log("Insufficient funds");
    }
  }

  public getBalance(): number {
    return this.balance;
  }
}

في هذا المثال، نعرف فئة "BankAccount" التي تحتوي على خاصية "balance" كـ private وطرق "deposit" و "withdraw" و "getBalance". هذا يعني أن الـ Encapsulation يحمي خاصية الرصيد من التعديل المباشر من خارج الفئة، حيث يمكن للمستخدمين فقط استخدام الطرق المعرفة لإيداع وسحب الأموال والاستعلام عن الرصيد.

مثال على الـ Polymorphism:

class Animal {
  public makeSound(): void {
    console.log("The animal makes a sound");
  }
}

class Cat extends Animal {
  public makeSound(): void {
    console.log("Meow");
  }
}

class Dog extends Animal {
  public makeSound(): void {
    console.log("Woof");
  }
}

في هذا المثال، نعرف فئة "Animal" التي تحتوي على طريقة "makeSound" التي تعرض رسالة على الشاشة. ثم، ننشئ فئتين أخريين "Cat" و "Dog" التي تمتدان من فئة "Animal"، ولكنهم يستخدمون Polymorphism لتعريف طريقة "makeSound" بشكل مختلف عن طريقة "makeSound" في فئة "Animal". يعني هذا أننا يمكننا استخدام الطريقة "makeSound" بطريقة مختلفة، وفقًا لنوع الحيوان الذي نريد إنشاؤه، سواء كانت "Cat" أو "Dog".

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...