חקר הכללה, התמחות ותלות ב- OOP

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

ב- OOP, בעיה מתפרקת למספר אובייקטים וכיצד הם קשורים זה לזה - תהליך המכונה דוגמנות נתונים. היחסים המהותיים בין האובייקטים כוללים: אסוציאציה, הכללה, התמחות, צבירה, תלות וקומפוזיציה. במאמר זה נדון ביחסי תלות וירושה ב- OOP עם דוגמאות קוד ב- C # להמחשת המושגים.

תלות

תלות היא קשר בין שניים או יותר אובייקטים בהם אובייקט תלוי באובייקט או האובייקטים האחרים לצורך יישומו. אם אחד מהאובייקטים האלה משתנה, האובייקט / ים האחרים יכולים להיות מושפעים. יחסי התלות בין שני אובייקטים או יותר מתוארים ב- UML באמצעות חצים מקווקו. במילים אחרות, כאשר מתקיים קשר תלות בין שניים או יותר אובייקטים, האובייקט צריך לדעת על האובייקט / ים האחרים שהוא תלוי בהם.

שקול את השיעורים BlogEntry and View. בעוד שהראשון מכיל את כל המידע הקשור שקשור לערכי הבלוג, האחרון דואג להציג את הנתונים שהתקבלו ממעמד BlogEntry בממשק המשתמש. לכן, מחלקת הצפייה תלויה במחלקת BlogEntry כדי להציג תכנים (ערכי בלוג) בממשק המשתמש. מכאן שקיים קשר תלות בין הכיתות View ו- BlogEntry. יחסי תלות מיוצגים ב- UML באמצעות חץ מקווקו.

public class BlogEntry

    {

        //Members of the BlogEntry class

    }

public class View

    {

        //Members of the View class

    }

הכללה והתמחות

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

ירושה מוגדרת כיכולת של מחלקה להרחיב מחלקה אחת או יותר (המכונה גם מחלקות בסיס). שים לב שהכללה היא הצורה החזקה ביותר של יחסי כיתה מכיוון שהשיעורים המשתתפים בקשר הכללה צמודים זה לזה - מרבית המורכבויות הפנימיות של כיתת ההורים נראות לכיתת הילדים.

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

הירושה היא מהסוגים הבאים:

  • יחיד
  • מרובות
  • רב-מישורי
  • היררכי
  • היברידי

ירושה יחידה היא צורת הירושה הפשוטה ביותר בה מעמד אחד מרחיב מעמד אחר. קטע הקוד הבא ממחיש צורת ירושה זו - שימו לב כיצד מחלקת BlogAuthor מרחיבה את מחלקת המחברים.

public class Author

    {

        //Members of the Author class

    }

public class BlogAuthor : Author

    {

        //Members of the BlogAuthor class

    }

בירושה מרובה יש לך מספר מחלקות בסיס שמהן נגזרת מחלקה. שים לב כי ירושה מרובה אינה נתמכת בשפות תכנות של OOP כמו Java או C #.

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

public class Person

    {

        //Members of the Person class

    }

public class Author : Person

    {

        //Members of the Author class

    }

public class BlogAuthor : Author

    {

        //Members of the BlogAuthor class

    }

בירושה היררכית יש לך מחלקות המייצגות מבנה היררכי באמצעות ירושה, בדומה לעץ משפחה. בסוג זה של ירושה, יש לך יותר מכיתת ילדים אחת עם אותו בסיס או כיתת הורים. במילים אחרות, זהו סוג של ירושה שבה מחלקה נגזרת אחת או יותר יש בסיס משותף או מעמד הורים.

ירושה היברידית היא סוג של ירושה בה שתי צורות ירושה או יותר משולבות לאחת. בעיקרו של דבר, סוג זה של ירושה הוא שילוב של שתי צורות ירושה או יותר ליצירת מבנה סגור. שים לב כי גם ירושה היברידית אינה נתמכת בשפות תכנות של OO כמו C # או Java.