- מאפייני ירושה
- הִיֵרַרכִיָה
- רב צורתיות
- סוגי ירושה
- ירושה ייחודית
- ירושה רב ברמה
- ירושה היררכית
- ירושה היברידית
- ירושה מרובה
- סוגי ירושה משכבת בסיס
- ירושה ציבורית
- ירושה מוגנת
- ירושה פרטית
- דוגמאות
- דוגמא לפיתון
- דוגמה ב- C ++
- הפניות
ירושת אובייקט - תכנות מונחה היא דרך לארגן חפצים בהיררכיה מן הכלל אל הפרט. זהו המכשיר המשמש להרחבת מחלקה לכיתה אחרת ושומר על ביצוע אנלוגי.
ברוב השפות מבוססות האובייקט מבוסס-כיתה, אובייקט שנוצר באמצעות ירושה, המכונה אובייקט ילד, מקבל את כל המאפיינים וההתנהגויות של אובייקט האב.
הוכחה פשוטה לירושה בכיוון האובייקט. מקור: Pluke / CC0 Creative Commons CC0 1.0 תחום ציבורי אוניברסלי
לכן זוהי תכונה המייצגת את הקשר בין מעמדות שונים. ירושה מאפשרת לכיתה להתנהג זהה לשיעור אחר ולהרחיב או להתאים אותה התנהגות כדי לספק פעולה מיוחדת לצרכים ספציפיים.
ירושה יכולה לעזור לייצג אובייקטים שיש להם כמה הבדלים וכמה קווי דמיון באופן עבודתם. אתה יכול לשים את כל הפונקציונליות המשותפת לאובייקטים במחלקת בסיס ואז להגדיר תת-סוגיה אחת או יותר עם פונקציונליות מותאמת אישית משלך.
מאפייני ירושה
ירושה היא אחד ממאפייני המפתח של תכנות מונחה עצמים, המשמשים להגדרת מחלקה חדשה מהכיתות הקיימות.
כלומר, ניתן לגזור מחלקות חדשות משכבות בסיס קיימות, להוסיף תכונות חדשות. אתה לא צריך לכתוב מאפס. לכן, ירושה מספקת דרך לעשות שימוש חוזר בקוד הקיים בקלות.
אם כבר יש לך כיתה שעושה כמעט כל מה שאתה רוצה, אתה יכול ליצור תת-משנה שבה חלק מההתנהגות שלה נעקפת באופן חלקי, או אולי מתווספת פונקציונליות חדשה.
כיתה נגזרת יורשת את כל השיטות של מחלקת הבסיס, למעט האפשרויות הבאות:
- קונסטרוקטורים, הרסנים ובוני העתקה ממעמד הבסיס.
- מפעילי עומס יתר ממעמד הבסיס.
- פונקציות ידידותיות לשיעור בסיס.
הִיֵרַרכִיָה
כפי שעושה אילן יוחסין, הירושה משמשת ליצירת היררכיה של מעמדות. חשוב לציין כי התכונות שנקבעו עבור מחלקת בסיס יופיעו אוטומטית בכיתה הנגזרת. כמו כן, השיטות למחלקת הבסיס יעבדו עבור הנגזרים.
אומרים ששיעור הוא תת-סוג של הכיתה ממנה הוא יורש. מצד שני, הכיתה הזו תהיה קלאס העל שלך. ניתן לכנות את המעמד הגנרי ביותר כמעמד הבסיס, מכיוון שהוא נמצא בבסיס ההיררכיה.
רב צורתיות
ירושה פופולרית מאוד בשפות מסוימות עם סוגים סטטיים, מכיוון שהיא מאפשרת למתכנת להימנע מכמה מההגבלות מהסוג הסטטי.
אובייקט שיורש מאובייקט אחר נחשב לסוג משנה של אותו אובייקט. דוגמא יכולה להיות האובייקטים "מדריך" ו"סטודנט "שכל אחד מהם יורש מ"אדם".
אם מדריך ותלמיד הם מאותו סוג אדם, אתה יכול לכתוב פונקציה שמקבלת את סוג האדם כפרמטר ושפועלת על המדריך וחפצי התלמידים, מכיוון ששניהם הם יורשים של אנשים.
סוגי ירושה
ירושה ייחודית
כאשר כיתה נגזרת יורשת את התכונות וההתנהגות של מחלקת בסיס יחידה. כלומר, כיתה משתרעת על כיתה אחרת בלבד.
ירושה רב ברמה
מתייחס לגאדג'ט שבו אתה יכול לרשת מכיתה נגזרת, מה שהופך את הכיתה הנגזרת הזו לשיעור הבסיס לשיעור חדש. כלומר, זה נובע כאשר נוצרת כיתה נגזרת ממעמד נגזר אחר.
ירושה היררכית
בירושה זו, תת-קבוצות רבות יורשות מכיתה יחידה. כלומר, זה קורה כשכיתה בסיסית אחת עוברת בירושה על ידי יותר ממעמד אחד נגזר.
ירושה היברידית
זוהי הירושה המתקבלת כאשר כל אחד משלושת הירושות הקודמות משולבים (יחיד, היררכי ורב-שכבתי).
ירושה מרובה
זה תואם את נתון הירושה כשכיתה יורשת ביותר ממחלקת-על אחת. החיסרון בירושה מסוג זה הוא שהמעמד הנגזר יצטרך להתמודד עם התלות שיש לו בשתי כיתות בסיס.
מצד שני, סוג זה של ירושה מאפשר למתכנתים לבנות מחלקות המשלבות את ההיבטים של כיתות מרובות וההיררכיות המתאימות להם.
סוגי ירושה משכבת בסיס
ירושה ציבורית
כאשר נגזרת כיתה ממעמד בסיס ציבורי, חברי הציבור בכיתת הבסיס הופכים לחברי ציבור של המעמד הנגזר והחברים המוגנים של מעמד הבסיס הופכים לחברים מוגנים בכיתה הנגזרת.
החברים הפרטיים בכיתת-על לעולם לא יהיו נגישים ישירות מהכיתה הנגזרת, אלא ניתן לגשת אליהם באמצעות שיחות שמועברות לציבור ולחברים המוגנים בכיתת הבסיס.
ירושה מוגנת
כאשר נוצר מעמד שירש ממעמד-על מוגן, גם הציבור וגם החברים המוגנים בסגנון-על זה יהפכו לחברים מוגנים בכיתה הנגזרת.
ירושה פרטית
כאשר נוצרת תת-משנה ממעמד-על פרטי, הציבור והמשתמשים המוגנים בשכבת-על זו יהפכו לחברים פרטיים במעמד-משנה.
דוגמאות
דוגמא לפיתון
כדי להראות כיצד עיקרון הירושה עובד, ניקח רובוטים או מעמד טוב יותר של רובוטים בשפת התכנות של פייתון. לשם כך, תוגדר מחלקה בשם RobotMédico (PhysicianRobot), שמקורו בסיווג הרובוט.
אם אתה מסתכל על הקוד של הכיתה RobotMédico, אתה יכול לראות שלא הוגדרה תכונה או שיטה בשיעור זה.
מכיוון שכיתת RobotMedico היא תת-סוג של רובוט, היא יורשת הן את שיטות __init__ והן say_hi במקרה זה. בירושה של שיטות אלה פירושו שניתן להשתמש בהן כאילו הוגדרו בשיעור RobotMédico.
כאשר נוצר מופע של RobotMedico, הפונקציה __init__ תיצור גם תכונה של שם. ניתן ליישם את שיטת say_hi על האובייקט "y" של RobotMédico, כפי שניתן לראות בתוצאה של הקוד הקודם.
דוגמה ב- C ++
כיתה יכולה לרשת יותר מכיתה אחת, מה שאומר שהיא יכולה לרשת נתונים ופונקציות מכמה superclasses. כדי להגדיר מחלקה נגזרת, אתה משתמש ברשימת נגזרת מחלקה כדי לציין את מחלקות הבסיס.
רשימת נגזרות מחלקה ב- C ++ מציינת מחלקות בסיס אחת או יותר ויש לה את הטופס הבא: מחלקה נגזרת של מחלקה: מפרט בסיס של מפרט גישה, שבו מפרט הגישה הוא ציבורי, מוגן או פרטי ומעמד בסיס הוא שם מחלקה שהוגדרה בעבר. אם לא נעשה שימוש במפרט הגישה, פרטי נלקחים כברירת מחדל.
ניתן לשקול את סוג העל "צורה" והמעמד הנגזר "מלבן" שלהלן:
כאשר הקוד שלמעלה נערך ומורכב, הפלט הבא מתרחש: "שטח כולל: 35".
הפניות
- דייב בראונשוויג (2020). ירושה ופולימורפיזם. קהילת Rebus. נלקח מ: press.rebus.community.
- קורס פייתון (2020). יְרוּשָׁה. נלקח מ: python-course.eu.
- מנטור נתונים (2020). ירושה. נלקח מ: datamentor.io.
- נקודת הדרכות (2020). ירושה C ++. נלקח מ: tutorialspoint.com.
- ידיעות נטו (2020). סוגים שונים של ירושה. נלקח מ: net-informations.com.