״יש-לו״ לעומת ״הוא-״
חלק מהיחידה תכנות מונחה עצמים במסלול ה-JavaScript של Coddy. שיעור 47 מתוך 56.
בתכנות מונחה עצמים, ישנם שני סוגים עיקריים של קשרים בין אובייקטים: "יש-לו" (הרכבה) ו"הוא-סוג-של" (ירושה). בעוד שירושה יוצרת היררכיות של הורה וילד, הרכבה בונה אובייקטים באמצעות שילוב של רכיבים קטנים וממוקדים.
ראשית, נבין את הקשר „הוא סוג של” באמצעות ירושה:
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!`);
}
}עכשיו נבחן את הקשר "יש-לו" באמצעות הרכבה:
class Engine {
start() {
console.log("Engine started");
}
}
// ל-Car "has-a" Engine - קשר של קומפוזיציה
class Car {
constructor() {
this.engine = new Engine(); // קומפוזיציה
}
startCar() {
this.engine.start();
console.log("Car is running");
}
}ההבדל העיקרי:
- "הוא-סוג-של" (ירושה): כלב הוא בעל חיים
- "יש-לו" (הרכבה): למכונית יש מנוע
אתגר
ניתנו לך מחלקות הרכיבים (Processor, Memory) ורוב המחלקה Computer. המשימה שלך היא להשלים את הבנאי בקובץ computer.js:
- צור מאפיין
processorבאמצעות המחלקהProcessor - צור מאפיין
memoryבאמצעות המחלקהMemory - העבר את processorSpeed לבנאי של Processor ואת memorySize לבנאי של Memory
נסו בעצמכם
import { Computer } from './computer.js';
const myComputer = new Computer(3.5, 16);
myComputer.start();השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1אובייקטים ומילת המפתח this
סקירה מהירה: אובייקטיםהוספת מתודות לאובייקטיםהבנת מילת המפתח thisפונקציות בנאימילת המפתח newאתגר סיכום7הורשה ומילת המפתח extends
הורשההקשר "הוא-סוג-של"מילת המפתח extendsהמתודה super()הורשת מאפיינים ומתודותאתגר סיכום8ארגון קוד OOP
ארגון מחלקות במודוליםתרגלו בעצמכם: קומפיילר JavaScript אונליין