1 / 20

הכלה

הכלה. שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית. Reuse . אחד מהיתרונות של כתיבה נכונה בשפות מונחות עצמים זה היכולת שלנו לעשות שימוש חוזר בקוד שנכתב. הדוגמא הפשוטה ביותר של זה הוא שימוש במחלקה שכבר נכתב ושילובו בתוך המחלקה החדשה לדוגמא:. קשר הכלה כקשר has A.

darby
Télécharger la présentation

הכלה

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. הכלה שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית

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

  3. קשר הכלה כקשר has A כפי שראינו בדוגמא הקודמת – A car has A engine אם הגדרת מחלקה : class Engine {…} כאשר אני בא לבנות מכונית אני אשתמש במחלקה שהגדרתי קודם . class Engine{ private bool state; public void SwitchOn ( ){state = true;} public void SwitchOff () {state = false;} public bool IsOn( ) { return state;} }

  4. כעת נגדיר מחלקת מכונית: class Car} private Engine engine; private int noOfPlaces; public void SwitchOn( ){ engine.SwitchOn(); } } כלומר למרות שבניתי מחלקת מכונית, אני לא חייב לדעת את המבנה הפנימי של מחלקת מנוע אלא אני יכולה לעשות שימוש בו

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

  6. מאפיינים

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

  8. מה אנחנו עושים? הגדרנו עובד ויש לו את המאפיינים הבאים: • ת"ז עובד • שם עובד • תאריך לידה. נגדיר את זה כך ב-C# class Worker{ private int Id; private string name; private Date dob; הכלה

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

  10. לדוגמא: אני מעונין לדעת מי הם העובדים שנולדו באותו יום. כיצד ניתן לעשות ? אפשרות 1 return (worker1.getDOB( ).getYear( ) == worker2.getDOB( ).getYear( ) && worker1.getDOB( ).getMonth( ) == worker2.getDOB( ).getMonth( ) && worker1.getDOB( ).getDay( ) == worker2.getDOB( ).getDay( ) ) מימוש זה מחייב שלמשתמש יהיה היכרות חלקי עם מבנה התאריך ויכנס ללוגיקה.

  11. אפשרות 2: return worker1.getDOB( ).equals (worker2.getDOB( )); כאן אנחנו פטורים מלהבין כיצד מאורגן התאריך ואנחנו יכולים להיעזר בפעולה שכתובה במחלקת תאריך דוגמא שניה: איך כותבים ToString( ) עבור Worker? return “Worker name: “ + name + “dob : “ + dob.ToString ( ) ….

  12. איפה הבעיה? בנאי Worker: public Worker (int id; string name, Date dob){ this.id = id; this.name = name; this.dob = dob; } this.dob מכיל הפניה תאריך שנשלח עליו.

  13. מה יקרה כאן? public static void Main (string[] args){ Date date = new Date (1,1,1987); Worker w = new Worker (1,”Ami”,date); Console.WriteLine(w); date.set (1,2,1990); Console.WriteLine (w); }

  14. מה שיודפס: Id : 1 Name: Ami DOB : 1/1/1987 Id : 1 Name : Ami DOB : 1/2/1990 כלומר – ברגע ששינו את האובייקט date שינו את תאריך יום ההולדת של העובד. איך date 1| 1 | 1987 | Ami | 1 w

  15. תיקון הבעיה במקום לשמור הפניה לתאריך נשמור עותק של התאריך. public Worker (int id; String name, Date dob){ this.id = id; this.name = name; this.dob = dob.copy( ); } יצירת תאריך חדשה ושמירת ההפניה במאפיין DOB

  16. הכלה - aggregation מאפיין נוסף של העובד הוא המחלקה בו הוא עובד. לצורך כך נבנה מחלקה נוספת – Department האם ההתנהגות של department הוא דומה להתנהגות של date? המאפיין מסוג Date הוא ייחודי בעצם לכל אובייקט של worker (יתכן שחלק מהעובדים יוולדו באותו יום אבל זה במקרה) המאפיין מסוג Department הוא יכול להיות משותף לכמה עובדים.

  17. לפניך דוגמא: Department d1 = new Department ( 1, “R&D”); Worker w = new Worker (2, “Rachel”, new Date (2,3,1978), d1); System.out.println (w); d1.setName (“Research & Development”); גם כאן תחילה נדפיס ששם המחלקה הוא R&D אבל אח"כ הוא ישתנה והוא ישתנה אצל כל העובדים. סוג הקשר הוא "רופף" יותר והאובייקט d1 יכול להמשיך להתקיים גם ללא

  18. תרגיל נגדיר את המחלקות הבאות: כתובת: כתובת היא מחלקה המכילה את המאפיינים הבאים • שם רחוב • מספר בית • שם העיר • מיקוד השיטות למימוש: אחזר רחוב, אחזר מס' בית, אחזר עיר ואחזר מיקוד. שנה רחוב, שנה מס' בית, שנה עיר, שנה מיקוד toString( ), equals( ) , copy( )

  19. מחלקת בעל חשבון: המחלקה מכילה את הנתונים של בעל חשבון בבנק. המחלקה תכיל את המאפיינים הבאים: • מס' לקוח • שם לקוח • כתובת לקוח השיטות למימוש: • אחזר מס' לקוח, אחזר שם לקוח, אחזר כתובת לקוח • שנה שם לקוח, שנה כתובת • toString( ) , equals( )

  20. מחלקת חשבון: המחלקה מכילה את הנתונים של בעל חשבון בבנק. המחלקה תכיל את המאפיינים הבאים: • לקוח • יתרה השיטות למימוש: • אחזר לקוח, אחזר יתרה • הפקד כסף, משוך כסף, שנה לקוח • toString( ) , equals( )

More Related