O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

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

  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

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

  1. 1. ‫ממשקים‬-Interfaces‫בעלות‬ ‫מתודות‬ ‫של‬ ‫מירושה‬ ‫כתוצאה‬ ‫וקונפליקטים‬ ‫בעיות‬ ‫עוד‬ ‫לא‬ .‫המרובה‬ ‫ההורשה‬ ‫לנושא‬ ‫גאווה‬ ‫של‬ ‫הפתרון‬ ‫הוא‬ ‫ממשק‬.‫עבותה‬ ‫מחלקות‬ ‫היררכיית‬ ‫עם‬ ‫מיותרת‬ ‫התעסקות‬ ‫עוד‬ ‫לא‬ .‫שונות‬ ‫ממחלקות‬ ‫שונים‬ ‫ומימושים‬ ‫זהים‬ ‫שמות‬‫מיותר‬ ‫לרשת‬ ‫ניתן‬ ‫לא‬ ‫אמנם‬.‫ממשקים‬ ‫של‬ ‫מוגבל‬ ‫בלתי‬ ‫מס‬ ‫ליישם‬ ‫ניתן‬ ‫בהחלט‬ ‫אך‬ ,‫אחת‬ ‫ממחלקה‬:‫הבאים‬ ‫החוקים‬ ‫בה‬ ‫שמתקיימים‬ ‫מחלקה‬ ‫כזו‬ ,‫למחלקה‬ ‫ממשק‬ ‫לדמות‬ ‫ניתן‬‫כ‬ ‫מוגדרת‬ ‫להיות‬ ‫חייבת‬ ‫שלה‬ ‫מהמתודות‬ ‫ואחת‬ ‫אחת‬ ‫כל‬-public abstract‫כ‬ ‫מוגדר‬ ‫להיות‬ ‫חייב‬ ‫שלה‬ ‫מהמשתנים‬ ‫ואחד‬ ‫אחד‬ ‫כל‬-static final‫הוא‬ ‫הרעיון‬‫במחלקות‬ ‫ממומשים‬ ‫לראות‬ ‫שנרצה‬ )‫הגדרתן‬ ‫(שאת‬ ‫מתודות‬ ‫ועל‬ )‫נוכחותם‬ ‫(שאת‬ ‫משתנים‬ ‫על‬ ‫בממשק‬ ‫להצהיר‬.‫שהוגדרו‬ ‫בחוקים‬ ‫הממשק‬ ‫מאפייני‬ ‫יעמדו‬ ,‫הנ"ל‬ ‫השמורות‬ ‫במילים‬ ‫שימוש‬ ‫נעשה‬ ‫לא‬ ‫אם‬ ‫גם‬ .‫הממשק‬ ‫אותו‬ ‫את‬ ‫יישמו‬ ‫אשר‬‫מ‬ ‫זוהי‬ ‫שממשק‬ ‫הרי‬ ,‫אובייקטים‬ ‫נוצרים‬ ‫ממנה‬ "‫ל"שבלונה‬ ‫מחלקה‬ ‫דימינו‬ ‫אם‬‫תכונות‬ ‫של‬ ‫יותר‬ ‫עוד‬ ‫כללית‬ ‫שבלונה‬ ‫הגדרת‬ ‫עין‬.‫הממשק‬ ‫אותו‬ ‫את‬ ‫מיישמת‬ ‫שהיא‬ ‫תצהיר‬ ‫שהיא‬ ‫כך‬ ‫ע"י‬ ‫אליה‬ "‫"לאמץ‬ ‫יכולה‬ ‫מחלקה‬ ‫שכל‬ ,‫כזו‬ ,‫מחלקה‬ ‫ופעולות‬‫לחבילה‬ ‫להשתייך‬ ‫יכול‬ ‫ממשק‬ .‫אחרים‬ ‫ממשקים‬ ‫של‬ ‫הגדרתם‬ ‫את‬ ‫להרחיב‬ ‫יכול‬ ‫וממשק‬ ,‫מממשק‬ ‫אובייקט‬ ‫ליצור‬ ‫ניתן‬ ‫לא‬‫היררכיית‬ ‫של‬ ‫והחוקיות‬‫כאן‬ ‫גם‬ ‫עובדת‬ ‫במחלקות‬ ‫שראינו‬ ‫התיקיות‬–‫בקובץ‬ ‫ישמר‬ ‫ממשק‬ ‫קובץ‬ ,‫כלומר‬ ,‫הידור‬ ‫מבחינת‬ ‫גם‬‫סיומת‬ ‫עם‬java‫סיומת‬ ‫עם‬ ‫לקובץ‬ ‫ויהודר‬class.‫משתייך‬ ‫הוא‬ ‫אליה‬ ‫לחבילה‬ ‫בהתאם‬ ‫התיקיות‬ ‫היררכיית‬ ‫בתוך‬ ‫שישמר‬‫מוצהרו‬ ‫אשר‬ ‫הפעולות‬ ‫אותן‬ ‫כל‬ ‫את‬ ‫לממש‬ ‫החובה‬ ‫עליה‬ ‫חלה‬ ,‫ממשק‬ ‫מממשת‬ ‫שמחלקה‬ ‫ברגע‬‫מנת‬ ‫על‬ ‫הממשק‬ ‫באותו‬ ‫ת‬‫אבסטרקטית‬ ‫מתודה‬ ‫לפחות‬ ‫תכיל‬ ‫היא‬ ,‫המתודות‬ ‫כל‬ ‫את‬ ‫תממש‬ ‫לא‬ ‫היא‬ ‫באם‬ .‫הזו‬ ‫מהמחלקה‬ ‫אובייקט‬ ‫לייצר‬ ‫יהיה‬ ‫שניתן‬‫ע"י‬ ‫המממשת‬ ‫המחלקה‬ ‫של‬ ‫ההגדרה‬ ‫בשורת‬ ‫זאת‬ ‫לציין‬ ‫יש‬ ‫כך‬ ‫ובשל‬ ‫לאבסטרקטית‬ ‫כולה‬ ‫המחלקה‬ ‫את‬ ‫שהופך‬ ‫מה‬ ,‫אחת‬‫השמורה‬ ‫המילה‬ ‫הוספת‬abstract.‫שהמ‬ ‫לב‬ ‫נשים‬.‫מחדש‬ ‫והגדרה‬ ‫לדריסה‬ ‫ניתנים‬ ‫או‬ ,)‫הסופי‬ ‫המשתנה‬ ‫(ערכי‬ ‫שהם‬ ‫כפי‬ ‫לשימוש‬ ‫ניתנים‬ ‫שתנים‬‫במילה‬ ‫שימוש‬ ‫תוך‬ ,‫מחלקה‬ ‫שמוגדרת‬ ‫כשם‬ ‫תתבצע‬ ‫הממשק‬ ‫הגדרת‬interface‫המילה‬ ‫במקום‬class:public interface InterfaceName {static final varType varName1=value;static final varType varName2=value;public abstract returnType methodName1();public abstract returnType methodName2();}:‫הבא‬ ‫באופן‬ ‫יתבצע‬ ‫מחלקה‬ ‫ע"י‬ ‫הממשק‬ ‫אותו‬ ‫של‬ ‫ומימוש‬public class ClassName implements InterfaceName {varType varName1;varType final varName2=value;// ‫ניתן‬‫בממשק‬ ‫מהגדרתו‬ ‫ערכו‬ ‫את‬ ‫נקבל‬ .‫אותו‬ ‫להגדיר‬ ‫מבלי‬ ‫זה‬ ‫למשתנה‬ ‫לפנות‬public returnType methodName1() {}public returnType methodName2() {}}
  2. 2. .‫בממשק‬ ‫שהופיעו‬ ‫והמשתנים‬ ‫המתודות‬ ‫של‬ ‫דריסה‬ ‫מבצעים‬ ‫בעצם‬ ‫אנו‬ ,‫הממשק‬ ‫את‬ ‫מממשים‬ ‫אנו‬ ‫שכאשר‬ ‫נבחין‬‫הגדרנו‬ ‫עתה‬ ‫עד‬overriding.‫הנדרס‬ ‫לחתימת‬ ‫זהה‬ ‫תהיה‬ ‫הדורס‬ ‫שחתימת‬ ‫כתנאי‬ ‫שחייבנו‬ ‫כך‬,‫מאותחלים‬ ‫סופיים‬ ‫משתנים‬ ‫להציב‬ ‫עלינו‬ ‫יש‬ ‫הממשק‬ ‫שבהגדרת‬ ‫לב‬ ‫נשים‬ ,‫מעט‬ ‫משתנה‬ ‫הזו‬ ‫החוקיות‬ ‫ממשק‬ ‫של‬ ‫במימוש‬‫חייבות‬ ‫ולא‬ ‫מימוש‬ ‫להכיל‬ ‫יכולות‬ ‫מתודות‬ ,‫כן‬ ‫כמו‬ .‫עוד‬ ‫סופיים‬ ‫להיות‬ ‫חייבים‬ ‫אינם‬ ‫המשתנים‬ ‫המממשת‬ ‫במחלקה‬ ‫בעוד‬‫ל‬.‫אבסטרקטיות‬ ‫הישאר‬:‫המימוש‬ ‫על‬ ‫אז‬ ‫ורק‬ ‫הירושה‬ ‫על‬ ‫יוצהר‬ ‫קודם‬ ,‫אחרת‬ ‫ממחלקה‬ ‫יורשת‬ ‫גם‬ ,‫המממשת‬ ‫המחלקה‬ ‫אותה‬ ‫אם‬public class ClassName1 extends ClassName2 implements InterfaceName {}:‫כך‬ ‫תיראה‬ ‫ההגדרה‬ ,‫אחד‬ ‫ממשק‬ ‫יותר‬ ‫מממשת‬ ‫המחלקה‬ ‫אותה‬ ‫אם‬public class ClassName implements InterfaceName1, InterfaceName2, …, InterfaceNameN {}:‫אחר‬ ‫ממשק‬ ‫של‬ ‫הגדרתו‬ ‫את‬ ‫להרחיב‬ ‫יכול‬ ‫ממשק‬ ,‫כאמור‬public interface ExtendingInterface extends InterfaceName {}:‫מרובים‬ ‫ממשקים‬ ‫של‬ ‫הגדרתם‬ ‫את‬ ‫להרחיב‬ ‫ממשק‬ ‫יכול‬ ,‫כן‬ ‫כמו‬public interface ExtendingInterface extends InterfaceName1, InterfaceName2… {}‫להגדיר‬ ‫ניתן‬ :‫לדוגמה‬ ,‫טיפוס‬ ‫כאל‬ ‫תהיה‬ ‫לממשק‬ ‫ההתייחסות‬ ‫שכל‬ ,‫ומכאן‬ ‫חדש‬ ‫טיפוס‬ ‫של‬ ‫הגדרה‬ ‫מהווה‬ ‫הממשק‬ ‫הגדרת‬.‫הממשק‬ ‫מסוג‬ ‫פרמטרים‬ ‫לקבל‬ ‫וניתן‬ ‫הממשק‬ ‫מטיפוס‬ ‫חזרה‬ ‫ערך‬ ‫להחזיר‬ ‫ניתן‬ ,‫ממשק‬ ‫מטיפוס‬ ‫משתנה‬‫דרך‬ ‫גישה‬ ‫כאשר‬ ,‫הממשק‬ ‫אותו‬ ‫את‬ ‫שמיישמת‬ ‫ממחלקה‬ ‫שנוצר‬ ‫לאובייקט‬ ‫ברפרנס‬ ‫להחזיק‬ ‫יכול‬ ‫ממשק‬ ‫מטיפוס‬ ‫משתנה‬.‫המיישמת‬ ‫במחלקה‬ ‫שהוגדרו‬ ‫לכאלו‬ ‫ולא‬ ‫בממשק‬ ‫שהוגדרו‬ ‫ופעולות‬ ‫תכונות‬ ‫כלפי‬ ‫רק‬ ‫תאפשר‬ ‫זה‬ ‫משתנה‬‫הו‬ ‫אם‬ ‫גם‬ ,‫בו‬ ‫שמוגדרים‬ ‫המאפיינים‬ ‫את‬ ‫רק‬ "‫"לראות‬ ‫מסוגל‬ ‫ממשק‬ ‫מסוג‬ ‫משתנה‬ ,‫כלומר‬‫לאובייקט‬ ‫ברפרנס‬ ‫מחזיק‬ ‫א‬.‫יותר‬ "‫"משוכלל‬‫נבצע‬ ‫באם‬ ‫ורק‬ ,‫להכיל‬ ‫העתיד‬ ‫למשתנה‬ ‫המוכל‬ ‫האובייקט‬ ‫של‬ ‫הרפרנס‬ ‫טיפוס‬ ‫בין‬ ‫התאמה‬ ‫ויש‬ ‫במידה‬ ‫רק‬ ‫אפשרי‬ ‫ההיפך‬‫המרת‬casting‫את‬ ‫שמממשת‬ ‫מחלקה‬ ‫מסוג‬ ‫משתנה‬ ‫בתוך‬ ‫ממשק‬ ‫מסוג‬ ‫לאובייקט‬ ‫רפרנס‬ ‫להציב‬ ‫נרצה‬ ‫אם‬ ,‫כלומר‬ ,‫מתאימה‬‫חייבים‬ ‫נהיה‬ ,‫הממשק‬‫שהמשתנה‬ ‫ובלבד‬ ‫המממשת‬ ‫המחלקה‬ ‫לסוג‬ ‫ממשק‬ ‫מסוג‬ ‫האובייקט‬ ‫של‬ ‫הרפרנס‬ ‫של‬ ‫המרה‬ ‫לבצע‬‫לגבי‬ ‫וכמובן‬ ‫מורישה‬ ‫ממחלקה‬ ‫שיורשת‬ ‫מחלקה‬ ‫לגבי‬ ‫כנ"ל‬ .‫מממשת‬ ‫מחלקה‬ ‫מסוג‬ ‫לאובייקט‬ ‫ברפרנס‬ ‫מחזיר‬ ‫ממשק‬ ‫מסוג‬.‫אליו‬ ‫הרפרנס‬ ‫את‬ ‫רק‬ ‫אלא‬ ,‫האובייקט‬ ‫את‬ ‫משנה‬ ‫לא‬ ‫כמובן‬ ‫ההמרה‬ .‫המחלקה‬ ‫מאותה‬ ‫טיפוס‬‫ל‬ ‫ניתן‬‫השמורה‬ ‫המילה‬ ‫באמצעות‬ ‫זו‬ ‫התאמה‬ ‫בדוק‬instanceof.
  3. 3. :‫נסביר‬‫השמורה‬ ‫במילה‬ ‫להשתמש‬ ‫ניתן‬ ,‫מסוים‬ ‫ממשק‬ ‫שמיישמת‬ ‫ממחלקה‬ ‫נוצר‬ ‫אובייקט‬ ‫אם‬ ‫לדעת‬ ‫ע"מ‬instanceof:‫הבא‬ ‫באופן‬if(objectRef instanceof InterfaceName) ==true if it is==false if its not‫מרגע‬‫באופן‬ ‫זאת‬ ‫נעשה‬ .‫מחלקות‬ ‫של‬ ‫תכונות‬ ‫לסימון‬ "‫סימון‬ ‫"ממשק‬ ‫יצירת‬ ‫על‬ ‫לדבר‬ ‫גם‬ ‫נכון‬ ,‫בפנינו‬ ‫פרושה‬ ‫זו‬ ‫שאינדיקציה‬:‫הבא‬interface CanDoOperation {public abstract doOperation();}:‫בפנינו‬ ‫הניצבות‬ ‫אפשרויות‬ ‫שתי‬ ‫נציין‬ ,‫כך‬ ‫ומתוך‬‫ב‬ ‫להשתמש‬ ‫נוכל‬-instanceof‫באוביי‬ ‫לטפל‬ ‫ע"מ‬‫מסוימת‬ ‫בדרך‬ ‫מסוימים‬ ‫קטים‬‫כלשהי‬ ‫תכונה‬ ‫בעלת‬ ‫היא‬ ‫שמחלקה‬ ‫לסמן‬ ‫יהיה‬ ‫תפקידו‬ ‫שכל‬ ‫ריק‬ ‫ממשק‬ ‫להגדיר‬ ‫נוכל‬‫בהם‬ ‫למקרים‬ ‫הולם‬ ‫טיפול‬ ‫לתת‬ ,‫כלומר‬ ,‫ריצה‬ ‫בזמן‬ ‫חריגים‬ ‫של‬ ‫זריקה‬ ‫למנוע‬ ‫ע"מ‬ ‫זה‬ ‫במידע‬ ‫להשתמש‬ ‫נוכל‬instanceof‫אז‬ ‫(שהרי‬ ‫שקר‬ ‫ערך‬ ‫יחזיר‬casting‫ערך‬ ‫יחזיר‬ ‫בהם‬ ‫למקרים‬ ‫הולם‬ ‫טיפול‬ ‫ולתת‬ )‫למשל‬ ‫חוקי‬ ‫יהיה‬ ‫לא‬true‫את‬ ‫לבצע‬ ‫(ניתן‬.)‫ההמרה‬

×