ממשקים - interfaces איך לאפשר "הורשה מרובה".

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

Object Oriented 33 MCSD DORON AMIR
ממיבחניםC שאלות ++.
תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
מבוא למדעי המחשב לתעשייה וניהול
בתרגול הקודם הורשה: –ניתן להרחיב רק מחלקה אחת –כל מה שלא private – עובר בהורשה –המילה השמורה super –יצירת היררכיה –Object היא שורש ההיררכיה –דריסה אופרטור.
קורס Java מתקדם Design Patterns
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
האוניברסיטה העברית בירושלים
Interface ממשקים 1. ראינו כי ניתן לשמור אובייקטים במערכים באותו אופן כמו משתנים רגילים. ננסה כעת לראות כיצד למיין מערך של אובייקטים מסוג מסוים. נשתמש.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
מתמטיקה בדידה תרגול 3.
דוד שוורץ, עידן זק, נטע צור וחיה כהן. הפונקציונאליות : המשתמש יבחר קובץ שעליו הוא רוצה לבצע את האנליזה, וילחץ עליו עם כפתור ימני בעכבר. יפתח תפריט ובו.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
רקורסיות נושאי השיעור מהן רקורסיות פתרון רקורסיות : שיטת ההצבה שיטת איטרציות שיטת המסטר 14 יוני יוני יוני 1514 יוני יוני יוני 1514.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
1 Tirgul no. 14 Topics covered: H Test Questions H Review of important concepts.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
אוניברסיטת בן גוריון - מבוא למדעי המחשב 1 תרגול מספר 10  ממשקים o כללים בסיסיים o מימוש מספר ממשקים o דוגמת ממשק כחוזה  הורשה o כללים בסיסיים o דריסה.
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
ערכים עצמיים בשיטות נומריות. משוואה אופינית X מציין וקטור עצמי מציינת ערך עצמי תואם לוקטור.
1 מפרטים פורמאליים תרגול מספר 1 מהות הקורס:כח ביטוי. בעיות מעשיות (ולא הוכחות) מתרגל אחראי:שחר דג מתרגלת:אמיליה כץ אתר:
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
יחס סדר חלקי.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 7 ISP דוגמא נוספת.
1 Abstract Classes האם קיים אובייקט בשם רהיט? האם קיים אובייקט בשם כלי תחבורה? האם קיים אובייקט בשם כלי כתיבה? האם קיים אובייקט בשם אדם? האם קיים אובייקט.
1 מבוא למדעי המחשב רקורסיה. 2 רקורסיה היא שיטה לפתרון בעיות המבוססת על העיקרון העומד ביסוד אינדוקציה מתמטית: אם ידועה הדרך לפתור בעיה עבור המקרים הבסיסיים.
אתחול עצמים. אתחולים ובנאים יצירת מופע חדש של עצם כוללת: הקצאת זכרון, אתחול, הפעלת בנאים והשמה לשדות במסגרת ריצת הבנאי נקראים גם הבנאי/ם של מחלקת הבסיס.
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
המשך תכנות מונחה עצמים 1. היום בתרגול  הורשה  שיטות מיוחדות  פולימורפיזם 2.
Presentation by Gil Perry Supervised by Amos Fiat 1.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
1 מבוא למדעי המחשב הרצאה 21: Queue, Iterator & Iterable.
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים עוברים לג ' אווה.
תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1 ואפליקציות ל- Windows Phone 8 Control (Part II)
Costs and Filters Dr. Avi Rosenfeld Department of Industrial Engineering Jerusalem College of Technology
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים פולימורפיזם מתקדם ממשקים בג ' אווה 1.
מבנה נתונים או טיפוס נתונים מופשט חלק ב – פעולות על רשימה הוכן ע " י ולרי פקר דצמבר 2015.
1 תרגול 11: Design Patterns ומחלקות פנימיות אסף זריצקי ומתי שמרת 1 תוכנה 1.
1 נתבונן בפונקציה הבאה public static int min(int[] a,int n) { int min = a[0]; for (int i = 1; (i < n ) && (i < a.length) ; i++) if (min > a[i]) min = a[i];
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
עקרונות תכנות מונחה עצמים תרגול 11: OOP in C++. Outline  Where do the objects live ?  Inheritance  Slicing  Overriding vs Shadowing.
שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית
האוניברסיטה העברית בירושלים
תרגול 7: מנשקים, פולימורפיזם ועוד
Tirgul 12 Trees 1.
Operators Overloading
Formal Specifications for Complex Systems (236368) Tutorial #1
תרגול 7: מנשקים, פולימורפיזם ועוד
מחלקות classes.
תכנות מכוון עצמים ושפת JAVA
Static and enum קרן כליף.
תכנות מכוון עצמים ושפת JAVA
תכנות מכוון עצמים בשפת JAVA
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
הרצאה 21: Queue, Iterator & Iterable
ניתוח מערכות מידע תכנות ב C#
תכנות מכוון עצמים ושפת JAVA
תכנות מכוון עצמים ושפת JAVA
ירושה הגדרת קשר Is A.
פולימורפיזם מתקדם ממשקים בC# עריכה ועיצוב: קרן הרדי
Presentation transcript:

ממשקים - interfaces איך לאפשר "הורשה מרובה"

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

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

interface מאחר וניתן לרשת רק ממחלקה אחת, יש להגדיר משהו שיאפשר קשר בין המחלקות השונות. Interface מגדיר רשימת שיטות שחייבים להיות קיימים במחלקה המחליטה לרשת מה-interface. הוא בעצם הגדרת מחלקה אבסטרקטי טהור – כלומר הגדרת פעולות שאין עבור אף פעולה מימוש! נגדיר שעבור מרצה אנחנו חייבים להגדיר כמה שעות מלמד ואיזה מקצוע הוא מלמד ולכן נגדיר את הפעולות הבאות: public void setTeachingHours ( int hours); public int getTeachingHours( ); public String getTeachingSubject ( ); public void setTeachingSubject(String subject);

תחביר ה-interface interface Teach{ void setTeachingHours ( int hours); int getTeachingHours( ); string getTeachingSubject ( ); void setTeachingSubject(string subject); } כעת נחבר בין מחלקת מתרגל לבין ממשק Teach C# class Instructor :Student,Teach{ //אבל קבעתי חוזה עם הממשק ויש חובה לממש את כל השיטות private int teachingHours; private string subject; public Instructor (string name, int id, string dept, int year, string subject) : base (name,id,dept,year){ this.subject = subject; public void setTeachingHours(int hours) {this.teachingHours = hours;} public int getTeachingHours ( ) {return teachingHours; } public string getTeachingSubject ( ) { return subject;} public void setTeachingSubject (string subject) { this.subject = subject;}

ג'אוה תחביר ה-interface interface Teach{ public void setTeachingHours ( int hours); public int getTeachingHours( ); public String getTeachingSubject ( ); public void setTeachingSubject(String subject); } כעת נחבר בין מחלקת מתרגל לבין ממשק Teach class Instructor extends Student implements Teach{ / // יש כאן הורשה מרובה – מצד אחד אני מקושר עם המחלקה //ומצד שני גם מקושר למרצהPerson //אבל קבעתי חוזה עם הממשק ויש חובה לממש את כל השיטות private int teachingHours; private String subject; public Instructor (String name, int id, String dept, int year, String subject){ super (name,id,dept,year); this.subject = subject; public void setTeachingHours(int hours) {this.teachingHours = hours;} public int getTeachingHours ( ) {return teachingHours; } public String getTeachingSubject ( ) { return subject;} public void setTeachingSubject (String subject) { this.subject = subject;}

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

שימושים בממשק לא ניתן לייצור אובייקט מסוג מימשק אבל מותר לשמור אובייקט בתוך ממשק. לדוגמא: Person p = new Person (“Jack”,1); Person p1 = new Student (“Tom”,2,”Comp”, 2005); Person p2 = new Lecturer (“Sam”,3, “databases”,4); Person p3 = new Instructor (“Ruth”,4,”Comp”, 2003,”programming”,2); Teach[] teacher = {p2,p3}; דבר זה מתאפשר בגלל שהם שייכים לאותה "קבוצה" המכילה את הפעולות הקשורות למורה" הפעולות האפשריות לביצוע על ידי teacher הם כל פעולות הממשק בלבד

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

מציאת המשותף ניתנים למיון 1/5

תרגיל הגדר מחלקות – fraction, Comparable, SortArray

הורשה בממשקים גם בממשקים יש אפשרות שממשק יירש ממשק אחר. ממשק שיורש ממשק אחר – כלומר הוא כולל גם את החתימות של הממשק הראשון וגם את הממשקים של הממשק האחר. לדוגמא: interface ISmartTeach extends Teach{ // interface ISmartTeach : Teach public void setIQ (int iq); public int getIQ ( ); }

הורשת ממשקים פירוש הדבר הוא class Professor implements ISmartTeach // class Professor:ISmartTeach {…} המחלקה מממשת את כל הפעולות של Teach ועוד הפעולות החדשות שנוספו