Slide 1
|
|
- עברי זגורי
- לפני5 שנים
- צפיות:
תמליל
1 שיעור מספר 7: "אמא יש רק אחת" )הורשה I( שחר מעוז בית הספר למדעי המחשב
2 על סדר היום יחסים בין מחלקות ירושה כיחס is-a טיפוס סטטי וטיפוס דינמי המחלקה Object מחלקות מופשטות 2
3 מלבן צבעוני נרצה לבנות מחלקה המייצגת מלבן צבעוני שצלעותיו מקבילות לצירים נציג 3 גרסאות למחלקה, והחסרונות של כל גרסה ונעמוד על היתרונות לבסוף, נתמקד בגרסה השלישית )המשתמשת במנגנון הירושה של )Java ונחקור דרכה את מנגנון הירושה 3
4 package il.ac.tau.cs.software1.shapes; public class ColoredRectangle1 { private Color col; private IPoint topright; private IPoint bottomleft; private PointFactory factory; /** constructor using points */ public ColoredRectangle1 (IPoint bottomleft, IPoint topright, PointFactory factory, Color col) { this.bottomleft = bottomleft; this.topright = topright; this.factory = factory; this.col = col; /** constructor using coordinates */ public ColoredRectangle1 (double x1, double y1, double x2, double y2, PointFactory factory, Color col) { this.factory = factory; topright = factory.createpoint(x1,y1); bottomleft = factory.createpoint(x2,y2); this.col = col; 4
5 שאילתות צופות /** returns a point representing the bottom-right corner of the rectangle*/ public IPoint bottomright() { return factory.createpoint(topright.x(), bottomleft.y()); /** returns a point representing the top-left corner of the rectangle*/ public IPoint topleft() { return factory.createpoint(bottomleft.x(), topright.y()); /** returns a point representing the top-right corner of the rectangle*/ public IPoint topright() { return factory.createpoint(topright.x(), topright.y()); /** returns a point representing the bottom-left corner of the rectangle*/ public IPoint bottomleft() { return factory.createpoint(bottomleft.x(), bottomleft.y()); 5
6 שאילתות צופות /** returns the horizontal length of the current rectangle */ public double width(){ return topright.x() - bottomleft.x(); /** returns the vertical length of the current rectangle */ public double height(){ return topright.y() - bottomleft.y(); /** returns the length of the diagonal of the current rectangle */ public double diagonal(){ return topright.distance(bottomleft); /** returns the rectangle's color */ public Color color() { return col; 6
7 פקודות /** move the current rectangle by dx and dy */ public void translate(double dx, double dy){ topright.translate(dx, dy); bottomleft.translate(dx, dy); /** rotate the current rectangle by angle degrees with respect to (0,0) */ public void rotate(double angle){ topright.rotate(angle); bottomleft.rotate(angle); /** change the rectangle's color */ public void setcolor(color c) { col = c; 7
8 /** returns a string representation of the rectangle */ public String tostring(){ return "bottomright=" + bottomright() + "\tbottomleft=" + bottomleft + "\ttopleft=" + topleft() + "\ttopright=" + topright ; "\tcolor is: " + col ; הקוד לעיל דומה מאוד לקוד שכבר ראינו זהו שכפול קוד נוראי הספק צריך לתחזק קוד זה פעמיים כאשר מתגלה באג, או כשנדרש שינוי )למשל rotate לא שומר על הפרופורציה של המלבן המקורי(, יש לדאוג לתקנו בשני מקומות הדבר נכון בכל סדר גודל: פונקציה, מחלקה, ספרייה, תוכנה, מערכת הפעלה וכו'( 8
9 Just Do It ארגונים אשר אינם עושים שימוש חוזר בקוד רק כי הוא "לא נכתב אצלנו" נאלצים לחרוג מתחומי העיסוק שלהם לצורכי כתיבת תשתיות הדבר סותר את רעיון ההכמסה וההפשטה שביסודו של התכנות מונחה העצמים ומפחית את תפוקת הארגון 9
10 Just Do It בהינתן מחלקת המלבן שראינו בשיעורים הקודמים, ניתן לראות את המלבן הצבעוני כהתפתחות אבולוציונית של המחלקה ספק תוכנה מחויב כלפי לקוחותיו לתאימות אחורה compatibility( )backward כלומר קוד שסופק ימשיך להיתמך )לעבוד( גם לאחר שיצאה גרסה חדשה של אותו הקוד הדבר מחייב ספקים להיות עיקביים בשדרוגי התוכנה כדי להיות מסוגלים לתמוך במקביל בכמה גרסאות אחת הדרכים לעשות זאת היא ע"י שימוש חוזר באמצעות הכלה של מחלקות קיימות בקוד 10
11 package il.ac.tau.cs.software1.shapes; public class ColoredRectangle2 { private Color col; private Rectangle rect; /** constructor using points */ public ColoredRectangle2 (IPoint bottomleft, IPoint topright, PointFactory factory, Color col) { this.rect = new Rectangle(bottomLeft, topright, factory); this.col = col; /** constructor using coordinates */ public ColoredRectangle2 (double x1, double y1, double x2, double y2, PointFactory factory, Color col) { this.rect = new Rectangle(x1, y1, x2, y2, factory); this.col = col; 11
12 שאילתות צופות /** returns a point representing the bottom-right corner of the rectangle*/ public IPoint bottomright() { return rect.bottomright(); /** returns a point representing the top-left corner of the rectangle*/ public IPoint topleft() { return rect.topleft() ; /** returns a point representing the top-right corner of the rectangle*/ public IPoint topright() { return rect.topright() ; /** returns a point representing the bottom-left corner of the rectangle*/ public IPoint bottomleft() { return rect.bottomleft(); 12
13 שאילתות צופות /** returns the horizontal length of the current rectangle */ public double width(){ return rect.width(); /** returns the vertical length of the current rectangle */ public double height(){ return rect.height(); /** returns the length of the diagonal of the current rectangle */ public double diagonal(){ return rect.diagonal(); /** returns the rectangle's color */ public Color color() { return col; 13
14 פקודות /** move the current rectangle by dx and dy */ public void translate(double dx, double dy){ rect.translate(dx,dy); /** rotate the current rectangle by angle degrees with respect to (0,0) */ public void rotate(double angle){ rect.rotate(angle); /** change the rectangle's color */ public void setcolor(color c) { col = c; 14
15 /** returns a string representation of the rectangle */ public String tostring(){ return rect + "\tcolor is: " + col ; המחלקה ColoredRectangle2 מכילה Rectangle כשדה שלה המחלקה החדשה תומכת בכל שרותי המחלקה המקורית פעולות שניתן היה לבצע על המלבן המקורי מופנות לשדה rect delegation( - האצלה( הערה: בסביבות פיתוח מודרניות ניתן לחולל קוד זה בצורה אוטומטית! נשים לב כי המתודה tostring מוסיפה התנהגות למתודה tostring של המלבן המקורי )הוספת הצבע( הבנאים של המחלקה החדשה קוראים לבנאים של המחלקה Rectangle 15
16 שימוש חוזר ותחזוקה כעת קל יותר לתחזק במקביל את שני המלבנים כל שינוי במחלקה Rectangle יתבטא אוטומטית במחלקה ColoredRectangle2 וכך ישדרג הן את קוד לקוחות Rectangle והן את קוד לקוחות ColoredRectangle2 העיקביות בין שתי המחלקות מובנית ColoredRectangle2 הוא לקוח של,Rectangle ואולם נרצה לבטא יחס נוסף הקיים בין המחלקות ניזכר ביחסי המחלקות שבהם נתקלנו עד כה 16
17 יחסים בין מחלקות Association דו כיוונית: )הכרות, קשירות, שיתופיות( חד כיוונית: רפלקסיבית: 17
18 יחסים בין מחלקות Aggregation סוג של )מכלול( Association המבטא הכלה החלקים עשויים להתקיים גם ללא המיכל המיכל מכיר את רכיביו אבל לא להיפך בדרך כלל ל- Collection יש יחס כזה עם רכיביו 18
19 יחסים בין מחלקות Composition )הרכבה( מקרה פרטי של Aggregation שבו הרכיב תלוי במיכל )משך קיום למשל( בשיעור שעבר ראינו שניתן לבטא הרכבה ע"י שימוש בשדה מופע שטיפוסו הוא מחלקה פנימית, אולם זהו מקרה מאוד קיצוני של הרכבה )עם תלות הדוקה בין המחלקות( בשפת ++C מקובל לציין Composition ו- Aggregation ע"י עצמים מוצבעים ע"י עצמים מוכלים 19
20 Composition vs. Aggregation ההבדל בין יחסי הכלה ליחסי הרכבה הוא עדין ההבדל הוא קונספטואלי שכן היחס מתקיים בעולם האמיתי, ובשפת Java קשה לבטא אותו בשפת התכנות בין אותן שתי המחלקות יכולים להתקיים יחסים אחרים בהקשרים שונים 20
21 יחסים בין מחלקות - דיון איך נמפה יחסי ספק-לקוח ל- 3 היחסים לעיל? מה היחס בין מלבן ונקודותיו ( vs. aggregation )composition מה ההבדל ביחס שבין מלבן ונקודותיו ליחס שבין מלבן צבעוני ומלבן 21
22 יחס is-a כאשר מחלקה היא סוג של מחלקה אחרת, אנו אומרים שחל עליה היחס is-a class A is-a class B יחס זה נקרא גם Generalization יחס זה אינו סימטרי מלבן צבעוני הוא סוג של מלבן אבל לא להיפך ניתן לראות במחלקה החדשה מקרה פרטי, סוג-מיוחד-של המחלקה המקורית אם מתייחסים לקבוצת העצמים שהמחלקה מתארת, אז ניתן לראות שהקבוצה של המחלקה החדשה היא תת קבוצה של הקבוצה של המחלקה המקורית בדרך כלל יהיו למחלקה החדשה תכונות ייחודיות, המאפיינות אותה, שלא באו לידי ביטוי במחלקה המקורית )או שבוטאו בה בכלליות( 22
23 Is-a Example Clock settime() getseconds() getminutes() gethours() secondelapsed()... AlarmClock AnalogClock setalarm() setalarmstate() getsecondspointerangle() getminutespointerangle() gethourspointerangle() 23
24 מנגנון הירושה )הורשה?( Java מספקת תחביר מיוחד לבטא יחס is-a בין מחלקות )במקום הכלת המחלקה המקורית כשדה במחלקה החדשה( המנגנון מאפשר שימוש חוזר ויכולת הרחבה של מחלקות קיימות מחלקה אשר תכריז על עצמה שהיא extends מחלקה אחרת, תקבל במתנה )בירושה( את כל תכונות אותה מחלקה )כמעט( כאילו שהן תכונותיה שלה כל מחלקה ב Java מרחיבה מחלקה אחת בדיוק מממשת מנשקים )0 או יותר(( )ואולי 24
25 ירושה מ Rectangle package il.ac.tau.cs.software1.shapes; public class ColoredRectangle3 extends Rectangle { private Color col; // המחלקה ColoredRectangle3 יורשת מהמחלקה Rectangle נוסף על השדות והשרותים של Rectangle היא מגדירה שדה נוסף - col בנאים ומתודות סטטיות אינם נורשים 25
26 מונחי ירושה Rectangle public Rectangle(IPoint bottomleft, IPoint topright ) public double width() public double diagonal() public void translate(double dx, double dy) public void rotate(double angle) public IPoint bottomright()... הורה מחלקת בסיס (base) מחלקת על class) (super קשר ירושה ב- JAVA הרחבה (extension) ColoredRectangle public ColoredRectangle (IPoint bottomleft, ) public Color color() public void setcolor(color col)... צאצא מחלקה נגזרת (derived) תת מחלקה (subclass) 26
27 בנאים במחלקות יורשות מחלקות נבנות מלמעלה למטה )מההורה הקדמון ביותר ומטה( השורה הראשונה בכל בנאי כוללת קריאה לבנאי מחלקת הבסיס בתחביר: super(constructorargs) מדוע? אם לא נכתוב בעצמנו את הקריאה לבנאי מחלקת הבסיס יוסיף הקומפיילר בעצמו את השורה super() במקרה זה, קומפילציה אם למחלקת הבסיס אין בנאי ריק זוהי שגיאת 27
28 בנאים במחלקות יורשות /** constructor using points */ public ColoredRectangle3(IPoint bottomleft, IPoint topright, PointFactory factory, Color col) { super(bottomleft, topright, factory); this.col = col; /** constructor using coordinates */ public ColoredRectangle3(double x1, double y1, double x2, double y2, PointFactory factory, Color col) { super(x1, y1, x2, y2, factory); this.col = col; איך ניתן למנוע את שכפול הקוד בין הבנאים? 28
29 הוספת שרותים המחלקה היורשת יכולה להוסיף שרותים שלא הופיעו במחלקת הבסיס: נוספים )מתודות( /** returns the rectangle's color */ public Color color() { return col; /** change the rectangle's color */ public void setcolor(color c) { col = c; 29
30 דריסת שרותים )overriding( מחלקה יכולה לדרוס מתודה שהיא קיבלה בירושה שיקולי יעילות הוספת "תחומי אחריות" על המחלקה היורשת להגדיר מתודה בשם זהה ובחתימה זהה למתודה שהתקבלה בירושה )אחרת זוהי העמסה ולא דריסה( כדי להשתמש במתודה שנדרסה, ניתן להשתמש בתחביר: super.methodname(arguments) 30
31 דריסת שרותים )overriding( המחלקה ColoredRectangle3 רוצה לדרוס את tostring להוסיף לה גם את הדפסת צבע המלבן כדי למנוע שכפול קוד היא משרשרת את תוצאת המקורית )שנדרסה( ללוגיקה החדשה כדי tostring public String tostring() { return super.tostring() + "\tcolor is " + col; 31
32 דריסת שרותים public String tostring() { return tostring() + "\tcolor is " + col; מה יעשה הקוד הבא? 32
33 שימוש במלבן package il.ac.tau.cs.software1.shapes; public class Client { public static void main(string[] args) { IPoint tr = new PolarPoint(3.0, (1.0/4.0)*Math.PI); // theta now is 45 degrees IPoint bl = new CartesianPoint(1.0, 1.0); PointFactory factory = new PointFactory(); // or eg. (true,false) ColoredRectangle3 rect = new ColoredRectangle3(bl, tr, factory, Color.BLUE); rect.translate(10, 20); rect.setcolor(color.green); Inherited from Rectangle System.out.println(rect); Added in ColoredRectangle3 tostring was overridden in ColoredRectangle3 33
34 עניין של ספקים ירושה הוא מנגנון אשר בא לשרת את הספק כל עוד המחלקה מממשת מנשק שהוגדר מראש, ללקוח )והוא גם לא יודע( עם מי הוא עובד לא איכפת ברמה התחבירית ניתן לראות ירושה אם נחליף את שם השדה rect שב- super נקבל התנהגות דומה לזו של כסוכר תחבירי להכלה ColoredRectangle2 להיות ColoredRectangle3 ואולם מנגנון הירושה פרט לחסכון התחבירי כולל גם התנהגות פולימורפית )כפי שנדגים מיד( 34
35 עקרון ההחלפה עקרון ההחלפה פירושו, שבכל הקשר שבו משתמשים במחלקה המקורית ניתן להשתמש )לוגית( במחלקה החדשה במקומה נשתמש במנגנון הירושה רק כאשר המחלקה החדשה מקיימת יחס is-a עם מחלקה קיימת וכן נשמר עקרון ההחלפה אי שמירה על שני עקרונות אלו )יחס is-a ועקרון ההחלפה( מובילה לבעיות תחזוקה במערכות גדולות 35
36 פולימורפיזם וירושה package il.ac.tau.cs.software1.shapes; public class Client { public static void main(string[] args) { IPoint tr = new PolarPoint(3.0, (1.0/4.0)*Math.PI); // theta now is 45 degrees IPoint bl = new CartesianPoint(1.0, 1.0); PointFactory factory = new PointFactory(true, true); Rectangle rect = new ColoredRectangle3(bl, tr, factory, Color.BLUE); rect.translate(10, 20); rect.setcolor(color.green); // Compilation Error System.out.println(rect); 36
37 טיפוס סטטי ודינמי טיפוס של עצם: טיפוס הבנאי שלפיו נוצר העצם. קבוע ואינו משתנה לאורך חיי העצם. טיפוס זה לגבי הפניות (references) לעצמים מבחינים בין: טיפוס סטטי: הטיפוס שהוגדר בהכרזה על ההפניה להיות מנשק או מחלקה(. הטיפוס הדינאמי: טיפוס העצם המוצבע הטיפוס הדינאמי חייב להיות נגזרת של הטיפוס הסטטי )יכול Rectangle r = new ColoredRectangle3( ); טיפוס העצם הטיפוס הדינמי של ההפניה הטיפוס הסטטי של ההפניה 37
38 טיפוס סטטי ודינמי הקומפיילר הוא סטטי: שמרן, קונסרבטיבי הפעלת שרות על הפנייה מחייב את הגדרת השרות בטיפוס הסטטי של ההפנייה מנגנון זמן הריצה הוא דינאמי: פולימורפי, וירטואלי, dynamic dispatch השרות שיופעל בזמן ריצה הוא השרות שהוגדר בעצם המוצבע בפועל )הטיפוס הדינאמי של ההפנייה( Rectangle r = new ColoredRectangle3( ); טיפוס העצם הטיפוס הדינמי של ההפניה הטיפוס הסטטי של ההפניה 38
39 טיפוס סטטי ודינמי של הפניות void expectrectangle(rectangle r); void expectcoloredrectangle(coloredrectangle3 cr); void bar() { Rectangle r = new Rectangle(...); ColoredRectangle3 cr = new ColoredRectangle3(...); r = cr; expectcoloredrectangle(cr); expectrectangle(cr); expectrectangle(r); expectcoloredrectangle(r); The static type of r remains Rectangle. Its dynamic type is now ColoredRectangle3 Compilation Error although the dynamic type of r is ColoredRectangle3 39
40 טיפוס סטטי טיפוס סטטי של מחלקה צריך להיות הכללי האפשרי בהקשר שבו הוא מופיע ביותר עדיף מנשק, אם קיים מחלקה המרחיבה מחלקה אחרת מממשת אוטומטית את כל המנשקים שמומשו במחלקת הבסיס כלומר ניתן להעביר אותה בכל מקום שבו ניתן היה להעביר את אותם המנשקים 40
41 ניראות וירושה מה אם המחלקה ColoredRectangle3 מעוניינת לממש מחדש את המתודה tostring )ולא להשתמש במימוש הקודם כקופסא שחורה( רק כתרגיל זה לא רצוי ולא נחוץ קירוב ראשון: /** returns a string representation of the rectangle */ public String tostring(){ return "bottomright is " + bottomright() + "\tbottomleft is " + bottomleft + "\ttopleft is " + topleft() + "\ttopright is " + topright ; "\tcolor is: " + col ; השדות הוגדרו ב Rectangle כ private ועל כן הגישה אליהם אסורה 41
42 ניראות וירושה על אף שהמחלקה ColoredRectangle3 יורשת מהמחלקה Rectangle )ואף מכילה אותה!( אין לה הרשאת גישה לשדותיה הפרטיים של Rectangle כדי לגשת למידע זה עליה לפנות דרך המתודות הציבוריות: /** returns a string representation of the rectangle */ public String tostring(){ return "bottomright is " + bottomright() + "\tbottomleft is " + bottomleft() + "\ttopleft is " + topleft() + "\ttopright is " + topright() ; "\tcolor is: " + col ; 42
43 ניראות וירושה קיימים כמה חסרונות בגישה של מחלקה יורשת לתכונותיה הפרטיות של מחלקת הבסיס בעזרת מתודות ציבוריות: יעילות סרבול קוד לשם כך הוגדרה דרגת ניראות חדשה protected שדות שהוגדרו כ protected מאפשרים גישה מתוך: המחלקה המגדירה, מחלקות נגזרת, מחלקות באותה החבילה בשפות מונחות עצמים אחרות protected אינה כוללת מחלקות באותה החבילה 43
44 package il.ac.tau.cs.software1.shapes; public class Rectangle { ניראות וירושה protected IPoint topright; protected IPoint bottomleft; private PointFactory factory; // package il.ac.tau.cs.software1.otherpackage; public class ColoredRectangle3 extends Rectangle { /** returns a string representation of the rectangle */ public String tostring(){ return "bottomright is " + bottomright() + "\tbottomleft is " + bottomleft + "\ttopleft is " + topleft() + "\ttopright is " + topright ; "\tcolor is: " + col ; 44
45 ניראות וירושה Modifier: Accessed by class where member is defined Accessed by Package Members Accessed by Sub-classes Accessed by all other classes Private Yes No No No Package (default) Yes Yes No (unless sub-class happens to be in same package) No Protected Yes Yes Yes (even if sub-class & super-class are in different packages) No Public Yes Yes Yes Yes 45
46 private vs. protected יש מתכנתים שטוענים כי ניראות private סותרת את רוח ה OO וכי לו היתה ב Java ניראות protected אמיתית )ללא )package היה צריך להשתמש בה במקום private תמיד אחרים טוענים ההיפך שתי הגישות מקובלות ולשתיהן נימוקים טובים הבחירה בין שתי הגישות היא פרגמטית ותלויה בסיטואציה 46
47 private vs. protected בעד protected Rectangle,coloredRectangle is a הוא עומד ב"מבחן ההחלפה" ולכן לא הגיוני שלא יהיו לו אותן הזכויות. coloredrectangle has a Rectangle )מכיל בתוכו( ולכן יש צורך לאפשר לו גישה יעילה ופשוטה למימושו הפנימי 47
48 private vs. protected בעד :private כשם שאנו מסתירים מלקוחותינו את המימוש כדי להגן על שלמות המידע עלינו להסתיר זאת גם מצאצאנו איננו מכירים את יורשנו כפי שאיננו מכירים את לקוחותינו צאצא עם עודף כח עלול להפר את חוזה מחלקת הבסיס, להעביר את עצמו ללקוח המצפה לקבל את אביו ולשבור את התוכנה 48
49 מניעת ירושה מתודה שהוגדרה כ final לא ניתן יהיה לדרוס במחלקות נגזרת ממחלקה שהוגדרה כ final לא ניתן יהיה לרשת public final class String { דוגמא: המחלקה String היא.final מדוע? public class MyString extends String{ שגיאת קומפילציה 49
50 כולם יורשים מ Object אמרנו קודם כי כל מחלקה ב Java יורשת ממחלקה אחת בדיוק. ומה אם הגדרת המחלקה לא כוללת פסוקית? extends במקרה זה מוסיף הקומפיילר במקומנו את הפסוקית extends Object public class Rectangle { public class Rectangle extends java.lang.object { 50
51 כולם יורשים מ Object המחלקה Object מהווה בסיס לכל המחלקות ב Java )אולי בצורה טרנזיטיבית( ומכילה מספר שרותים בסיסיים שכל מחלקה צריכה )?( חלק מהמתודות קשורות לתכנות מרובה חוטים programming( )multithreaded וילמדו בקורסים מתקדמים 51
52 כולם יורשים מ Object 52
53 שיבוט והשוואה - clone הינה פעולה אשר יוצרת עותק זהה לזה של העצם המשובט ומחזירה מצביע אליו לא מובטח כי מימוש ברירת המחדל יעבוד אם העצם המבוקש אינו implements Cloneable equals בדר"כ מבטאת השוואה בין שני עצמים שדה-שדה. ע"י האופרטור '==' )השוואת מימוש ברירת המחדל של :Object הפניות( בהקשר הזה ניתן לדבר על deep_clone ו-, deep_equals 53
54 שיבוט עצמים x = y.clone () 54
55 שיבוט רדוד ושיבוט עמוק כדי לדון בסוגים של שיבוט עצמים נציג את המחלקה PERSON1 המייצגת אדם )איש או אישה( ששדות המופע שלו כוללים את שמו/ה האיש/ה שאותו/ה הוא/י אוהב/ת בעל/ת הבית שלו/ה האהוב ובעל הבית אף הם מטיפוס PERSON1 ויכולים להיות איש או אישה 55
56 שיבוט רדוד ושיבוט עמוק איך תשפיע הפעולה: b = a 56
57 שיבוט רדוד ושיבוט עמוק b איך תשפיע הפעולה: c = a.clone() 57
58 שיבוט רדוד ושיבוט עמוק איך תשפיע הפעולה: d = a.deep_clone() 58
59 deep_clone() אינה מתודה סטנדרטית של.Object בחלק מן המקרים נממש את clone במובן עמוק )ריקורסיבי( ולפעמים במובן רדוד 59
60 מנשקים ויחס ירושה כשם ששתי מחלקות מקיימות יחס ירושה כך גם 2 מנשקים יכולים לקיים את אותו היחס מחלקה המממשת מנשק מחויבת לממש את כל המתודות של אותו מנשק וכל המתודות שהוגדרו בהוריו לדוגמא: סוגי מחסניות <<interface>> IStack <<interface>> IBoundedStack <<interface>> IUnBoundedStack <<interface>> ISumStack 60
61 Collection Interfaces Unordered Rejects duplicates <<interface>> Collection <<interface>> Map Unordered Rejects duplicates <<interface>> Set <<interface>> List <<interface>> Queue <<interface>> SortedMap Ordered Allows duplicates FIFO Order Allows duplicates Ordered Rejects duplicates <<interface>> SortedSet Ordered Rejects duplicates 61
62 היררכיות ירושה מחלקות רבות במערכות מונחות עצמים הן חלק מ"עצי ירושה" או "היררכיות ירושה" שורש העץ מבטא קונספט כללי וככל שיורדים במורד עץ הירושה המחלקות מייצגות רעיונות צרים יותר למרות שבשפת Java בחרו לאמר שמחלקה יורשת מרחיבה מחלקת בסיס, הרי שבמובן מסוים היא מצמצמת את קבוצת העצמים שהיא מתארת 62
63 אמא יש רק אחת נדגיש, כי לכל מחלקה יש מחלקת בסיס אחת בדיוק, ועל כן גרף הירושה הוא בעצם עץ )ששורשו המחלקה )Object מימוש מנשקים אינו חלק ממנגנון הירושה זאת על אף שבין מנשקים לבין עצמם יש יחסי ירושה דוגמא לעץ ירושה: צורות גיאומטריות במישור 63
64 היררכית מחלקות ומנשקים <<interface>> Shape Ellipse Polygon Circle Trapezoid Parallelogram Triangle Diamond Rectangle 64
65 abstract classes למצולע )polygon( ולאליפסה יש צבע עץ הירושה כפי שמצויר בשקף הקודם, יגרום לשכפול קוד )השדה color והמתודות ישוכפלו ויתוחזקו פעמיים( מחד, לא ניתן להוסיף למנשק שדות או מימושי מתודות מאידך, אם ניצור לשתי המחלקות אב משותף מה יהיו מימושיו עבור היקף )דרך חישוב ההיקף עבור מצולע כלשהו ועבור אליפסה כלשהי שונה בתכלית( לשם כך קיימת המחלקה המופשטת class( )abstract מחלקה עם מימוש חלקי 65
66 abstract classes מחלקה מופשטת דומה למחלקה רגילה עם הסייגים הבאים: ניתן לא לממש מתודות שהגיעו בירושה ממחלקת בסיס או מנשקים ניתן להכריז על מתודות חדשות ולא לממשן לא ניתן ליצור מופעים של מחלקה מופשטת במחלקה מופשטת ניתן לממש מתודות ולהגדיר שדות מחלקות מופשטות משמשות כבסיס משותף למחלקות יורשות לצורך חיסכון בשכפול קוד נגדיר את המחלקה AbstractShape 66
67 היררכית מחלקות ומנשקים <<interface>> Shape <<abstract>> AbstractShape Ellipse Polygon Circle Trapezoid Parallelogram Triangle Diamond Rectangle 67
68 המנשק Shape public interface Shape { public double perimeter(); public void display(); public void rotate(ipoint center, double angle); public void translate(ipoint p); public Color getcolor(); public void setcolor(color c); //... 68
69 המחלקה המופשטת AbstractShape public abstract class AbstractShape implements Shape { protected Color color ; public Color getcolor() { return color ; public void setcolor(color c) { color = c ; המחלקה מממשת רק חלק מן המתודות של המנשק כדי לחסוך שכפול קוד ב"מורד ההיררכיה" את המתודות הלא ממומשות היא מציינת ב abstract public abstract void display(); public abstract double perimeter(); public abstract void rotate(ipoint center, double angle); public abstract void translate(ipoint p); 69
70 המחלקה המופשטת AbstractShape public abstract class AbstractShape implements Shape { protected Color color ; public Color getcolor() { return color ; אפשר לוותר על ההצהרה של מתודות לא ממומשות public void setcolor(color c) { color = c ; 70
71 הגדרת בנאי במחלקה מופשטת public abstract class AbstractShape implements Shape { protected Color color ; public AbstractShape (Color c) { this.color = c ; public Color getcolor() { return color ; public void setcolor(color c) { color = c ; ניתן )ורצוי!( להגדיר בנאים במחלקה מופשטת על אף שלא ניתן לייצר מופעים של המחלקה, הבנאי יקרא מתוך בנאים של המחלקות היורשות )קריאות )super ויחסכו בשכפול קוד בין היורשות. 71
72 המחלקה Polygon public class Polygon extends AbstractShape { public Polygon(Color c, IPoint vertices) { super(c); // add vertices to this.vertices... public double perimeter() {... public void display() {... public void rotate(ipoint center, double angle) {... public void translate(ipoint p) {... public int count() { return vertices.size(); private List<IPoint> vertices; 72
73 מחלקות מופשטות ומנשקים מנשקים: כאשר מגדירים מנשק ניתן למקבל את תהליך הפיתוח: צוות שיממש את המנשק במקביל לצוות שישתמש במנשק בפרט ניתן להגדיר תקנים על בסיס אוסף של מנשקים )למשל: )JDBC קוד לקוח שנכתב לעבוד עם מנשק כלשהו ימשיך לרוץ גם אם יועבר לו כארגומנט עצם ממחלקה חדשה המממשת את אותו המנשק כאשר מחלקה מממשת מנשק אחד או יותר, היא נהנית מכל פונקציות השרות אשר כבר נכתבו עבור אותם מנשקים )למשל: )Comparable הורשה: שימוש חוזר בקוד של מחלקה קיימת לצורך הוספה או שינוי פונקציונליות )ColoredRectangle, SmartTurtle )למשל: יצירת היררכיית טיפוסים, כאשר קוד משותף לכמה טיפוסים נמצא בהורה משותף שלהם )למשל )AbstractShape 73
74 לסיכום מנשק קוד לקוח מחלקת ספק מחלקת ספק 2 מחלקת ספק 3 74
75 לסיכום מנשק קוד לקוח מחלקה מופשטת מחלקת ספק מחלקת ספק 2 מחלקת ספק 3 75
76 מחלקות מופשטות ומנשקים האפשרות להגדיר מחלקות מופשטות ללא מימוש כלל )רק מתודות )abstract מטשטשת את ההבחנה בין מנשק ובין מחלקה מופשטת ואולם יש לזכור: מנשק: חיסכון אצל הלקוח מחלקה מופשטת )וירושה בכלל(: חיסכון אצל הספק בשפת ++C מסתדרים עם מחלקות מופשטות בלבד )העונות על שני הצרכים( כדי להגדיר מנשק ב ++C מגדירים מחלקה מופשטת שכל שרותיה מופשטים virtual( )pure ב Java לא ניתן להסתדר עם מחלקות מופשטות בלבד בשל העדר ירושה מרובה ב Java )על ירושה מרובה, בהמשך( 76
Microsoft PowerPoint - 06_inheritance_noBackgroung.ppt
מלבן צבעוני נרצה לבנות מחלקה המייצגת מלבן צ בע וני שצל עותיו מקבי לות לצירים ונעמוד על היתרונות גרסאות למחלקה, נציג 3 והחסרונות של כל גרסה נתמקד בגרסה השלישית (המשתמשת לבסוף, ונחקור דרכה את (Java במנגנון
קרא עודSlide 1
בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1- תרגול הורשה מחלקות אבסטרקטיות חריגים 2 ירושה ממחלקות קיימות ראינו בהרצאה שתי דרכים לשימוש חוזר בקוד של מחלקה קיימת: הכלה + האצלה הכלה )aggregation( במחלקה
קרא עודSlide 1
בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1 תרגול מספר 9: הורשה מחלקות אבסטרקטיות ואתחול עצמים 2 ירושה ממחלקות קיימות ראינו בהרצאה שתי דרכים לשימוש חוזר בקוד של מחלקה קיימת: הכלה + האצלה הכלה כאשר
קרא עודMicrosoft PowerPoint - lec9.ppt
ת כנ ות מונ ח ה עצמי ם בשפת + +C ירוש ה אוהד ברזילי אונ יברסיטת תל אביב ירוש ה המצגת מכילה קטעים מתוך מצגת של פרופ' עמירם יהודאי ע"פ הספר: Object-Oriented Software Construction, 2nd edition, by Bertrand
קרא עודSlide 1
מבוא למדעי המחשב משפחות של מחלקות ומחלקות מופשטות תזכורת בשיעור הקודם ראינו מחלקה של Student והרחבה שלה למחלקה של Milgae למעשה Student יכול לעמוד בראש היררכיה שלמה של מחלקות שונות של סטודנטים למשל, בנוסף
קרא עודMicrosoft PowerPoint - lec9.ppt
תכ נות מונח ה עצמים בשפת ++C ירו שה אוה ד ברזילי אוני ברסיטת תל אביב ירו שה המצגת מכילה קטעים מתוך מצגת של פרופ' עמירם יהודאי ע"פ הספר: Object-Oriented Software Construction, 2nd edition, by Bertrand Meyer
קרא עודמבוא למדעי המחשב
מבוא למדעי המחשב המחלקה Object תוכן עניינים Object הורשה והמחלקה ערך שם טיפוס DynamicIntArray da data size incrementsize DynamicArray תזכורת - Object[] data; int size; int incrementsize; DynamicArray זה
קרא עודMicrosoft PowerPoint - lec10.ppt
תכנו ת מ ונחה ע צמ י ם בשפת ++C אוהד ברזילי אוניברסיטת תל אביב ירו ש ה מרו בה המצגת מכילה קטעים מתוך מצגת של פרופ' עמירם יהודאי ע"פ הספר: Object-Oriented Software Construction, 2nd edition, by Bertrand
קרא עודSlide 1
1 אובייקטים היום בתרגול: 2.)objects מחלקות )classes( ואובייקטים )מופעים, )fields( שדות המחלקה שיטות הכמסה )methods של מחלקה. ( class מחלקה - עד עכשיו השתמשנו בעיקר בטיפוסים מובנים ופונקציות המבצעות חישובים
קרא עודMicrosoft PowerPoint - rec8.ppt
על טיפ ו סי ם וירו שה תרגול אוהד ברזילי אונ יברסיטת תל אביב תנ אי ק ד ם מופ שט תנאי קדם מופשט ראינו שבקבלנות משנה החוזה של המחלקה היורשת חייב לקיים 3 עקרונות: תנאי קדם יכולים להיות חלשים תנאי בתר יכולים
קרא עודלנץ קרן מרצה: תכנותמונחהעצמים) ( יוםשישי 15 אוקטובר 0202 ב מועד 0202, אביב סמסטר סמסטר סוף מבחן גוטמן אייל רביב, אריאל משנה, אלון מתרגלים: הנחי
לנץ קרן מרצה: תכנותמונחהעצמים) 027622 ( יוםשישי 15 אוקטובר 0202 ב מועד 0202, אביב סמסטר סמסטר סוף מבחן גוטמן אייל רביב, אריאל משנה, אלון מתרגלים: הנחיות:.1.2.3.4.5.6.7 השאלות. כל על לענות עליכם משקל. שוות
קרא עודMicrosoft PowerPoint - rec3.ppt
תכנו ת מונח ה עצ מים משתני מחלקה, עצמים מוכלים ועצמים מוצבעים א וה ד ברז יל י א ונ יברס י ט ת תל אביב משתנ י מח ל קה Static Members משתני מחלקה members) (static משתנים סטטיים מוגדרי ם בתוך מח לקה ואולם
קרא עודPowerPoint Presentation
תוכנה 1 תרגול 1: סביבת העבודה ומבוא ל- Java אלכסיי זגלסקי ויעל אמסטרדמר 1 בירוקרטיה אלכסיי זגלסקי שעת קבלה: שני 13:00-14:00, בתיאום מראש משרד: בניין הנדסת תוכנה, חדר 209 יעל אמסטרדמר שעת קבלה: חמישי 15:00-16:00,
קרא עודיוםראשון, 02 ליולי 2014 סמסטר סוף מבחן )236703( עצמים מונחה תכנות - א' מועד 2014, אביב סמסטר קמחי יחיאל ד"ר מרצה: מסינג מיטל עבדאלקאדר, כרם גלעד, ערן
יוםראשון, 02 ליולי 2014 סמסטר סוף מבחן )236703( עצמים מונחה תכנות - א' מועד 2014, אביב סמסטר קמחי יחיאל ד"ר מרצה: מסינג מיטל עבדאלקאדר, כרם גלעד, ערן מתרגלים: הנחיות: השאלות. כל על לענות עליכם משקל. שוות
קרא עודPowerPoint Presentation
תוכנה תרגול 7 :מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה == vs equals Point p = new Point(,2) Point p2 = new Point(,2) p == p2 p.equals(p2) מתי נכון להשתמש בכל אחד מהם? שימו לב, במחלקה שכתבתם בעצמכם
קרא עודמבוא למדעי המחשב
מבוא למדעי המחשב תכנות מונחה אובייקטים תוכן עניינים טיפוסי נתונים מורכבים המחלקה String תזכורת לשימוש שעשינו במחלקה String str = new String( Hello ); s.o.p(str.tostring()); s.o.p(str.charat(4)); s.o.p(str.equals(
קרא עודמבוא למדעי המחשב
מבוא למדעי המחשב מחרוזות, חתימה של פונקציה ומעטפות תוכן עניינים טיפוסים מורכבים טיפוסים מורכבים ערך שם טיפוס 12 m int undef. x boolean true y boolean arr int[] כאלה שעשויים להכיל יותר מערך פרימיטיבי אחד
קרא עודתכנות מונחה עצמים א' – תש"ע
1 תכנות מונחה עצמים והנדסת תוכנה תשע"ו 2 בנאי העתקה בניית העתק של אובייקט קיים. בניית העתק בעת העברת אובייקט לפונקציה. בניית העתק בעת החזרת אובייקט מפונקציה. ניתן להגדיר בנאי העתקה. אם לא מגדירים, אז הקומפיילר
קרא עוד1 תוכנה 1 תרגיל מספר 7 מנשקים Interfaces הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה- moodle ב
1 תוכנה 1 תרגיל מספר 7 מנשקים Interfaces הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה- moodle בלבד.(http://moodle.tau.ac.il/) יש להגיש קובץ zip יחיד
קרא עודעוצמת ההורשה מה הופך את ההורשה לכלי כל כך עוצמתי? מעבר לכך שהוא מקל בהגדרת מחלקות חדשות על סמך מחלקות קיימות, יש לנו אפשרות להתייחס לאובייקט מסויים בכ
עוצמת ההורשה מה הופך את ההורשה לכלי כל כך עוצמתי? מעבר לכך שהוא מקל בהגדרת מחלקות חדשות על סמך מחלקות קיימות, יש לנו אפשרות להתייחס לאובייקט מסויים בכמה אופנים. בואו ניקח מחלקת צעצוע. אנחנו מעונינים להגדיר
קרא עודPowerPoint Presentation
== vs equals תוכנה תרגול 7 :מנשקים, פולימורפיזם ועוד Point p = new Point(,) Point p = new Point(,) p == p p.equals(p) מתי נכון להשתמש בכל אחד מהם? שימו לב, במחלקה שכתבתם בעצמכם יש לכתוב מתודת equals על
קרא עודמבוא לתכנות ב- JAVA תרגול 11
מבוא לתכנות ב- JAVA תרגול 11 רשימה מקושרת אוסף סדור של איברים מאותו טיפוס. קודקוד ברשימה )Node( מכיל את המידע + הצבעה לקודקוד הבא ברשימה data next first רשימה :)List( מיוצגת ע"י מצביע לאיבר הראשון ברשימה
קרא עודאוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד
אוניברסיטת בן גוריון בנגב תאריך המבחן: 29.01.19 שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות 202.1.9031 מס' הקורס : מיועד לתלמידי : הנדסת תעשיה וניהול שנה תשע"ט א' סמ' א' מועד 3 שעות משך
קרא עודמבוא למדעי המחשב
מבוא למדעי המחשב גרפים 1 תוכן עניינים סיכום ביניים מה היה לנו? מושג האלגוריתם, תכנות פרוצדורלי הכרות עם בעיות במדעי המחשב הכרות עם בעיות ברקורסיה מתקדמת (כולל (memoization תכנות מונחה עצמים (מחלקה, הורשה,
קרא עודMicrosoft PowerPoint - lec2.ppt
מרחב הש מות (namespace) אוהד ברזילי אוניברסיטת תל אביב מה בתו כנית? לקוח וס פק במערכת תוכנה ממשקים הכרת מרחב השמות מניעת תלות פוטנציאלית בין רכיבים במערכת ע"י עיצוב חלופי של מבנה הממשקים 2 א ונ י ב רס
קרא עודתוכן העניינים
הוצאת חושבים קדימה הילה קדמן חלק ב יעוץ מקצועי: חיים אברבוך מותאם לתכנית הלימודים החדשה בבתי הספר התיכוניים מהדורה חמישית הוצאת חושבים קדימה ת.ד. 1293 רעות 71908 www.kadman.net הילה קדמן 0522 525527 kadman11@gmail.com
קרא עוד1
מבחן סיכום לקורס " עקרונות תכנות מונחה עצמים " תאריך הבחינה: 23.07.2017 4 שמות המרצים: ד"ר עזאם מרעי שם הקורס: עקרונות תכנות מונחה עצמים מספר הקורס: 202-15181 שנה: 2017 סמסטר: ב' מועד: ב' משך הבחינה: שלוש
קרא עודPowerPoint Presentation
תוכנה 1 תרגול 1: סביבת העבודה ומבוא ל- Java 1 מנהלות אתר הקורס: http://courses.cs.tau.ac.il/software1/1516b/ מתרגלים: ברית יונגמן )שעת קבלה: שלישי ב- 8:00 בתיאום מראש( לנה דנקין )שעת קבלה: שלישי ב- 17:00,
קרא עודPowerPoint Presentation
תכנות מתקדם בשפת Java אוניברסיטת תל אביב 1 תוכנה 1 תרגול 3: עבודה עם מחרוזות )Strings( מתודות )Methods( 1 תכנות מתקדם בשפת Java אוניברסיטת תל אביב 2 מחרוזות )STRINGS( 3 מחרוזות String s = Hello ; מחרוזות
קרא עודPowerPoint Presentation
תוכנה 1 Generics תרגול - 1 תכנות גנרי תמיכה בתכנות גנרי נוספה בגרסה 5 ניתן להגדיר מחלקות ושירותים גנריים מונע שכפול קוד )מוכללים( ניתן לכתוב תוכניות שאינן תלויות בטיפוסי המשתנים מאפשר בטיחות טיפוסים מנגנון
קרא עודמהוא לתכנות ב- JAVA מעבדה 3
מבוא לתכנות ב- JAVA מעבדה 3 נושאי התרגול לולאות ניפוי שגיאות לולאות - הקדמה כיצד הייתם כותבים תוכנית שתדפיס את המספרים השלמים בין 1 ל- 100 בעזרת הכלים שלמדתם עד עתה? חייבת להיות דרך אחרת מאשר לכתוב 100
קרא עודאוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ
אוניברסיטת בן גוריון בנגב תאריך המבחן: 12.02.17 שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: 202.1.9031 מס' הקורס : הנדסת תעשיה וניהול מיועד לתלמידי : א' מועד א' סמ' שנה תשע"ד 3 שעות משך
קרא עודתרגול 1
מבוא למדעי המחשב 2019 תרגול 5 מחרוזות, חתימות ורקורסיה מחרוזות רצף של תווים רקורסיה קריאה של מתודה לעצמה באופן ישיר או עקיף ראינו בהרצאה מחרוזות: תווים, חתימות: העמסה- String,הצהרה, overloading אתחול רקורסיה:
קרא עודסדנת תכנות ב C/C++
פקולטה: מדעי הטבע מחלקה: מדעי המחשב שם הקורס: מבוא למחשבים ושפת C קוד הקורס: 2-7028510 תאריך בחינה: 15.2.2017 משך הבחינה: שעתיים שם המרצה: ד"ר אופיר פלא חומר עזר: פתוח שימוש במחשבון: לא הוראות כלליות:
קרא עודTutorial 11
מבוא לשפת C תרגול 8: מערכים רב-ממדיים תרגילים בנושא מערכים ורקורסיה מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקנשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב" נכתב ע"י טל כהן, עודכן ע"י
קרא עודPowerPoint Presentation
1 תוכנה 1 תרגול 1: מנהלות, סביבת העבודה ומבוא ל- Java 1 2 מנהלות I מתרגלים: יעל אמסטרדמר )שעת קבלה: חמישי ב- 12, בתיאום מראש( דביר נתנאלי )שעת קבלה: רביעי ב- 17, בתיאום מראש( http://courses.cs.tau.ac.il/software1/1415a
קרא עודMicrosoft PowerPoint - rec1.ppt
תכנות מונחה עצמים בשפת ++C תר גול מ ספר 1 אוהד ב ר זילי אוניברסיטת תל א ביב חדש חדיש ומחודש תוספות של + +C לשפ ת C 1 #include Hello World using namespace std; int main() cout
קרא עודPowerPoint Presentation
תוכנה 1 3 תרגול מס' מתודות ותיכון לפי חוזים חוזה בין ספק ללקוח חוזה בין ספק ללקוח מגדיר עבור כל שרות: תנאי ללקוח - "תנאי קדם" precondition - - תנאי לספק "תנאי אחר".postcondition לקוח ספק 2 תנאי קדם )preconditions(
קרא עודתוכן העניינים
הוצאת חושבים קדימה הילה קדמן # חלק ב יעוץ מקצועי: חיים אברבוך מותאם לתכנית הלימודים החדשה בבתי הספר התיכוניים מהדורה חמישית הוצאת חושבים קדימה ת.ד. 1293 רעות 71908 www.kadman.net הילה קדמן 0522 525527
קרא עודמבוא למדעי המחשב
מבוא למדעי המחשב שימוש במחסנית - מחשבון תוכן עניינים prefix כתיבת ביטויים ב-,infix ו- postfix postfix prefix,infix ביטויים ב- כתיבת ו- infix נוסח כתיבה ב- (operator אנו רגילים לכתוב ביטויים חשבוניים כדוגמת
קרא עודPowerPoint Presentation
תוכנה 1 אוניברסיטת תל אביב INTERFACES תרגול מס' 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה מנשקים )Interfaces( 2 מנשקים מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות
קרא עודתורת הקומפילציה
תורת הקומפילציה תרגיל בית 2 הוראות לתרגיל 2 בשפת MINI-PASCAL הפרוייקט המצורף הינו קוד שלד של מהדר לשפת mini-pascal עליכם לממש בסביבת (Eclipse (Java את הפונקציות המתאימות לפי החומר שנלמד בהרצאה ע"מ שהמהדר
קרא עודמשימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק
משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות 2 הפשטה שאלות כצעד ראשון נפתור בעיה הרבה יותר פשוטה האם כבר
קרא עודSlide 1
מבוא לתכנות ב- JAVA תרגול 5 מה בתרגול מחרוזות מערכים דו ממדיים מחרוזות (Strings) מחרוזת היא רצף של תווים. immutable על מנת ליצור ולטפל במחרוזות נשתמש במחלקה String למחלקה String מתודות שונות שמאפשרות פעולות
קרא עודמס' סידורי: ת.ז.: עמוד 1 מתוך 20 בחינה בתוכנה 1 סמסטר ב', מועד א',תשס"ט 5/7/2009 וולף, ליאור ליאור שפירא, נעמה מאיר, מתי שמרת הוראות )נא לקרוא!( משך ה
מס' סידורי: עמוד 1 מתוך 20 בחינה בתוכנה 1 סמסטר ב', מועד א',תשס"ט 5/7/2009 וולף, ליאור ליאור שפירא, נעמה מאיר, מתי שמרת הוראות )נא לקרוא!( משך הבחינה שלוש שעות - חלקו את זמנכם ביעילות. יש לענות על כל השאלות.
קרא עודמבוא למדעי המחשב
מבוא למדעי המחשב הממשקים Iterable,Set ו- Iterator תוכן עניינים מבנה נתונים מבנה נתונים מבנה נתונים הוא container של עצמים שמוגדרות עליו מספר פעולות למשל קבוצה של עצמים (אוסף ללא חזרות) עם הפעולות: הוספת
קרא עודPowerPoint Presentation
מבוא למדעי המחשב תירגול 6: כתובות ומצביעים 1 תוכנייה מצביעים מצביעים ומערכים, אריתמטיקה של מצביעים 2 3 מצביעים תזכורת- כתובות זיכרון הזיכרון כתובת התא #1000 #1004 #1008 ערך השמור בתא תא 10-4 לא מאותחל
קרא עודתשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(
תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(http://mdle.tau.ac.il/) בלבד הגשת התרגיל תעשה במערכת ה- mdle aviv
קרא עודאיטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodl
איטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodle בלבד.(http://moodle.tau.ac.il/) יש להגיש קובץ zip
קרא עודתרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש
תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש המתרגם משימה: תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם 2 שאלות האם כבר יש
קרא עודמבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו
מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו 4 דפי נוסחאות. בדקו שכל העמודים ברשותכם. ב. משך המבחן
קרא עודמבוא לתכנות ב- JAVA תרגול 7
מבוא לתכנות ב- JAVA תרגול 8 תזכורת - מבנה של פונקציה רקורסיבית.2 פונקציה רקורסיבית מורכבת משני חלקים עיקריים 1. תנאי עצירה: מקרה/מקרים פשוטים בהם התוצאה לא מצריכה קריאה רקורסיבית לחישוב צעד רקורסיבי: קריאה
קרא עודMicrosoft PowerPoint - 10_threads.ppt
נוש אים מתקדמים ב Java תכ נות מ ר ובה חו ט י ם אוהד ברזילי אוניברסיטת תל אביב מק בי ל יות ריבוי מעבדים processors) (multi זמן עיבוד slicing) (time ל עו מת חלוק ת רמת התהליך (multithreading) ההפעלה processes)
קרא עודתרגול 1
מבוא למדעי המחשב 2019 תרגול 12 מחסנית )Stack( memoization ראינו בהרצאה מחסנית Infix/Postfix Notations בתרגול היום מחסנית בדיקת איזון סוגריים בביטוי אריתמטי מימוש תור באמצעות מחסנית memoization דוגמאות
קרא עודתרגול מס' 1
תרגול 6 הסתעפויות 1 מבוסס על שקפים מאת יאן ציטרין קפיצות לא מותנות Unconditional Branch br label PC לאחר ה- fetch של פקודת ה- branch PC לאחר הביצוע של פקודת ה- branch pc label br label הקפיצה מתבצעת תמיד,
קרא עודמבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי
מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדיקות אחרונות לפני מסירה )עמודים 8-11( מבנה השאלון 5
קרא עוד1
תאריך הבחינה: 24.7.2016. שמות המרצים: ד"ר עזאם מרעי שם הקורס: עקרונות תכנות מונחה עצמים מספר הקורס: 202-15181 שנה: 2016 סמסטר: ב' מועד: א' משך הבחינה: שלוש שעות חומר עזר: אסור מבחן סיכום לקורס " עקרונות
קרא עודשאלהIgal : מערכים דו מימדיים רקורסיה:
אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ג חשון תשע"ח 12/11/17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד קיץ סמ' שנה תשע"ז 3 שעות משך
קרא עודPowerPoint Presentation
פרוטאוס הדרכה לפיתוח פרויקט מבוסס ארדואינו 1 הוראות הפעלה תוכנת פרוטאוס מכילה כמות גדולה מאוד של כלי עזר להבנת דרך ההפעלה של התוכנה. שני מקורות מידע עיקריים עומדים לרשות המשתמש מחוץ לתוכנה: o באתר האינטרנט
קרא עודMicrosoft PowerPoint - Lecture1
Computer Organization and Programming ארגון ותכנו ת המחשב - את"מ הרצאה מבוא 2 שפה עילית מול שפ ת מ כונה שפה עילית language) (High level שפת מכונה Language) (Machine תכנית בשפ ה עיל ית (C, Pascal, ) תכנית
קרא עודמבחן בפיתוח מערכות תוכנה בשפת Java ( )
עמוד 1 מתוך 10 )0368-3056( מבחן בפיתוח מערכות תוכנה בשפת Java בית הספר למדעי המחשב אוניברסיטת תל אביב סמסטר ב' תשס"ח, מועד ב' תאריך הבחינה: 24.09.2008 מרצה: אוהד ברזילי חומר עזר מותר בשימוש: אין משך הבחינה:
קרא עודMicrosoft Word - c_SimA_MoedB2005.doc
מרצה: שולי וינטנר. מתרגל: עזרא דאיה. מבוא למדעי המחשב בחינת מועד ב', סמסטר א' תשס"ה,.2.2005 משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות:. ודאו כי בטופס שבידיכם עמודים. יש לכתוב
קרא עודSlide 1
מבוא למדעי המחשב תירגול 4: משתנים בוליאניים ופונקציות מבוא למדעי המחשב מ' - תירגול 4 1 משתנים בוליאניים מבוא למדעי המחשב מ' - תירגול 4 2 ערכי אמת מבחינים בין שני ערכי אמת: true ו- false לכל מספר שלם ניתן
קרא עודמצגת של PowerPoint
מבוא כללי לתכנות ולמדעי המחשב תרגול מס' 1 דין שמואל dshmuel110@gmail.com 1 1. מנהלות מרצה: אמיר רובינשטיין, amirr@tau.ac.il שעות קבלה: לשאלות קצרות - מייד לאחר השיעור. ניתן לתאם במייל שעות אחרות. מתרגל:
קרא עודפייתון
שיעור 12: מילונים ברק גונן 1 או מילון, :hash table או,dictionary זוגות של מפתחות keys וערכים values מילון מוגדר על ידי סוגריים מסולסלים { } לדוגמה: מילון שמכיל ציונים, המפתח הוא מספר ת.ז ערך מפתח הגדרה
קרא עודאוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי
אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', 6.2.2012 הנחיות: 1. משך הבחינה: 120 דקות. 2. היציאה מהכיתה במהלך
קרא עוד2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ
מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מספיק עמדות לכולם ולכן מומלץ לעבוד ביחידים). במהלך המעבדה יהיה עליכם לבצע משימות. אם תצטרכו עזרה בשלב
קרא עודתרגול 1
מבוא למדעי המחשב 2019 תרגול 9 חזרה על תכנות מונחה עצמים Part II ראינו בהרצאה ממשקים Set Iterable Iterator בתרגול היום חזרה על: ממשקים Iterator Iterable )iterator נראה: )set ממשק )מימוש SetAsLinkedList
קרא עודMicrosoft PowerPoint - 07_tdd.ppt
המצגת מבו ס סת על הספר: Test-Driven Development By Example By Kent Beck Publisher: Addison Wesley Date: November 08, 2002 ISBN: 0-321-14653-0 Pages: 240 תכנות מונחה בדיקות (Test Driven Development) אוהד
קרא עודיום שלישי, 14 ליולי 2015 מבחן סוף סמסטר - תכנות מונחה עצמים )236703( סמסטר אביב 2015, מועד א' מרצה: ערן גלעד מתרגלים: נורית מושקוביץ', הלאל עאסי, אליר
יום שלישי, 14 ליולי 2015 מבחן סוף סמסטר - תכנות מונחה עצמים )236703( סמסטר, מועד א' מרצה: ערן גלעד מתרגלים: נורית מושקוביץ', הלאל עאסי, אלירן וייס הנחיות: 1. במבחן 5 שאלות שוות משקל. עליכם לענות על כל
קרא עודמקביליות
תכונות בטיחות Safety Properties גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 תזכורת: תכונות זמן ליניארי Linear Time Properties תכונות זמן-ליניארי מתארות קבוצת עקבות שהמערכת צריכה לייצר מכוונים ללוגיקה
קרא עודתוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1
תוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 SWT בנויה על העיקרון של publish/subscribe אלמנטים בסיסיים )Widgets( מייצרים מאזינים )Listener( אירועים )Events(
קרא עודמבוא למדעי המחשב, סמסטר א', תשס"ח תרגול מס' 2
מבוא למדעי המחשב תרגול מס' 2 נושאים משתנים טיפוסים אופרטורים פונקציות מתמטיות מהמחלקה Math המרת טיפוסים תנאים ולולאות 1 2 תזכורת משיעור קודם תזכורת... תכנית מחשב נכתבת כטקסט בקובץ. הטקסט כתוב בשפת תכנות
קרא עודשאלהIgal : מערכים דו מימדיים רקורסיה:
אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ג מנ' אב תשע"ז 15.08.17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד סמ' ב' שנה תשע"ז 3 שעות
קרא עודתרגול 1
מבוא למדעי המחשב 2019 תרגול 9 חזרה על תכנות מונחה עצמים Part II ראינו בהרצאה ממשקים Set Iterable Iterator בתרגול היום חזרה על: ממשקים Iterator Iterable )iterator נראה: )set ממשק )מימוש SetAsLinkedList
קרא עודMicrosoft Word - Ass1Bgu2019b_java docx
ת ר ג י ל 1 ב ק ו ר ס מ ב ו א לתכנות 202.1.9031 JAVA סמסטר ב, ת נ א י ם ו ל ו ל א ו ת תאריך אחרון להגשה בציון מלא : 02.04.19 עד שעה : 23:55, כ ל יום איחור ל א מ א ו ש ר א ו ח ל ק ממנו מודריד 10 נקודות
קרא עודאוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי
אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', 6.2.2012 הנחיות: 1. משך הבחינה: 120 דקות. 2. היציאה מהכיתה במהלך
קרא עודMicrosoft PowerPoint - 05_collections.ppt
תכ נות מת קדם בש פת Java אצ נים ו או ס פ ים (collections and iterators) אורנית דרור ואוהד ברזילי אוניברסיטת ת ל אביב איטרטור (סודר? אצן? סורק?) איטרטור הוא הפש טה ש ל מ עבר בסדר מ וגדר מ ראש ע ל מ בנה
קרא עודמקביליות
תכונות שמורה Invariant Properties גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 בדיקות מודל Checking( )Model מערכת דרישות מידול פירמול בדיקות מודל )Model Checking( מודל של המערכת תכונות פורמליות סימולציה
קרא עודMicrosoft Word - pitaron222Java_2007.doc
1 מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א a mul k k a פלט b זוגי? b :1 Ï 3 1 5 1 5 F קלט: 3, 5, 8, 4 20 2 8 40 40 3 4 4 F :2 Ï m x x 0 פלט 70 x 50 0 א. 10 F 1 64 2 2 51 30 F -4 F ב. ג. 1- (כל
קרא עודפתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.
פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9. הדפסה ראשונה: מתבצעת לולאה שרצה מאפס עד אורך המחרוזת.
קרא עודמבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב
מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. בדקו שכל העמודים ברשותכם. ב. משך המבחן שלוש שעות (180
קרא עודתוכנה 1 בשפת Java שיעור מספר 3: "חתיכת טיפוס"
שיעור מספר 3: מודל הזיכרון ושירותים שחר מעוז בית הספר למדעי המחשב על סדר היום מודל הזיכרון של Java Heap and Stack העברת ארגומנטים מנגנוני שפת Java שרותים הפשטה חוזה של שרותים 2 העברת ארגומנטים כאשר מתבצעת
קרא עודתוכנה 1 1 אביב תשע"ג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגש
תוכנה 1 1 אביב תשע"ג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תיעשה במערכת ה- mdle בלבד.(http://mdle.tau.ac.il/)
קרא עודמצגת של PowerPoint
מהי סביבת איקס לימוד? סביבת איקס לימוד היא סביבה גמישה לתרגול היכולת לזכור ולהיזכר במושגים ועובדות מתחומי תוכן שונים על ידי התאמה. הסביבה מבוססת על המשחק 'איקס עיגול' והתוכן אותו מתרגלים יכול מסוג טקסט
קרא עודתוכנה 1 אביב תשע"ח תרגיל מספר 8 אוספים גנריים ו- framework collection הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת ה
תוכנה 1 אביב תשע"ח תרגיל מספר 8 אוספים גנריים ו- framework collection הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תיעשה במערכת ה- moodle בלבד.(http://moodle.tau.ac.il/)
קרא עודמבוא למדעי המחשב
מבוא למדעי המחשב 202-1-1011 תאריך הבחינה: שמות המרצים: 16.3.2011 מר שי זקוב ד"ר פז כרמי פרופ' מייק קודיש ד"ר חן קיסר ד"ר צחי רוזן שם הקורס: מבוא למדעי המחשב מספר הקורס: שנה: 202-1-1011 2011 משך הבחינה:
קרא עודמספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי
מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בינסקי הנחיות: יש לענות על כל השאלות. יש לענות על כל
קרא עודמספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה
עמוד 1 מתוך 11 תשע"א מועד ב סמסטר א' 14.2.2011 תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי המחשב יש לענות על כל 5 השאלות. בכל השאלות במבחן יש לכתוב פונקציות יעילות
קרא עודשבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע
שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים עליו כרגע )A מצביע עליו(. יש שני סוגי פקודות, פקודת
קרא עודSlide 1
מבוא למדעי המחשב תירגול 7: פונקציות 1 מה היה שבוע שעבר? לולאות מערכים מערכים דו-ממדיים 2 תוכנייה )call by value( פונקציות העברת פרמטרים ע"י ערך תחום הגדרה של משתנה מחסנית הקריאות 3 פונקציות 4 הגדרה של
קרא עודסיכום הוראות Touch touchend יקרא לפונקציה כשיסתיים המגע עם הסמארטפון. - touchmove יקרא לפונקציה במהלך תזוזת המגע עם הסמארטפון. touchstart יקרא לפונקצי
סיכום הוראות Touch touchend יקרא לפונקציה כשיסתיים המגע עם הסמארטפון. - touchmove יקרא לפונקציה במהלך תזוזת המגע עם הסמארטפון. touchstart יקרא לפונקציה כשיתחיל המגע עם הסמארטפון. preventdefault() נטרול
קרא עודמדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה
מדריך להתקנת Code Blocks מדריך זה נועד לתאר את תהליך התקנת התוכנה של הקורס "מבוא למחשב שפת C". בקורס נשתמש בתוכנת Code::Blocks עם תוספת )אשף( המתאימה לקורס. האשף קובע את סביבת הפיתוח כך שתתאים לצורכי הקורס.
קרא עודמבוא למדעי המחשב - חובלים
אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב סמסטר ב' תשע"ב בחינת סיום, מועד ב',.02..9.7 מרצה: אורן וימן מתרגלים: נעמה טוויטו ועדו ניסנבוים מדריכי מעבדה: מחמוד שריף ומיקה עמית משך המבחן: שעתיים חומר
קרא עוד