Microsoft PowerPoint - 10_observer_inner

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

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

Slide 1

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

PowerPoint Presentation

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

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

PowerPoint Presentation

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

PowerPoint Presentation

Slide 1

Slide 1

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

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

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

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

תרגול 1

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

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

Microsoft PowerPoint - rec3.ppt

תרגול 1

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

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

Slide 1

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

תרגול 1

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

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

Slide 1

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

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

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

Microsoft PowerPoint - 10_threads.ppt

PowerPoint Presentation

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

Microsoft Word - pitaron222Java_2007.doc

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

Microsoft PowerPoint - lec10.ppt

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

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

PowerPoint Presentation

PowerPoint Presentation

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

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

Microsoft PowerPoint - lec2.ppt

Microsoft Word - Presentation.doc

Microsoft PowerPoint - 07_tdd.ppt

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

Microsoft PowerPoint - Lecture1

תרגול 1

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

Slide 1

Microsoft PowerPoint - 07_tdd.ppt

תרגול מס' 1

Microsoft PowerPoint - rec8.ppt

1

Microsoft Word - c_SimA_MoedB2005.doc

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

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

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

Microsoft PowerPoint - 05_collections.ppt

Slide 1

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

PowerPoint Presentation

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

Microsoft Word - דוגמאות ב

Microsoft PowerPoint - 06_inheritance_noBackgroung.ppt

Microsoft PowerPoint - rec1.ppt

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

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

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

PowerPoint Presentation

1

Homework Dry 3

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

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

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

Microsoft PowerPoint - L01-n.ppt

תרגול מס' 7: תרגילים מתקדמים ברקורסיה

פייתון

שאלה אחת

Microsoft PowerPoint - lec9.ppt

Slide 1

PowerPoint Presentation

Slide 1

eriktology The Prophets Book of 1 st Kings [1]

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

תמליל:

60 50 40 30 0 2 3 Series 60 50 40 30 0 2 3 Series 2 3 Design Patterns תוכנה תרגול : Patterns Design ומחלקות פנימיות נעמ ה מאיר, מתי שמ רת A general reusable solution to recurring design problems. Not a recipe A higher level language for design Factory, Singleton, observer and not this class inherits from that other class Design Patterns: Elements of Reusable Object-Oriented Software Lots of information online 2 Different Views Different Views (cont.) Data a=50 b= C= 3 When the data change all views should change Views dependant on data Views may vary, more added in the future Data store implementation may changes We want: Separate the data aspect from the view one Notify views upon change in data 4 The Observer Design Pattern A.k.a publish/subscribe Observer and Java Java provides an observer interface and an Observable class. Subclass Observable to implement your own subject registration and removal of observers notification Implement Observer Other uses of this pattern throughout the JDK 5 6

7 Example Code - Subject public class IntegerDataBag extends Observable implements Iterable<Integer> { private ArrayList<Integer> list = new ArrayList<Integer>(); public void add( Integer i ) { list.add(i); setchanged(); notifyobservers(); public Iterator<Integer> iterator() { return list.iterator(); public Integer remove( int index ) { if( index < list.size() ) { Integer i = list.remove( index ); setchanged(); notifyobservers(); return i; return null; Example Code - Observer public class IntegerAdder implements Observer { private IntegerDataBag bag; public IntegerAdder( IntegerDataBag bag ) { this.bag = bag; bag.addobserver( this ); public void update(observable o, Object arg) { if (o == bag) { println("the contents of the IntegerDataBag have changed."); int sum = 0; for (Integer i : bag) { sum += i; println("the new sum of the integers is: " + sum); 8 מחלקות פנימיות (מקוננות) Inner (Nested) Classes 9 מחלקה פנימית היא מחלקה שהוגדרה בתחום Scope) בין המסולסליים) של מחלקה אחרת private double width; דוגמא: שימוש לב! Room אינה שדה של המחלקה House מחלקות פנימיות ב Java כל מופע של עצם מטיפוס המחלקה הפנימית צריך להיות משויך לעצם מטיפוס המחלקה העוטפת הגדרת מחלקה כפנימית מרמזת על היחס בין המחלקה הפנימית והמחלקה העוטפת: למחלקה הפנימית יש משמעות רק בהקשר של המחלקה החיצונית למחלקה הפנימית יש הכרות אינטימית עם המחלקה החיצונית המחלקה הפנימית היא מחלקת עזר של המחלקה החיצונית דוגמאות: Iterator ו- Collection Brain ו- Body מבני נתונים המוגדרים ברקורסיה: List ו- Cell השלכות תחביר מיוחד לבנאי לעצם מטיפוס המחלקה הפנימית יש שדה הפנייה שמיוצר אוטומטית לעצם מהמחלקה העוטפת כתוצאה לכך יש למחלה הפנימית גישה לשדות ולשרותים (אפילו פרטיים!) של המחלקה העוטפת ולהיפך 2

3 // implicit reference to a House private double width; return "Room inside: " + address; Height of House Height of Room // implicit reference to a House Height of Room Same as this.height return "Room height: " + height + " House height: " + House.this.height; 3 4 יצירת מופעי ם כאשר המחלקה החיצונית יוצרת מופע של עצם מטיפוס המחלקה הפנימית אזי העצם יווצר בהקשר של העצם היוצר כאשר עצם מטיפוס המחלקה הפנימית נוצר מחוץ למחלקה העוטפת, יש צורך בתחביר מיוחד יצירת מופע ע"י המחלקה החיצונית public void test() { Room r = new Room(); System.out.println( r ); 5 6 יצירת מופע שלא ע"י המחלקה החיצונית public static void main(string[] args){ House h = new House(); House.Room r = h.new Room(); Static Nested Classes ניתן להגדיר מחלקה פנימית כ static ובכך לציין שהיא אינה קשורה למופע מסוים של המחלקה העוטפת הדבר אנלוגי למחלקה שכל שרותיה הוגדרו כ static והיא משמשת כספריה עבור מחלקה מסוימת בשפת ++C יחס זה מושג ע"י הגדרת יחס friend outerobject.new InnerClassName 7 8

9 public static class Room { return Room + address; Error: this room is not related to any house Not related to any specific house הגנה על מחלקות פנימיות אם המחלקה הפנימית אינה ציבורית (אינה מוגדרת,(public הטיפוס שלה מוסתר, אבל עצמים מהמחלקה אינם מוסתרים אם יש התייחסות אליהם public class Outer { private static class Inner implement Interface { public static void main(string[] args){ House.Room r = new House.Room(); new OuterClassName.InnerClassName public static Interface getinner() { return new Inner (); Interface i = new Outer.Inner(); //error Interface i = Outer.getInner(); // ok מחלקות מקומיות - מחלוקת פנימיות בתוך מתודות ניתן להגדיר מחלקה המחלקה החיצונית פנימית בתוך מתודה של הדבר מגביל את תחום ההכרה של אותה מחלקה לתחום אותה המתודה בלבד המחלקה הפנימית תוכל להשתמש במשתנים מקומיים של המתודה רק אם הם הוגדרו כ final (מדוע?) 2 מחלקות מקומיות public void test () { class Info { private int x; public Info(int x) {this.x=x; public String tostring() { return ** + x + ** ; ; Info info = new Info(0); System.out.println(info); 22 שימוש במשתנים מקומיים public void test (int x) { final int y = x+3; class Info { return ** + y + *** ; ; System.out.println( new Info()); מחלקות אנונימיות בעזרת מחלקות פנימיות ניתן להגדיר מחלקות אנונימיות מחלקות ללא שם מחלקות אנונימיות שימושיות מאוד במערכות מונחות ארועים (כגון (GUI וילמדו בהמשך הקורס 23 24

25 הידור של מחלקות פנימיות המהדר (קומפיילר) יוצר קובץ.class עבור כל מחלקה. מחלקה פנימית אינה שונה במובן זה ממחלקה רגילה שם המחלקה הפנימית יהיה Outer$Inner.class אם המחלקה הפנימית אנונימית, שם המחלקה שיוצר הקומפיילר יה יה Outer$.class