ירושה הוא אחד ממושגי הליבה של תכנות מונחה עצמים. בתכנות המילה ירושה מייצגת מערכת יחסים בה כיתת ילדים מניחה את המצב ואת ההתנהגות של כיתת הורים.
מטרת הירושה בפיתוח תוכנה היא להקל על שימוש חוזר בתוכנות בטוחות ואמינות. אחד היתרונות העיקריים בשימוש בירושה הוא בכך שהוא מבטל קוד מיותר בתוכניות שלך.
איך עובדת ירושה
הרעיון העומד מאחורי הירושה הוא שלכיתות או אובייקטים רבים יש חלק מאותה סט תכונות ושיטות. לכן, ברוח ייצור תוכנות אמינות, מחלקות חדשות יכולות כעת להיעזר בכיתות הקשורות מראש, ובמידת הצורך להרחיב אותן על מצבים והתנהגויות קיימות.
דוגמה בעולם האמיתי לאופן שבו עובדת ירושה תהיה התחשבות בפירות. זהו תווית רחבה המשמשת לתמצית מגוון פריטים שונים.
תפוח הוא פרי וכך גם תפוז. עם זאת, תפוז הוא לא תפוח, ולכן לא יהיו לך פירות כאחד ממוצרי המלאי שלך אם בבעלותך חנות. אולי אתה יכול להכין קטע פירות במלאי שלך, ומתחת לסעיף זה, יהיו לך פריטים ספציפיים יותר כמו תפוחים ותפוזים.
כך עובדת הירושה.
שימוש בירושה ב- Java
ניתן להשתמש בירושה בכל שפת תכנות המשתמשת ב- פרדיגמת תכנות מונחה עצמים. עם זאת, אופן השימוש המדויק בירושה תלוי בשפת התכנות הספציפית.
לדוגמה, C ++ היא גם שפת תכנות מונחית עצמים. C ++ תומך במה שמכונה ירושה מרובה, ואילו Java תומכת בירושה יחידה בלבד.
המשמעות של זה היא שב- Java בכיתת הורים יכולות להיות שיעורי ילדים רבים, אך לכל כיתת ילדים יכולה להיות רק כיתת הורה יחיד (ירושה יחידה). עם זאת, יש דרך להשיג ירושה מרובה עקיפה בג'אווה, על ידי יצירת יחסי סבא וסבתא, הורה וילד.
יצירת כיתת הורים בג'אווה
תהליך בחירת מחלקת הורים ממסמך של דרישות תוכנה מכונה ניתוח מונחה עצמים. במהלך תהליך זה משתמשים לעתים קרובות בביטוי "הוא a" לזיהוי יחסי ירושה אפשריים. בהסתמך מהדוגמה שלנו לעיל אתה אמור להיות מסוגל לראות שפירות יהיו כיתת ההורים שלנו.
דוגמה לכיתת הורים פרי
מעמד ציבורי פירות {
// הצהרה משתנה
זרעי מחרוזת מוגנים;
מוגן עור מחרוזת צבע;
טעם מחרוזת מוגן;
// קונסטרוקטור ברירת מחדל
פירות ציבוריים () {
זרע = "";
skinColor = "";
טעם = "";
}
// קונסטרוקטור ראשי
פירות ציבוריים (זרעי מחרוזת, עור מחרוזת צבע, טעם מחרוזת) {
זה.זרע = זרע;
this.skinColor = skinColor;
זה.טעם = טעם;
}
// גטרים וקובעים
מחרוזת ציבורית getSeed () {
להחזיר זרע;
}
public void setSeed (זרעי מחרוזת) {
זה.זרע = זרע;
}
מחרוזת ציבורית getSkinColor () {
להחזיר skinColor;
}
public void setSkinColor (מחרוזת skinColor) {
this.skinColor = skinColor;
}
מחרוזת ציבורית getTaste () {
טעם החזרה;
}
set public void setTaste (מחרוזת טעם) {
זה.טעם = טעם;
}
// שיטת אכילה
חלל ציבורי לאכול () {
// קוד כללי כיצד לאכול פרי
}
// שיטת מיץ
מיץ חלל ציבורי () {
// קוד כללי כיצד למצות פרי
}
}
אחד ההיבטים הבולטים בכיתת האב לעיל הוא שינוי הגישה המשמש בכל הצהרת משתנה. שינוי הגישה ה"מוגן "אידיאלי לשימוש בכיתות הורים מכיוון שהוא מונע משיעורים שאינם ילדים לקבל גישה לתכונות הנתונים של כיתת ההורים.
בהמשך הקוד אתה מציג בפני בונים, גטרים וקובעים המהווים אבני בניין כלליות לכל מחלקת Java. לבסוף, בפנינו שתי שיטות (מיץ ואכילה) שנוצרות בכיתת ההורים של התוכנית שלנו מכיוון שהן אוניברסליות לכל הפירות - כל הפירות ניתנים לאכילה ולמיץ.
יצירת שיעורי ילדים בג'אווה
שיעורי ילדים נקראים בדרך כלל כיתות מיוחדות או נגזרות מכיוון שהם יורשים מצב וההתנהגות מההורה, ולעתים קרובות מותאמים אישית תכונות אלה כך שיהיו ספציפיות יותר.
בהמשך לדוגמה שלנו, אתה אמור להיות מסוגל לראות מדוע כתום יהיה כיתת ילדים מתאימה של כיתת הפירות לעיל.
דוגמא לכיתת ילדים כתומים
מעמד ציבורי תפוז מאריך פירות {
// הצהרת משתנה
פרטיות פרטית;
// בונה ברירת מחדל
כתום ציבורי () {
עליונות = 0;
}
// בנאי ראשי
כתום ציבורי (זרעי מחרוזת, עור מחרוזת צבע, טעם מחרוזת, int supremes) {
סופר (זרע, עור צבע, טעם);
this.supremes = supremes;
}
// גטרים וקובעים
public int getsupremes () {
החזר עליונות;
}
setsupremes פומבית (int supremes) {
this.supremes = supremes;
}
// שיטת אכילה
חלל ציבורי לאכול () {
// איך אוכלים תפוז
}
// שיטת מיץ
מיץ חלל ציבורי () {
// איך מיץ ותפוז
}
// שיטת הקילוף
קליפת חלל ציבורית () {
// איך לקלף תפוז
}
}
יש הבדל בין איך נראית הצהרת כיתת Java רגילה לבין מה שיש לנו בקוד שלנו לעיל. מילת המפתח "מרחיב" היא זו שמשמשת בג'אווה בכדי לאפשר ירושה.
בדוגמה שלנו לעיל מעמד הילדים (כתום) מרחיב את כיתת ההורים (פירות). לכן, ניתן לגשת ולשנות את המצב והתנהגות מחלקת הפירות על ידי המחלקה הכתומה.
התכונה הייחודית שיש לכיתה הכתומה שלנו מזוהה עם שם המשתנה supremes (שהוא השם הרשמי עבור הקטעים הקטנים שנמצאו בתפוזים). כאן נכנסת לתמחות; לא לכל הפירות יש עליון אבל לכל התפוזים, ולכן שמירת המשתנה של הסופרמה למעמד הכתום היא הגיונית.
הוספת שיטת "הקליפה" לשיטות ה"אכילה "וה"מיץ" הקיימות היא גם הגיונית מכיוון שלמרות שלא ניתן לקלף את כל הפירות, תפוזים קלופים לעיתים קרובות.
עליכם לזכור כי אם לא היינו מתכוונים לשנות את השיטות הקיימות "לאכול" ו"מיץ ", לא נצטרך לכלול אותן בשיעור התפוזים שלנו. השיטות בכיתת התפוז עוקפות כל שיטה דומה בכיתת הפירות. כך שאם כל הפירות נאכלו וימצו באותה צורה, לא היינו צריכים ליצור את השיטות הללו בכיתה הכתומה.
בוני התפקידים משחקים בירושה
כברירת מחדל, בוני כיתות הורים עוברים בירושה בכיתות ילדים. לכן, אם נוצר אובייקט כיתת ילד זה אומר שגם אובייקט מחלקת אב נוצר באופן אוטומטי.
אם נחזור לדוגמא שלנו, בכל פעם שנוצר אובייקט כתום חדש נוצר גם אובייקט פרי מכיוון שתפוז הוא פרי.
מאחורי הקלעים, כאשר נוצר אובייקט כיתת ילדים, הבנאי של כיתת ההורים נקרא תחילה ואחריו הבנאי של כיתת הילד. בשיעור הילד הכתום שלנו לעיל, אם נוצר אובייקט כתום ללא פרמטרים, ייקרא לבנאי מחלקת הפירות המוגדר כברירת מחדל ואחריו קבלן המחלקות הכתומות המוגדר כברירת מחדל.
שיטת ה"סופר "בבנאי הראשי שלנו לעיל נחוצה מכיוון שהיא מציינת כי הבנאי הראשי - וגם לא קונסטרוקטור ברירת המחדל - יש לקרוא לכיתת פרי האב בכל פעם שאובייקט כתום עם פרמטרים נמצא נוצר.
עכשיו אתה יכול להשתמש בירושה ב- Java
ממאמר זה הצלחתם ללמוד מהי ירושה, כיצד היא פועלת ומדוע זה מושג כה חשוב בתכנות. כעת תוכל ליצור את קשרי הירושה שלך באמצעות שפת התכנות Java. יתר על כן, עכשיו אתה יודע לעקוף את כלל הירושה היחידה של ג'אווה על ידי יצירת מערכת יחסים של סבא וסבתא.
קרדיט תמונה: אנדראס וולפאהרט /פקסלים
השגת תכנות מונחה עצמים נכונה פירושה שעליך לדעת על ירושה וכיצד היא יכולה לפשט קידוד ולהפחית שגיאות.
קרא הבא
- תִכנוּת
- ג'אווה
- תכנות מונחה עצמים
Kadeisha Kean הוא מפתח תוכנה מלא סטאק וסופר טכני / טכנולוגי. יש לה יכולת מובהקת לפשט כמה מהמושגים הטכנולוגיים המורכבים ביותר; הפקת חומר שניתן להבין בקלות על ידי כל טירון טכנולוגי. היא נלהבת לכתוב, לפתח תוכנות מעניינות ולנסוע בעולם (באמצעות סרטי תעודה).
הירשם לניוזלטר שלנו
הצטרף לניוזלטר שלנו לקבלת טיפים טכניים, ביקורות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!
צעד אחד נוסף !!!
אנא אשר את כתובת הדוא"ל שלך בדוא"ל ששלחנו לך זה עתה.