האוניברסיטה העברית בירושלים

Slides:



Advertisements
Similar presentations
Object Oriented 33 MCSD DORON AMIR
Advertisements

ממיבחניםC שאלות ++.
תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
בתרגול הקודם הורשה: –ניתן להרחיב רק מחלקה אחת –כל מה שלא private – עובר בהורשה –המילה השמורה super –יצירת היררכיה –Object היא שורש ההיררכיה –דריסה אופרטור.
האוניברסיטה העברית בירושלים
Interface ממשקים 1. ראינו כי ניתן לשמור אובייקטים במערכים באותו אופן כמו משתנים רגילים. ננסה כעת לראות כיצד למיין מערך של אובייקטים מסוג מסוים. נשתמש.
1 תוכנה 1 תרגול 14 – סיכום. 2 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public.
תרגול 11 המשך תכנות מונחה עצמים 1. היום בתרגול מחלקות אבסטרקטיות ממשקים אופרטור instanceof 2.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
אוניברסיטת בן גוריון - מבוא למדעי המחשב 1 תרגול מספר 10  ממשקים o כללים בסיסיים o מימוש מספר ממשקים o דוגמת ממשק כחוזה  הורשה o כללים בסיסיים o דריסה.
15 Sorting1June Sorting CE : Fundamental Programming Techniques.
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים 1 הפניות.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 7 ISP דוגמא נוספת.
1 Abstract Classes האם קיים אובייקט בשם רהיט? האם קיים אובייקט בשם כלי תחבורה? האם קיים אובייקט בשם כלי כתיבה? האם קיים אובייקט בשם אדם? האם קיים אובייקט.
תוכנה 1 תבנית העיצוב Observer 1 שחר מעוז בית הספר למדעי המחשב אוניברסיטת תל אביב.
CS1101X: Programming Methodology Recitation 7 Arrays II.
Week 11 Introduction to Computer Science and Object-Oriented Programming COMP 111 George Basham.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
תכנון השעור מבוסס על שאלה 3 במבחן המסכם ( מועד א ' ) 2010.
Types in Java 8 Primitive Types –byte, short, int, long –float, double –boolean –Char Also some Object types: e.g. “String” But only single items. What.
1 מבוא למדעי המחשב הרצאה 21: Queue, Iterator & Iterable.
מבוא למדעי המחשב הרצאה 11: תכנות רקורסיבי 4 כולל מיון רקורסיבי 1.
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים עוברים לג ' אווה.
תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1 ואפליקציות ל- Windows Phone 8 Control (Part II)
Comparison-Based Sorting & Analysis Smt Genap
ADSA: Generics/ Advanced Data Structures and Algorithms Objective –to describe basic forms of generic classes, interfaces, and methods for searching.
© 2005 Pearson Education, Inc., Upper Saddle River, NJ. All rights reserved. Data Structures for Java William H. Ford William R. Topp Chapter 5 Generic.
1 תרגול 11: Design Patterns ומחלקות פנימיות 1 תוכנה 1.
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים פולימורפיזם מתקדם ממשקים בג ' אווה 1.
1 Principles of Computer Science I Honors Section Note Set 5 CSE 1341.
Insertion Sort while some elements unsorted: Using linear search, find the location in the sorted portion where the 1 st element of the unsorted portion.
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];
מחרוזות – הטיפוס String
תרגול 7: מנשקים, פולימורפיזם ועוד
Object Oriented Programming
תרגול מספר 9.
Object Oriented Programming
Array and List Algorithms
Operators Overloading
Alg2_1c Extra Material for Alg2_1
תרגול 7: מנשקים, פולימורפיזם ועוד
Object Oriented Programming
מחלקות classes.
תוכנה 1 תרגול 13 – סיכום.
תכנות מכוון עצמים ושפת JAVA
Static and enum קרן כליף.
יסודות מדעי המחשב – תרגול 4
תכנות מכוון עצמים בשפת JAVA
תרגול Introduction to C - Fall Amir Menczel.
ממשקים - interfaces איך לאפשר "הורשה מרובה".
מיונים וחיפושים קרן כליף.
תוכנה 1 בשפת Java שיעור מספר 5: "זרוק לו עצם"
בניית מחסנית סטטית Static Stack Implementation מורים מובילים תשע"ה
Arrays of Objects Fall 2012 CS2302: Programming Principles.
תכנות מכוון עצמים ושפת JAVA
תוכנה 1 תרגול 13 – סיכום.
AP Java Warm-up Boolean Array.
תוכנה 1 תרגול 13 – סיכום.
פולימורפיזם מתקדם ממשקים בC# עריכה ועיצוב: קרן הרדי
COMPUTER 2430 Object Oriented Programming and Data Structures I
Example. Sort {5, 1, 12, -5, 16, 2, 12, 14} using selection sort. Complexity analysis.
Algorithms Lakshmish Ramaswamy.
Object Oriented Programming
Podcast Ch22a Title: Array-based Binary Trees
Introduction to java Part I By Shenglan Zhang.
Presentation transcript:

האוניברסיטה העברית בירושלים פולימורפיזם מתקדם 1 ממשקים בג'אווה המרכז להוראת המדעים © האוניברסיטה העברית בירושלים

האוניברסיטה העברית בירושלים המשימה: מיון Class Sorter static void sort (int[ ] arr) static void sort (double[] arr) static void sort (String[] arr) static void sort (Date[] arr) המרכז להוראת המדעים © האוניברסיטה העברית בירושלים

המשימה:מיון – selection sort minNum 3 1 3 3 1 5 5 5 5 1 5 5 5 1 1 1 1 3 1 1 4 4 4 4 4 4 4 4 4 4 5 5 5 3 3 3 3 3 5 placeIndex 2 3 1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים

המשימה: מיון – selection sort public static void sort(int[] arr){ // the index of the minimum int minIndex; //while the unsorted part is not last place in list: for (int placeIndex = 0; placeIndex < arr.length-1; placeIndex++){ minIndex = findMinIndex(arr, placeIndex); swap(arr, minIndex, placeIndex); } //end of for } //end of method המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

המשימה: מיון – selection sort //swaps the arr[index1] with arr[index2] private static void swap (int[] arr, int index1, int index2){ int temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; } //search for the index of smallest number in the unsorted part of list: private static int findMinIndex(int[] arr, int placeIndex){ int minimum = arr[placeIndex]; int minIndex = placeIndex; for(int i = placeIndex+1; i < arr.length; i++){ if (arr[i]<minimum){ minimum = arr[i]; minIndex = i; return minIndex; המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

המשימה: מיון – selection sort /** This is a helper class that helps to sort arrays */ public class Sorter{ … /** sorts an array of integers from top to bottom */ public static void sort (int[] arr){ } /** sorts an array of Strings by lexicographical order */ public static void sort(String[ ] arr){ המרכז להוראת המדעים © האוניברסיטה העברית בירושלים

האוניברסיטה העברית בירושלים מיון מחרוזות public static void sort(int[] arr){ int minIndex; //while the unsorted part is not last place in list: for (int placeIndex = 0; placeIndex < arr.length-1; placeIndex++){ minIndex = findMinIndex(arr, placeIndex); swap(arr, minIndex, placeIndex); } //end of for } //end of method (String[] arr){ המרכז להוראת המדעים © האוניברסיטה העברית בירושלים

המשימה: מיון – selection sort //swaps the arr[index1] with arr[index2] private static void swap (int[] arr, int index1, int index2){ int temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] =temp; } //search for smallest number in the unsorted part of list: private static int findMinIndex(int[] arr, int index){ int minimum = arr[placeIndex]; int minIndex = placeIndex; for(int i= placeIndex; i<arr.length; i++){ if (arr[i] < minimum){ minimum = arr[i]; minIndex =i; return minIndex; (String[] arr, String (String[] arr, String < ?????? המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

האוניברסיטה העברית בירושלים האלמנט המשותף... ? מה משותף ל: String, int , double , Date ? ! כולם יכולים לתפקד כניתנים להשוואה (ולכן ניתן למיין אותם!) המרכז להוראת המדעים © האוניברסיטה העברית בירושלים

האוניברסיטה העברית בירושלים המטרה ברקע... sort(Date[ ] arr) static void sort(Comparable[ ] arr) sort(String[ ] arr) sort(double[ ] arr) sort(int[ ] arr) המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

האוניברסיטה העברית בירושלים ממשקים בג'אווה ממשק (interface): אוסף הצהרות על שיטות (ללא מימוש) המגדירות טיפוס התנהגות. ממשק יכול להכיל גם הצהרה על קבועים. מחלקות שונות יכולות לממש את הממשק. המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

האוניברסיטה העברית בירושלים דוגמה: הגדרת ממשק חדש public interface Comparable{ } שם הממשק הגדרת ממשק public boolean isLessThan (Object o); public boolean isEqualTo(Object o); הגדרת שיטות ללא מימוש המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

האוניברסיטה העברית בירושלים מימוש ממשקים – זכויות וחובות חובות המחלקה המממשת מימוש ממשק מהווה חתימה על חוזה: על מחלקה שמממשת אותו לממש את כל שיטות הממשק, על פי חתימתן המדויקת. המרכז להוראת המדעים © האוניברסיטה העברית בירושלים

האוניברסיטה העברית בירושלים דוגמה: מימוש הממשק public class Date implements Comparable{ private int day; private int month; private int year; … public boolean isEqual (Object o){ Date d2 = (Date)o; return (d2.day = = this.day) && (d2.month = = this.month) &&(d2.year = = this.year); } המילה השמורה implements הממשק אותו המחלקה מממשת המרכז להוראת המדעים © האוניברסיטה העברית בירושלים

האוניברסיטה העברית בירושלים דוגמה: מימוש הממשק public class Integer implements Comparable{ } /** returns true iff this Integer Object is smaller than given one*/ public boolean isLessThan (Object o){ int val2 = ((Integer)o).getValue( ); return this.value < val2; } public boolean isEqualTo (Object o){ int val2 = ((Integer)o).getValue( ); return this.value = = val2; //attributes: private int value; public Integer( int val){ this.value = val; } public int getValue( ){ return value; המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

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

האוניברסיטה העברית בירושלים המרות לטיפוס ממשק Comparable comp = new Comparable( ) Date myBirthDay = new Date(30,9,1976); Turtle t1 = new Turtle( ); Comparable comp = myBirthday; Comparable comp = t1; ! ממשק אינו מחלקה. לא ניתן ליצור ממנו עצמים חוקי: המרה כלפי מעלה, לממשק שהמחלקה מממשת ! המחלקה Trutle אינה מממשת את Comparable המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

האוניברסיטה העברית בירושלים הממשק כטיפוס מכיר רק את שיטות הממשק Date myBirthDay = new Date(30,9,1976); Comparable comp1 = myBirthday; comp1.isEqualTo(myBirthday); comp1.getDay( ); ((Date)comp1).getDay( ); חוקי: פנייה לשיטה של הממשק דרך טיפוס הממשק ! הממשק Comparable לא מכיר את השיטה חוקי: המרה כלפי מטה, בטרם פנינו לשיטה getDay( ) המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

מימוש של מספר מחלקות, וירושה: public class A public class A implements I public class A implements I, J, K public class A extends B implements I, J, K מחלקה מממשת ממשק מחלקה יכולה לממש מספר ממשקים מחלקה יורשת ומממשת ממשקים (אין קשר) המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

ממשקים ופולימורפיזם: מיון בגירסה כללית public static void sort(Comparable[] arr){ int minIndex; //while the unsorted part is not last place in list: for (int placeIndex = 0; placeIndex < arr.length-1; placeIndex++){ minIndex = findMinIndex (arr, placeIndex); swap (arr, minIndex, placeIndex); } //end of for } //end of method המרכז להוראת המדעים © האוניברסיטה העברית בירושלים

ממשקים ופולימורפיזם: מיון בגירסה כללית //swaps the arr[index1] with arr[index2] private static void swap (Comparable[] arr, int index1, int index2){ Comparable temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; } //search for smallest number in the unsorted part of list: private static int findMinIndex (Comparable[] arr, int placeindex){ Comparable minimum = arr[placeIndex]; int minIndex = placeIndex; for (int i = placeIndex; i<arr.length; i++){ if (arr[i].isLessThan(minimum)){ minimum = arr[i]; minIndex = i; return minIndex; המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

האוניברסיטה העברית בירושלים המטרה הושגה! sortDates(Date[ ] dates) static void sort(Comparable[ ] arr) sortStrings(String[ ] names) sortDouble(double[ ] arr) sortInts(int[ ] arr) המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

האוניברסיטה העברית בירושלים שימוש בשיטה הכללית: public static void main (String[] args){ String[] strArr = {“Yoel”, ”Sara”, “Moshe”}; Integer[] intArr = new Integer[3]; intArr[0] = new Integer (7); intArr[1] = new Integer (14)’ intArr[2] = new Integer (“9”); Sorter.sort(strArr); Sorter.sort(intArr); for (int i = 0; i < intArr.length ; i++){ System.out.println (strArr[i] + “-” + intArr[i]); } המרכז להוראת המדעים © האוניברסיטה העברית בירושלים

ירושה מול ממשקים: מי ומתי? ירושה מול ממשקים: מי ומתי? A תת מחלקה של המחלקה B A מממשת את הממשק I מייצג יחס "סוג של" (עיגול הוא סוג של צורה) מייצג יחס "מתפקד כ" (עיגול מתפקד כ"ניתן להשוואה" " ניתן לציור" וכו') ניתן לרשת רק ממחלקה אחת (בג'אווה אין ירושה מרובה) מחלקה אחת יכולה לממש ממשקים רבים גם אם B מופשטת, ניתן להגדיר בה שיטות ותכונות ב- I ניתן להגדיר רק קבועים ושיטות לא ממומשות B מייצגת את הפן העיקרי של A I מייצג רק פן אחד (אולי מתוך רבים) של A המרכז להוראת המדעים © האוניברסיטה העברית בירושלים המרכז להוראת המדעים, סתיו תשס"ב

האוניברסיטה העברית בירושלים UML Comparable (interface) Double המרכז להוראת המדעים © האוניברסיטה העברית בירושלים

האוניברסיטה העברית בירושלים מה כבר קיים ? – Java API Comparable - מה ההבדל בין Java API לשלנו? מי מממש אותו ? המרכז להוראת המדעים © האוניברסיטה העברית בירושלים