Menu
Coddy logo textTech

מהו פולימורפיזם?

חלק מהיחידה תכנות מונחה עצמים במסלול ה-JavaScript של Coddy. שיעור 35 מתוך 56.

פולימורפיזם הוא עיקרון מרכזי בתכנות מונחה עצמים, המאפשר לאובייקטים ממחלקות שונות להגיב לאותה שיטה בדרכים שונות.

ב-JavaScript, פולימורפיזם בא לידי ביטוי לרוב כאשר מחלקות צאצא דורשות מחדש מתודות ממחלקות אב.

בואו ניצור מחלקת אב פשוטה עם מתודה speak():

class Animal {
  constructor(name) {
    this.name = name;
  }
  
  speak() {
    return `${this.name} makes a sound`;
  }
}

עכשיו ניצור מחלקת צאצא שמרחיבה את Animal:

class Dog extends Animal {
  speak() {
    return `${this.name} barks`;
  }
}

הנה מחלקת צאצא נוספת:

class Cat extends Animal {
  speak() {
    return `${this.name} meows`;
  }
}

כל מחלקת צאצא מממשת את המתודה speak() באופן שונה. זו פולימורפיות בפעולה!

כעת אפשר ליצור אובייקטים שונים ולקרוא לאותה מתודה בכל אחד מהם:

const animal = new Animal("Some animal");
const dog = new Dog("Rex");
const cat = new Cat("Whiskers");

console.log(animal.speak()); // Some animal משמיע קול
console.log(dog.speak());    // Rex נובח
console.log(cat.speak());    // Whiskers מיילל

כל שלושת האובייקטים מגיבים למתודה speak(), אך כל אחד עושה זאת בדרכו שלו.

challenge icon

אתגר

יש לך מערכת התראות עם מחלקת אב Notification ושתי מחלקות צאצא. המשימה שלך היא להוסיף את המתודה send(message) לכל אחת ממחלקות הצאצא, עם מימושים שונים.

  1. במחלקה EmailNotification, המתודה צריכה להחזיר את המחרוזת: "Sending '(message)' via Email"
  2. במחלקה SMSNotification, המתודה צריכה להחזיר את המחרוזת: "Sending '(message)' via SMS"

נסו בעצמכם

import { EmailNotification } from './email-notification.js';
import { SMSNotification } from './sms-notification.js';

// קוד בדיקה - אין לשנות
const email = new EmailNotification();
const sms = new SMSNotification();

console.log(email.send("Hello!"));  // יש להשתמש ב-send() של EmailNotification
console.log(sms.send("Hello!"));    // יש להשתמש ב-send() של SMSNotification
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר JavaScript אונליין