4

ג'אווה - תכנות מונחה עצמים - הורשה

  • Upload
    -

  • View
    610

  • Download
    6

Embed Size (px)

DESCRIPTION

חלק מסדרת הרצאות בנושא "תכנות מונחה עצמים בסביבת ג'אווה", והפעם: הורשה.

Citation preview

Page 2: ג'אווה - תכנות מונחה עצמים - הורשה

Inheritance - הורשה

-ו equalsבאופן ישיר או עקיף, כאשר דיברנו על אובייקטים ומחלקות, על המרת טיפוסים, על קריאה ל"סופר", על המתודות

finalize ועוד, ציינו את העובדה שמחלקה יכולה להיות תת מחלקה ולהשתייך למחלקה גבוהה יותר מבחינה היררכית וכמו

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

וכן הלאה.

ותר, היא מקבלת את כל אותן התכונות והפעולות של המחלקה באופן כזה, כאשר תת מחלקה "נגזרת" ממחלקה גבוהה י

.הורשהאליה היא משתייכת. תכונות ופעולות אלו מגיעות אליה ב

ואת המחלקה Base Class – Super Class –בספרות המקצועית נהוג לכנות את אותה מחלקה ממנה יורשים כמחלקת אב

.Derived Class – Sub Class –היורשת כתת מחלקה

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

וכפילויות משמעות שמביאות איתן שפות המאפשרות הורשה מרובה.

.מחלקותמרובה של מס'תוריש לעם זאת, אין מניעה שמחלקה אחת

, כך שבסופו של Objectמסוימת, יורשת באופן אוטומטי מהמחלקה כל מחלקה, אם אינה יורשת באופן מפורש ממחלקה

דבר, מלבד טיפוסים פרימיטיביים, כל דבר הוא אובייקט, זאת היות ובכל ראש היררכיית ירושה ישנה מחלקה שלא יורשת

.Objectבאופן מפורש מאף מחלקה ספציפית ואז היא יורשת באופן אוטומטי מהמחלקה

.DerivedClassממנה יורשת מחלקה בשם BaseClassנניח ונתונה המחלקה

באופן הבא: extendsהירושה בפועל מתבצעת ע"י שימוש במילה השמורה

public class BaseClass { }

public class DerivedClass extends BaseClass {

}

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

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

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

, מתקבל הפלט הבא:שימו לב, בחיפוש אחר הערך "יונקים" בוויקיפדיה

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

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

Page 3: ג'אווה - תכנות מונחה עצמים - הורשה

תכונות הבאות:תוכל להתאפיין למשל ב Mammalאם כן, אותה מחלקה

בלוטות חלב, עצם הפטיש, עצם הסדן, מוח קדמי...

תוכל להתאפיין למשל בתכונות הבאות: Human, לדוגמה Mammalמחלקה היורשת ממחלקה

לב... עיניים, אף, פה, ידיים, רגליים, ראש,

תוכל להתאפיין למשל בתכונות הבאות: Person, לדוגמה Humanמחלקה היורשת ממחלקה

אישיות, בינה, שם פרטי, שם משפחה, ת.ז...

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

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

ה מוסבר בצורה מפורטת בפרק הייעודי לכך(.שהוצמדו לכל מאפיין )נושא מצייני הגיש

ראשית, נראה דיאגרמה המתארת בצורה ציורית את שהוסבר:

( Personיכלול את כל המאפיינים שהוגדרו במחלקה ממנה הוא נוצר ) Personבתרשים ניתן לראות שאובייקט מהמחלקה

(, כך שנוכל Human, Mammalשהוגדרו במחלקות שהורישו למחלקה ממנה הוא נוצר )וכמו כן, יכלול את כל המאפיינים

ידיים, רגליים, ראש,, בלוטות חלב, עצם הפטיש, עצם הסדן, מוח קדמישיהיה הבעלים של: Personלצפות מאובייקט מסוג

ות.ז.אישיות, בינה, שם פרטי, שם משפחה , לב עיניים, אף, פה,

Page 4: ג'אווה - תכנות מונחה עצמים - הורשה

אשר מתארת את היררכיית המחלקות והירושה: UMLכעת, נראה דיאגרמת

יש את התכונות הבאות: Person, נוכל להבין שלאובייקט שנוצר מהמחלקה UML-לפי תרשים ה

personType, humanType, mammalType .שהרי כל אישיות היא גם בן אדם וגם יונק

.Mammal-שהוגדרה ב getTypeאת הפעולה Personבנוסף, ניתן להפעיל על אובייקט מהמחלקה

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

.getTypeואת הפעולה humanType, mammalType, אובייקט שיוצר ממנה יכיל את התכונות Personבמחלקה

כרו )דריסת מתודות ופולימורפיזם( מוסברים באופן מפורט, כ"א בפרק העוסק בנושא המדובר, אך היתרונות הנוספים שהוז

כך שתבצע פעולה ספציפית למחלקה getTypeלמשל את Personבקצרה נוכל לומר, שניתן להגדיר מחדש במחלקה

Person כמו כן, שניתן יהיה לפנות לאובייקט מסוג ,Person באמצעות משתנה מסוג מחלקהHuman אוMammal ,כאמור(

בדבר הסיבות והיתרונות שבכל צעד כזה, מוסבר בפרקים הייעודיים לנושאים אלו(.