Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

علاقة "لديه" مقابل "هو"

جزء من قسم Object Oriented Programming في رحلة JavaScript على Coddy. الدرس 47 من 56.

في البرمجة كائنية التوجه، هناك نوعان رئيسيان من العلاقات بين الكائنات: "has-a" (التركيب - composition) و "is-a" (الوراثة - inheritance). وبينما تنشئ الوراثة تسلسلات هرمية بين الأب والابن، يقوم التركيب ببناء الكائنات عن طريق دمج مكونات أصغر وأكثر تركيزاً.

دعونا نفهم أولاً علاقة "is-a" من خلال الوراثة:

class Animal {
  constructor(name) {
    this.name = name;
  }
  
  eat() {
    console.log(`${this.name} is eating.`);
  }
}

// Dog "is-a" Animal - علاقة وراثة
class Dog extends Animal {
  bark() {
    console.log(`${this.name} says woof!`);
  }
}

لنلقِ نظرة الآن على علاقة "has-a" (يحتوي على) من خلال التركيب (composition):

class Engine {
  start() {
    console.log("Engine started");
  }
}

// السيارة "تمتلك" محركاً - علاقة تركيب (composition)
class Car {
  constructor() {
    this.engine = new Engine(); // تركيب (Composition)
  }
  
  startCar() {
    this.engine.start();
    console.log("Car is running");
  }
}

الفرق الرئيسي:

  • "is-a" (الوراثة): الكلب هو حيوان (Dog IS AN Animal)
  • "has-a" (التركيب): السيارة لديها محرك (Car HAS AN Engine)
challenge icon

التحدي

لقد تم تزويدك بفئات المكونات (Processor، Memory) ومعظم فئة Computer. مهمتك هي إكمال المُنشئ (constructor) في ملف computer.js:

  1. قم بإنشاء خاصية processor باستخدام فئة Processor
  2. قم بإنشاء خاصية memory باستخدام فئة Memory
  3. قم بتمرير processorSpeed إلى مُنشئ Processor و memorySize إلى مُنشئ Memory

جرّب بنفسك

import { Computer } from './computer.js';

const myComputer = new Computer(3.5, 16);
myComputer.start();
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming

تدرّب بنفسك: مترجم JavaScript عبر الإنترنت