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

מסמכים קשורים
מבוא למדעי המחשב

Slide 1

Slide 1

Slide 1

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

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

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

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

PowerPoint Presentation

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

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

Microsoft PowerPoint - rec3.ppt

PowerPoint Presentation

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

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

PowerPoint Presentation

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

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

Microsoft Word - pitaron222Java_2007.doc

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

Slide 1

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

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

Microsoft PowerPoint - lec10.ppt

PowerPoint Presentation

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

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

Slide 1

PowerPoint Presentation

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

תרגול 1

PowerPoint Presentation

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

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

PowerPoint Presentation

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

Slide 1

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

Tutorial 11

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

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

Microsoft PowerPoint - rec8.ppt

Microsoft PowerPoint - 10_threads.ppt

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

תרגול 1

Slide 1

PowerPoint Presentation

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

Microsoft PowerPoint - rec1.ppt

Microsoft Word - c_SimA_MoedB2005.doc

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

תרגול 3 - מערכים

Slide 1

Microsoft Word - דוגמאות ב

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

מתכונת עיצוב 3013

1

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

HTML - Hipper Text Makeup Language

PowerPoint Presentation

Microsoft PowerPoint - lec2.ppt

תוכן העניינים

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

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

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

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

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

תרגול 1

PowerPoint Presentation

Microsoft Word B

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

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

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

PowerPoint Presentation

תרגול 1

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

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות נ

פייתון

1

שעור 6

PRESENTATION NAME

PowerPoint Presentation

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

PowerPoint Presentation

תוכנה 1 בשפת Java שיעור מספר 3: "חתיכת טיפוס"

Slide 1

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

מבוא למדעי המחשב, סמסטר א', תשס"ח תרגול מס' 2

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

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

Microsoft PowerPoint - 07_tdd.ppt

Slide 1

תרגיל 1 בקורס תוכנה 1

תרגיל 3 בקורס תוכנה 1

תמליל:

עוצמת ההורשה מה הופך את ההורשה לכלי כל כך עוצמתי? מעבר לכך שהוא מקל בהגדרת מחלקות חדשות על סמך מחלקות קיימות, יש לנו אפשרות להתייחס לאובייקט מסויים בכמה אופנים. בואו ניקח מחלקת צעצוע. אנחנו מעונינים להגדיר מספר סוגי צעצועים שמוצעים למכירה: נגדיר מחלקת על צעצוע Toy public class Toy private string toyname; private double price; public Toy (string toyname, double price) this.toyname = toyname; this.price = price; public string GetToyName()return this.toyname; public double GetPrice()return this.price; public override string ToString () return string.format ("0 costs 1 NIS", GetToyName(), GetPrice()); כעת נגדיר מחלקת דובים Bears( )Teddy שניתן לרכוש אותם בשלושה גדלים. עבור הדוב הגדול נוסיף למחיר הבסיס 15%, עבור הדוב הבינוני נוסיף 7% ועבור הדוב הקטן נשלם את המחיר הבסיסי. enum Size LARGE,MEDIUM,SMALL;

public TeddyBear : Toy private Size bearsize; שיטה בונה // public TeddyBear (string toyname, double price, Size bearsize) : base (toyname,price) מוסיפים רק את החלק הנוסף // bearsize; this.bearsize = public???? double GetPrice() חישוב המחיר אינו החישוב הרגיל אלא צריך לקחת בחשבון גודל הדובי // if (bearsize == Size.LARGE) return base.getprice() * 1.15; if (bearsize == Size.MEDIUM) return base.getprice() * 1.07; return base.getprice(); public Size GetSize()return this.bearsize; public override string ToString() return string.format ("0 Teddy bear called 1", size, base.tostring()); כמו כן נגדיר בובה. לבובות יש גם תוספות ולכן העלות תהיה מחיר הבסיס ועוד עלות התוספות. public Doll : Toy private double priceofaccessories;

public Doll (string dollname, double price, double poa) : base (dollname, price) this.priceofaccessories = poa; גם כאן אני אצטרך לשנות את תחשיב עלות הצעצוע // public????????? double GetPrice() return base.getprice() + this.priceofaccessories; public double GetAccessoriePrice()return priceofaccessories; public override string ToString () return string.format ("Doll named 0 and has 1 NIS worth of Accessories", base.tostring( ), priceofaccessories); יש לי אפשרות להגדיר 3 סוגי צעצועים. אחד כללי שיש לו רק שם ומחיר ושניים אחרים שיש בנוסף למאפיינים האלו עוד מאפיינים ייחודיים להם. עד כאן כמו שהדגמנו: Toy t = new Toy ("Bicycle", 800); TeddyBear bear = new TeddyBear ("Winnie", 120.00, Size.Large); Doll doll = new Doll ("Barbie", 85.00, 32.00); אין כאן שום חידוש אבל... מה קורה אם אני יכולה לבחור או זה, או זה או זה ולשמור אותו במשתנה אחיד??? איזה משתנה תתאים לכל סוגי האובייקטים.

לפי היארכיית ההורשה כולם מוגדרים כסוג של צעצוע דהיינו שהמכנה המשותף לכולם הוא שכולם צעצועים. השינוי כאן הוא שלמרות בובה או דובי אינו רק צעצוע, אפשר לשמור את האובייקט שלנו במשתנה של צעצוע Toy t = new TeddyBear ("Winnie", 120.00, Size.Large); או לחילופין Toy t = new Doll ("Barbie", 85.00, 32.00); כאן יש משהו חדש שלא נתקלנו בו קודם. אפשר להגדיר משתנה כלשהו אבל לשמור בו אובייקט מסוג שאינו בדיוק מהסוג של המשתנה. זה לא פרוץ לחלוטין אבל צריך לשים לזה לב. מותר לשים אובייקט במשתנה שהוא מהסוג שלו או אחד מהמחלקות שממנו הוא יורש. כאן מתעוררת בעיה קטנה: t.getprice(); ראינו שלכל מחלקה יש מימוש שונה לחישוב מחיר. עבור צעצוע רגיל, אין שום חישוב אבל לדובי ולבובה יש נוסחא שלו. האם עבור Winnie אני אקבל 120.00 או אקבל 138.00 האם יבצע את הפעולה של Toy כי למעשה אני מוגדר רק כ- Toy או שמא ישתמש בפעולה של TeddyBear כי בפועל האובייקט הוא מסוג.TeddyBear האם אנחנו יכולים להחליט מה אנחנו רוצים. לאלו שמתכנתים ב- #C, יש לנו שליטה ואנחנו יכולים להחליט האם אנחנו רוצים"לדרוס" את הפעולה של Toy ולהפעיל את הפעולה של.TeddyBear ב- Java, אין שום בחירה ותמיד קורה דריסה. דריסה : המערכת מבצעת פעולה לא של המחלקה המוצהרת )Toy( אלא של המחלקה האמיתית.)TeddyBear( אנחנו בעצם איננו יכולים לדעת באמת מה מבצע התוכנית. ב- #C כדי לאפשר דריסה, אנחנו חייבים להצהיר שהפעולה היא "ברת דריסה" כלומר ניתן לדרוס אותם. המילה השמורה שמצהירה שניתן לדרוס היא virtual לדוגמא שלנו במחלקת Toy נוסיף את המילה :virtual public virtual double GetPrice() return this.price; ובמחלקת TeddyBear נוסיף מילה שמורה override שמאפשרת לו לדרוס את הפעולה המוגדרת כ- virtual )נחליף את סימני השאלה שהגדרתי קודם( public override double GetPrice().

איפה זה שימושי: אני רוצה להגדיר חנות צעצועים ואני בונה מערך של צעצועים שיוכל להכיל את כל סוגי הצעצעים Toy [] toys = new Toy [3]; toys[0] = new Toy ("Bicycle", 800); toys[1] = new TeddyBear ("Winnie", 120.00, Size.Large); toys [2] = new Doll ("Barbie", 85.00, 32.00); for (int i=0; i < toys.length; i++) Console.WriteLine (toys[i].getprice()); מה שאני אקבל זה שורה ראשונה:, 800.00 שורה שניה 138.00 ושורה שלישית 117.00 כלומר כל אחד מהאובייקטים מפעיל את ה- GetPrice() של האובייקט האמיתי שלו. שאלה למחשבה: מה יודפס ב-() ToString האם יודפס המחיר של Toy או המחיר לפי סוג האובייקט. חשוב על זה תרגילים: הגדר מחלקת ספר. המחלקה מכילה שם ספר, שם מחבר, מחיר. יש להגדיר ToString() לכל מאפיין כמו כן יש להגדיר Setter/Getter הגדר מחלקת ספר במבצע המכילה שם ספר, שם מחבר, מחיר והנחה. יש להגדיר פעולה Setter/Getter ו- ToString() כולל GetPrice המחזיר את המחיר הסופי של הספר. כתוב תוכנית ראשית ששואלת האם אתה מעוניין לקלוט ספר או ספר ולהדפיס את שם הספר לפניך קטע קוד. עקוב על המחלקות והצג מה יודפס.1.2 class A private int a; public A (int a)this.a = a; public int GetA()return this.a; public void SetA(int a)this.a = a; public virtual int Add() return this.a; public override string ToString() return "Inside A" + Add().ToString();

class B:A private int b; public B (int a, int b):base (a)this.b = b; public int GetB()return this.b; public void SetB(int b)this.b = b; public override int Add () return base.add() + b; public override string ToString() return "Inside B Too \n" + base.tostring(); class Main public static void Main (string[] args) A[] a = new A[2]; a [0] = new A (5); B b = new B(3,6); a[1] = b; for (int i=0; i < 2; i++) Console.WriteLine(a[i]); b.setb (1); b.seta(12); a[0].seta (2); for (int i=0; i < 2; i++) Console.WriteLine(a[i]);