Microsoft PowerPoint - rec8.ppt

מסמכים קשורים
Microsoft PowerPoint - lec9.ppt

Microsoft PowerPoint - lec9.ppt

Microsoft PowerPoint - lec10.ppt

יוםראשון, 02 ליולי 2014 סמסטר סוף מבחן )236703( עצמים מונחה תכנות - א' מועד 2014, אביב סמסטר קמחי יחיאל ד"ר מרצה: מסינג מיטל עבדאלקאדר, כרם גלעד, ערן

לנץ קרן מרצה: תכנותמונחהעצמים) ( יוםשישי 15 אוקטובר 0202 ב מועד 0202, אביב סמסטר סמסטר סוף מבחן גוטמן אייל רביב, אריאל משנה, אלון מתרגלים: הנחי

Microsoft PowerPoint - rec3.ppt

תרגול 1

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

Slide 1

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

PowerPoint Presentation

Slide 1

תכנות מונחה עצמים א' – תש"ע

Slide 1

PowerPoint Presentation

PowerPoint Presentation

מבוא למדעי המחשב

Slide 1

סדנת תכנות ב C/C++

PowerPoint Presentation

מהוא לתכנות ב- JAVA מעבדה 3

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

תורת הקומפילציה

מבוא לתכנות ב- JAVA תרגול 11

Microsoft Word B

Slide 1

תורת החישוביות תרגול הכנה לוגיקה ותורת הקבוצות מה יש כאן? בקורס תורת החישוביות נניח ידע בסיסי בתורת הקבוצות ובלוגיקה, והכרות עם מושגים בסיסיים כמו א"ב

Microsoft PowerPoint - lec2.ppt

מבוא לתכנות ב- JAVA תרגול 7

יום שלישי, 14 ליולי 2015 מבחן סוף סמסטר - תכנות מונחה עצמים )236703( סמסטר אביב 2015, מועד א' מרצה: ערן גלעד מתרגלים: נורית מושקוביץ', הלאל עאסי, אליר

1

1

Slide 1

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

Microsoft PowerPoint - rec1.ppt

מבוא למדעי המחשב

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

PowerPoint Presentation

מבוא למדעי המחשב

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

מבוא למדעי המחשב - חובלים

PowerPoint Presentation

PowerPoint Presentation

שאלהIgal : מערכים דו מימדיים רקורסיה:

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

1 תוכנה 1 תרגיל מספר 7 מנשקים Interfaces הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה- moodle ב

Slide 1

הגשה תוך שבוע בשעת התרגול

Microsoft PowerPoint - 07_tdd.ppt

מבוא למדעי המחשב - חובלים

PowerPoint Presentation

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

תרגול מס' 7 – חזרה על MST ואלגוריתם Dijkstra

לנץ קרן מרצה: תכנותמונחהעצמים) ( א' מועד 2012, חורף סמסטר סמסטר סוף מבחן קרבי אלעד רביב, אריאל מושקוביץ, אייל מתרגלים: הנחיות: הש

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

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

<4D F736F F D20F4F2E5ECE5FA20EEE5EEF6E0E5FA20312E646F63>

Microsoft Word - c_SimA_MoedB2005.doc

מבוא למדעי המחשב

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

תרגול 1

Slide 1

Microsoft Word - pitaron222Java_2007.doc

Microsoft PowerPoint - 06_inheritance_noBackgroung.ppt

מס' סידורי: ת.ז.: עמוד 1 מתוך 20 בחינה בתוכנה 1 סמסטר ב', מועד א',תשס"ט 5/7/2009 וולף, ליאור ליאור שפירא, נעמה מאיר, מתי שמרת הוראות )נא לקרוא!( משך ה

Limit

מבחן בפיתוח מערכות תוכנה בשפת Java ( )

PowerPoint Presentation

Slide 1

שאלהIgal : מערכים דו מימדיים רקורסיה:

דף נגזרות ואינטגרלים לשאלון 608 כללים למציאת נגזרת של פונקציה: n 1. y' n x n, y הנגזרת x.1 נכפול בחזקה )נרשום אותה משמאל ל- (. x א. נחסר אחד מהחזקה. ב

שאלהIgal : מערכים דו מימדיים רקורסיה:

Slide 1

PowerPoint Presentation

מבוא למדעי המחשב

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

Microsoft PowerPoint - 07_tdd.ppt

תוכנה 1 1 אביב תשע"ג תרגיל מספר 5 מערכים, מחרוזות, עיבוד טקסט ומבני בקרה הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגש

מקביליות

יוםשישי 14 בספטמבר 2012 ) תכנות מונחה עצמים ( מבחן סוף סמסטר סמסטר אביב 2012, מועד ב' מרצה: קרן לנץ מתרגלים: אייל מושקוביץ, ערן גלעד, ניר האוזר

תשע"דד אביב תוכנה 1 תרגיל מספר 4 עיבוד מחרוזות וקריאה מקבצים הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס..(

Tutorial 11

Microsoft Word - דוגמאות ב

rizufim answers

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

מבוא למדעי המחשב

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

Slide 1

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

שיעור 1

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

Microsoft Word - אלגברה מעורב 2.doc

תוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1

תמליל:

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

תנאי קדם מופשט ראינו שבקבלנות משנה החוזה של המחלקה היורשת חייב לקיים 3 עקרונות: תנאי קדם יכולים להיות חלשים תנאי בתר יכולים להיות חזקים יותר שמורת המחלקה יכולה להיות חזקה יותר כאשר מחלקת הבסיס מופשטת, תנאי קדם טריויאלים מחייבים לפעמים ראייה לעתיד, כדי שלא יחוזקו במחלקות נגזרת (בהרצאה ראינו דוגמא של מחסנית מופשטת ומחסנית חסומה) 3 או נ יברס י טת תל אב יב ראייה לטווח רחוק ראייה לעתיד אינה דבר מופרך במחלקות מופשטות האבולוציה של היררכית מחלקות כלי הרכב לא התחילה בגזירת מחלקות קונקרטיות שיירשו מ VEHICLE הגיוני יותר שבמהלך מימוש ו\או עיצוב המחלקות CAR ו- AIRPLANE נגלה שיש להן הרבה מן המשותף, וכדי למנוע שכפול קוד ניצור מחלקה שלישית - VEHICLE שתכיל את החיתוך של שתיהן אף כלי רכב אינו רק VEHICLE בראייה זו, לא מוגזם לדרוש ממחלקה מופשטת ניסוח תנאי קדם מופשט 4 או נ יברס י טת תל אב יב

CAR VEHICLE BICYCLE דוגמא מהו תנאי הקדם של המתודה go() של המחלקה? VEHICLE על פניו אין כל תנאי קדם לפעולה מופשטת מה עם המחלקה? CAR לה בטח יש דרישות כגון hasfuel() מה עם המחלקה? BICYCLE לה בטח יש דרישות כגון hasair() איך VEHICLE תגדיר תנאי קדם ל go() גם כללי מספיק וגם שלא יחוזק ע"י אף אחד מיורשותיה? 5 או נ יברס י טת תל אב יב CAR VEHICLE BICYCLE פתרון מתודה בולאנית וירטואלית כגון cango() תעשה את העבודה המתודה תוגדר כמחזירה TRUE עבור VEHICLE (או שתוגדר כטהורה), ועבור כל אחת מיורשותיה תוגדר לפי המחלקה האמורה בעצם המתודה go() היתה צריכה להיקרא "go_if_you_can()" וכך לא היתה כל הפתעה בתנאי הקדם "המוזר" 6 או נ יברס י טת תל אב יב

מניע ת י רושה מימוש הרעיון ב ++C מניעת ירושה מניעת ירושה משיקולי יעילות בדרך כלל אינה במקומה: המנגנון הוירטואלי יוצר תקורה קבועה, זניחה וללא תלות בעומק הירושה המנגנון הוירטואלי פועל רק במקרה של מצביעים, את שאר המקרים ממיר ה optimizer לקריאות רגילות קיטום ההררכיה משיקולי מניעת פונקציות וירטואליות צריך לברר האם הפונקציות צרכיות להיות וירטואליות מלכתחילה 8 או נ יברס י טת תל אב יב

דוגמא נד גים איך ניתן למ נוע ממחלקות אחרות לר שת מהמחלקה Usable class Usable; class Usable_lock friend class Usable; private: Usable_lock() } Usable_lock(const Usable_lock&) } 9 או נ יברס י טת תל אב יב דוגמא class Usable : public virtual Usable_lock //... public: Usable(); Usable(char*); //... Usable a; class DD : public Usable DD dd; // error: DD::DD() cannot access // Usable_lock::Usable_lock(): private member 10 או נ יברס י טת תל אב יב

אילו צי ם על טיפ וסי ה ת בני ת מימוש הרעיון ב ++C אילוצים על טיפוסים התבנית נרצה לממש מנגנון כפי שקיים אשר אוכף הגבלות על הטיפוס הפורמלי של התבנית כבר עכשיו נקבל טעיות קומפילציה עבור טיפוסים לא חוקיים (שלא מכילים מתודה מסויימת) ואולם נרצה שההערות הקומפיילר יהיו אינפורמטיביות יותר למשל: template<class Container> void draw_all(container& c) for_each(c.begin(),c.end(),mem_fun(&shape::draw)); } 12 או נ יברס י טת תל אב יב

קרוב ראשון template<class Container> void draw_all(container& c) Shape* p = c.front(); // accept only containers // of Shape*s for_each(c.begin(),c.end(),mem_fun(&shape::draw)); } טעות הקומפילציה, תפנה להשמה ולא לתבנית mem_fun 13 או נ יברס י טת תל אב יב הכללה נכליל את הרעיון: template<class Container> void draw_all(container& c) typedef typename Container::value_type T; Can_copy<T,Shape*>(); // accept containers of // only Shape*s for_each(c.begin(),c.end(),mem_fun(&shape::draw)); } נבטא את הטענה מפורשות בקוד (ללא ביצוע ההשמה בפועל): template<class T1, class T2> struct Can_copy static void constraints(t1 a, T2 b) T2 c = a; b = a; } Can_copy() void(*p)(t1,t2) = constraints; } 14 או נ יברס י טת תל אב יב

עוד אילוצים על הטיפוס template<class T, class B> struct Derived_from static void constraints(t* p) B* pb = p; } Derived_from() void(*p)(t*) = constraints; } template<class T1, class T2> struct Can_copy static void constraints(t1 a, T2 b) T2 c = a; b = a; } Can_copy() void(*p)(t1,t2) = constraints; } template<class T1, class T2 = T1> struct Can_compare static void constraints(t1 a, T2 b) a==b; a!=b; a<b; } Can_compare() void(*p)(t1,t2) = constraints; } template<class T1, class T2, class T3 = T1> struct Can_multiply static void constraints(t1 a, T2 b, T3 c) c = a*b; } Can_multiply() void(*p)(t1,t2,t3) = constraints; } 15 או נ יברס י טת תל אב יב דוגמא העצמים במיכל צריכים לרשת מ :MyBase* template<class T> class Container : Derived_from<T,Mybase> //... Derived_from לא באמת בודק ירושה כי אם השמה פולימורפית, אבל במקרה זה. זו כוונתנו 16 או נ יברס י טת תל אב יב

מקרים נוג די פ ו לימורפי זם ++C והסתרת תכונות ב- Covariance הסתרת תכונות במחלקה POLYGON קיימת התכונה addvertex() אשר מוסיפה קודקוד למצולע קיים במחלקה RECTANGLE היורשת ממנה אין משמעות לוגית לכזו מתודה ניתן להסתיר אותה בתהליך הירושה ע"י הצהרתה מחדש כ private ואולם הדבר סותר את עקרון הפולימורפיזם 18 או נ יברס י טת תל אב יב

מלבן ומצולע class POLYGON //... public: void addvertex(point &p) /*...*/ } //... class RECTANGLE : public POLYGON POLYGON::addVertex; //... 19 או נ יברס י טת תל אב יב שבירת הפולימורפיזם void f(polygon *pp, POINT& x) RECTANGLE r; POLYGON p; p.addvertex(x); pp->addvertex(x); // The problem started already here! r.addvertex(x); // ERROR! hidden in RECTANGLE } pp = &r; pp->addvertex(x); // TROUBLE! Adding a vertex // to a RECTANGLE 20 או נ יברס י טת תל אב יב

הסתרת תכונות ופולימורפיזם קיימות מספר גישות ליציאה מהסבך כולן כרוכות ב"פשרות כואבות": להחליט שמלבן אינו תת מחלקה של מצולע אלא מצב כלשהו של מצולע (עצם ולא מחלקה) להחליט שהתכונה addvertex() אינה צריכה להיות במצולע, מכיוון שמצולע הוא בסיס משותף של כל נגזרותיו להחליט שמלבן אינו יורש ממצולע למשל שניהם יכולים להיות אחים היורשים ממחלקה שלישית 21 או נ יברס י טת תל אב יב שונות מ שותפת ראינו בהרצאה כי כדי לשמור על בטיחות טיפוסים (ובמקרים מסוימים כדי לשמור על נכונות התוכנית) יש להגדיר מחדש את הטיפוס של שדות ומתודות של מחלקת הבסיס על אף שככול שהטיפוס כללי יותר האלגוריתם עצמו כללי יותר (contra-variance) דבר זה אינו בטוח (ולפעמים אף אינו נכון) מבחינות לוגיות 22 או נ יברס י טת תל אב יב

דוגמא המחלקה POINT מממשת את פעולת ה conjugate המחזירה נקודה סימטרית לנקודה הנוכחית /** Conjugate of this */ POINT POINT::conjugate() POINT rslt = *this; rslt.move(0,2*y); return rslt; } 23 או נ יברס י טת תל אב יב חלקיק ונקודה כדי לממש חלקיק (PARTICLE) נירש מהמחלקה POINT (ובטח נוסיף תכונות כגון מהירות, מסה ואחרות) ואולם המתודה conjugate אשר באופן הגיוני אמורה לפעול גם על חלקיק לא תעבוד כמצופה: PARTICLE p1, p2; p2 = p1.conjugate(); // ERROR 24 או נ יברס י טת תל אב יב

פתרון ע"י הגדרת עוגן ראינו פתרון בשפת Eiffel אשר מגדיר עוגן לטיפוס ומצמיד את שאר הטיפוסים לעוגן: /** Conjugate of this */ like *this POINT::conjugate() like *this rslt = *this; rslt.move(0,2*y); return rslt; } ב ++C ניתן לממש רעיון זה בחלקו ע"י הפיכת העוגן לטיפוס פורמלי של תבנית. בדוגמא לעיל לא ניתן להפוך את העוגן (this) לטיפוס פורמלי מכיוון שהדבר יוצר הגדרת תבנית רקורסיבית 25 או נ יברס י טת תל אב יב דוגמאות נוספות מקרים שבהם ניתן לממש את הרעיון בעז רת תבניות הם מקרים של היררכיה מקבילה: 26 או נ יברס י טת תל אב יב

דוגמאות נוספות 27 או נ יברס י טת תל אב יב