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

علاقة "is-a"

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

علاقة "is-a" هي اختبار بسيط لتحديد متى تكون الوراثة منطقية. إذا كان بإمكانك قول "X هو Y" وبدت الجملة صحيحة، فمن المحتمل أن X يجب أن يرث من Y.

صحيح (استخدم الوراثة):

  • "الكلب هو حيوان" → class Dog extends Animal
  • "السيارة هي مركبة" → class Car extends Vehicle
  • "الكتاب المدرسي هو كتاب" ← class Textbook extends Book

غير صحيح (لا تستخدم الوراثة):

  • "السائق هو سيارة" ← لا، السائق يستخدم سيارة
  • "العجلة هي سيارة" ← لا، العجلة هي جزء من السيارة
  • "الطالب هو فصل دراسي" ← لا، الطالب موجود في فصل دراسي

على سبيل المثال، لننظر في كائنين:

// الفئة الأساسية - ما هي عليه جميعاً
class Book {
  constructor(title, author, pages) {
    this.title = title;
    this.author = author;
    this.pages = pages;
  }
  
  read() {
    console.log(`Reading ${this.title} by ${this.author}`);
  }
}
// الرواية هي كتاب (وراثة صحيحة)
class Novel extends Book {
  constructor(title, author, pages, genre) {
    super(title, author, pages);
    this.genre = genre;
  }
}
// استخدام الفئات
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read();    // "Reading 1984 by George Orwell" - موروثة من Book
challenge icon

التحدي

لقد تم إعطاؤك فئة ElectronicDevice وفئة Smartphone. إن Smartphone هو نوع من ElectronicDevice مع ميزات إضافية. مهمتك هي إنشاء كائن `myPhone` بماركة "Samsung" وطراز “Galaxy S23”.

ورقة مرجعية

تُعد علاقة "is-a" (هو-أو-هي) اختباراً لتحديد متى يكون التوريث منطقياً. إذا كان بإمكانك قول "X هو Y" وبدا ذلك صحيحاً، فيجب أن يرث X من Y.

أمثلة صحيحة (استخدم التوريث):

  • "الكلب هو حيوان" ← class Dog extends Animal
  • "السيارة هي مركبة" ← class Car extends Vehicle
  • "الكتاب المدرسي هو كتاب" ← class Textbook extends Book

أمثلة غير صحيحة (لا تستخدم التوريث):

  • "السائق هو سيارة" ← لا، السائق يستخدم السيارة
  • "العجلة هي سيارة" ← لا، العجلة جزء من السيارة
  • "الطالب هو فصل دراسي" ← لا، الطالب موجود داخل الفصل الدراسي

مثال:

// الفئة الأساسية
class Book {
  constructor(title, author, pages) {
    this.title = title;
    this.author = author;
    this.pages = pages;
  }
  
  read() {
    console.log(`Reading ${this.title} by ${this.author}`);
  }
}

// الرواية هي كتاب (توريث صحيح)
class Novel extends Book {
  constructor(title, author, pages, genre) {
    super(title, author, pages);
    this.genre = genre;
  }
}

const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read();    // "Reading 1984 by George Orwell" - موروثة من Book

جرّب بنفسك

import { ElectronicDevice } from './electronicDevice.js';
import { Smartphone } from './smartphone.js';


// TODO: قم بإنشاء كائن `myPhone` بالعلامة التجارية "Samsung" والطراز "Galaxy S23".


// كود الاختبار - لا تقم بالتعديل
console.log(myPhone.turnOn());  // يجب أن تكون النتيجة "Samsung Galaxy S23 is now ON"
quiz iconاختبر نفسك

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

جميع دروس Object Oriented Programming