הקשר "הוא-סוג-של"
חלק מהיחידה תכנות מונחה עצמים במסלול ה-JavaScript של Coddy. שיעור 25 מתוך 56.
קשר מסוג "הוא-סוג-של" הוא מבחן פשוט לקביעה מתי הורשה מתאימה. אם אפשר לומר "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}`);
}
}
// Novel הוא סוג של Book (ירושה נכונה)
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
אתגר
ניתנו לך מחלקה ElectronicDevice ומחלקה Smartphone. סמארטפון הוא סוג של ElectronicDevice עם תכונות נוספות. המשימה שלך היא ליצור אובייקט `myPhone` עם המותג "Samsung" והדגם “Galaxy S23”.
נסו בעצמכם
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"השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1אובייקטים ומילת המפתח this
סקירה מהירה: אובייקטיםהוספת מתודות לאובייקטיםהבנת מילת המפתח thisפונקציות בנאימילת המפתח newאתגר סיכום7הורשה ומילת המפתח extends
הורשההקשר "הוא-סוג-של"מילת המפתח extendsהמתודה super()הורשת מאפיינים ומתודותאתגר סיכום8ארגון קוד OOP
ארגון מחלקות במודוליםתרגלו בעצמכם: קומפיילר JavaScript אונליין