PowerPoint Presentation

מסמכים קשורים
PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

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

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

Slide 1

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

Slide 1

Microsoft PowerPoint - rec3.ppt

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

PowerPoint Presentation

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

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

Microsoft PowerPoint - lec10.ppt

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

Slide 1

Slide 1

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

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

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

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

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

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

Microsoft PowerPoint - 10_threads.ppt

PowerPoint Presentation

תרגול 1

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

PowerPoint Presentation

Slide 1

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

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

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

PowerPoint Presentation

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

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

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

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

Slide 1

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

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

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

Microsoft PowerPoint - lec9.ppt

Microsoft PowerPoint - lec9.ppt

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

Microsoft PowerPoint - lec2.ppt

PowerPoint Presentation

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

Microsoft PowerPoint - rec8.ppt

תרגול 1

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

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

Microsoft Word - דוגמאות ב

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

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

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

תוכנה 1 אביב תשע"ח תרגיל מספר 8 אוספים גנריים ו- framework collection הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת ה

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

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

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

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

PowerPoint Presentation

Microsoft PowerPoint - rec1.ppt

תרגול 1

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

Slide 1

Slide 1

Microsoft Word - c_SimA_MoedB2005.doc

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

תרגול מס' 1

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

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

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

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

PowerPoint Presentation

1

Slide 1

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

Microsoft Word B

Slide 1

פייתון

מקביליות

Microsoft Word - pitaron222Java_2007.doc

1

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

PowerPoint Presentation

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

Slide 1

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

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

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

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

PRESENTATION NAME

תמליל:

תוכנה 1 אוניברסיטת תל אביב INTERFACES תרגול מס' 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה

מנשקים )Interfaces( 2

מנשקים מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות )חתימות( ללא המימוש שלהן. קוד אשר משתמש במנשק יוכל בזמן ריצה לעבוד בצורה אחידה עם מגוון מחלקות המממשות את המנשק הזה )ללא צורך בשכפול הקוד עבור כל מחלקה(.

הגדרת מנשק הגדרת מנשק public interface InterfaceName { public String somemethod(); public void anothermethod(int param); הגדרת מחלקה המממשת את המנשק public class Concrete implements InterfaceName { @Override public String somemethod() { @Override public void anothermethod(int param) {

5 - מנשק המייצג צורה דוגמא :1 Shape נגדיר מנשק בשם Shape המייצג צורה גיאומטרית. המנשק Shape מחייב את כל המחלקות שמממשות אותו, מימוש עבור 2 מתודות: לכלול getarea() מחשבת את שטח הצורה getdetails() מחזירה מחרוזת המייצגת את הצורה. public interface Shape { public float getarea(); public String getdetails(); {

6 המחלקה Square public class Square implements Shape { float side; public Square(float side) { this.side=side; public float getarea() { return (side*side); המחלקה מצהירה שהיא מממשת את המנשק מימוששלשלהמתודות מהמנשק public String getdetails() { return "Square: side=" + this.side; { {

7 המחלקה Circle public class Circle implements Shape { float radius; public Circle(float radius) { //Constructor this.radius=radius; public float getarea() { //Implementing Shape.getArea() return (float) (radius*radius*math.pi); public String getdetails() { //Implementing Shape.getDetails() return "Circle: radius=" + this.radius; public float getradius() { return this.radius; //Circle specific method

8 טיפוס הפניה מסוג המנשק Shape טיפוס הפניה מסוג Shape המנשק.Shape יכול להצביע אל כל אובייקט המממש את ניתן לקרוא באמצעותו רק למתודות הכלולות בהגדרת המנשק. shape1.getarea() כדי לקרוא למתודה הספציפית ל- Circle, :casting Shape shape1 = new Square(100); Shape shape2 = new Circle(50); לדוג': יש לבצע הצרה באמצעות Circle circle = (Circle) shape2; // Down-casting System.out.println( circle.getradius() );

9 כללי השמה נוספים ראינו השמה של עצם למשתנה מטיפוס מנשק )שהוא מממש(. Square mysquare = new Square(100); Shape myshape = mysquare; אי אפשר לעשות השמה בכיוון ההפוך, או בין שני טיפוסים שמממשים את אותו מנשק שוב, אפשר להיעזר ב- down-casing Square mysquare2 = myshape; Circle mycircle2 = mysquare; Square mysquare2 = (Square) myshape; "להתחכם" down-casting מאפשר ולבצע השמה מוזרה Circle mycircle2 = (Circle) myshape; במקרה כזה, השגיאה תתגלה רק בזמן ריצה )כשיתברר ש- myshape אינו עיגול(

10 גישה אחידה לאובייקטים במערך פולימפורפי ע"י שימוש במנשק Shape השימוש במנשקים מאפשר לנו לעבוד באופן אחיד עם אובייקטים של מחלקות שונות המממשות את המנשק. מערך פולימורפי הינו מערך המכיל אובייקטים מסוגים שונים. Shape[] shapes = new Shape[]{ new Square(10), new Circle(20), new Square(100) ; for (Shape shape : shapes) System.out.println( shape.getdetails() + "\t area= + shape.getarea() );

11 דוגמא 2: נגן מדיה נגן מוזיקה אשר מותאם לעבוד עם שונים קבצי מוסיקה קבצי וידאו קבצי מדיה מסוגים )mp3( )avi( ועוד

Playing Mp3 public class MP3Song { public class Player { { public void play(){ // audio codec calculations, // play the song... { // does complicated stuff // related to MP3 format... private boolean repeat; private boolean shuffle; public void playsongs(mp3song[] songs) { do { if (shuffle) Collections.shuffle(Arrays.asList(songs)); for (MP3Song song : songs) song.play(); { while (repeat);

Playing VideoClips public class VideoClip { public class Player { { public void play(){ // video codec calculations, // play the clip... { // does complicated stuff // related to MP4 format... // same as before... public void playvideos(videoclip[] clips) { do { if (shuffle) Collections.shuffle(Arrays.asList(clips)); for (VideoClip videoclip : clips) videoclip.play(); { { while (repeat);

public void playsongs(mp3song[] songs) { do { if (shuffle) Collections.shuffle(Arrays.asList(songs)); שכפול קוד for (MP3Song song : songs) song.play(); while (repeat); למרות ששני השרותים play() אלו פונקציות שונות! נקראים public void playvideos(videoclip[] clips) { do { if (shuffle) Collections.shuffle(Arrays.asList(clips)); for (VideoClip videoclip : clips) videoclip.play(); while (repeat); נרצה למזג את שני קטעי הקוד

שימוש במנשק public void play (Playable[] items) { do { if (shuffle) Collections.shuffle(Arrays.asList(items)); for (Playable item : items) item.play(); while (repeat); public interface Playable { public void play();

מימוש המנשק ע"י הספקים public class VideoClip implements Playable { @Override public void play() { // render video, play the clip on screen... // does complicated stuff related to video formats... public class MP3Song implements Playable { @Override public void play(){ // audio codec calculations, play the song... // does complicated stuff related to MP3 format...

Playable[] playables = new Playable[3]; מערכים פולימורפיים playables[0] = new MP3Song(); playables[1] = new VideoClip(); playables[2] = new MP4Video(); // new Playable class Player player = new Player(); // init player... player.play(playables); public void play (Playable [] items) { do { if (shuffle) Collections.shuffle(Arrays.asList(items)); עבור כל איבר במערך יקרא ה play() המתאים for (Playable item : items) item.play(); while (repeat);

18 עוד על מנשקים מנשק הוא טיפוס אבסטרקטי לחלוטין )ללא מימוש כלל(. לא ניתן ליצור מופע של מנשק בעזרת הפקודה.new מנשק יכול להכיל מתודות וגם קבועים אך לא שדות. מחלקה יכולה לממש יותר ממנשק אחד בג'אווה )תחליף לירושה מרובה(. public class Circle implements Shape, Drawable { מנשק יכול להרחיב )לרשת( מנשק אחר )ואז יכלול גם את המתודות המוגדרות במנשק זה(. public interface Shape extends Drawable {

19 בית חרושת לעצמים )תבנית עיצוב שימושית( במקרים מסוימים, נרצה שהלקוח לא יצטרך לבחור או אפילו להכיר את הטיפוס הקונקרטי עמו הוא עובד הבעיה: בקריאה ל- new חייבים לציין את הטיפוס הקונקרטי של האובייקט שנוצר הפתרון: נגדיר מחלקת "מפעל" אותה הלקוח יכיר, והיא תייצר עבורו מופעים של מחלקות המממשות את המנשק אם נגדיר בעתיד מחלקות נוספות או נשנה את שמות המחלקות, הלקוח לא יידרש לשנות את הקוד שלו לדוגמא: הלקוח רוצה ליצור מופע של Playable לפי שם קובץ משם הקובץ ניתן להסיק את טיפוס המופע הדרוש

20 מפעל לקבצי מדיה public class PlayableFactory { public static Playable loadplayable(string filepath) throws UnsupportedExtensionException { String extension = filepath.substring( filepath.lastindexof(".")).tolowercase(); switch (extension) { case ".mp3": return new MP3Song(filePath); case ".mp4": return new MP4Video(filePath); case ".avi": VideoClip videoclip = new VideoClip(); videoclip.load(filepath); return videoclip; default: throw new UnsupportedExtensionException(extension); עבור כל סיומת קובץ יוחזר עצם מטיפוס מתאים בחלק מהמחלקות הגדרת שם הקובץ יכולה להתבצע בצורה שונה טיפול בסיומת שאינה נתמכת ע"י זריקת שגיאה

21 שימוש במפעל בקוד הלקוח Playable[] toplay = new Playable[3]; toplay[0] = PlayableFactory.loadPlayable("recital.mp3"); toplay[1] = PlayableFactory.loadPlayable("recording.mp4"); toplay[2] = PlayableFactory.loadPlayable("concert.avi"); for (Playable playable : toplay) { playable.play(); קוד הלקוח אינו מתייחס למחלקות קונקרטיות של קטעי מדיה

22 דיאגרמות

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

24 Class Diagram BankAccount public BankAccount(Customer customer, long id) public void withdraw(double amount) public void deposit(double amount) public void transferto(double amount, BankAccount otheraccount) public double getbalance() public Customer getowner() public double getnumber() Customer Aggregation (has-a) public Customer(String name, String id) 1 public String getname() public String getid() Bank main Association קשר כללי בין מחלקות, למשל, אחת משתמשת בשנייה באחת המתודות קשר לוגי של שייכות )למשל, ב- BankAccount יש שדה,)Customer לא בלעדית

25 פענוח של הודעות על שגיאות זמן ריצה )Stack Trace(

26 Interpreting a Stack Trace of an Exception כשנתקלים בחריגה במהלך ריצת התוכנית, ניתן להשתמש במידע שניתן לנו כדי לזהות את סוג החריגה ואת המיקום בתוכנית שבו היא ארעה. Console: Exception in thread "main" java.lang.nullpointerexception at com.example.myproject.book.gettitle(book.java:16) at com.example.myproject.author.getbooktitles(author.java:25) at com.example.myproject.bootstrap.main(bootstrap.java:14) Book.java: public String gettitle() { System.out.println(title.toString()); <-- line 16 return title;

27 Interpreting a Stack Trace of an Exception דוגמא נוספת: Exception in thread "main" java.lang.outofmemoryerror: Java heap space at java.util.arrays.copyof(unknown Source) at java.lang.abstractstringbuilder.expandcapacity(unknown Source) at java.lang.abstractstringbuilder.ensurecapacityinternal(unknown Source) at java.lang.abstractstringbuilder.append(unknown Source) at java.lang.stringbuilder.append(unknown Source) at SmallTestMultiCollections.testOrder(SmallTestMultiCollections.java:56) at SmallTestMultiCollections.main(SmallTestMultiCollections.java:34

28 פעולות על סיביות אופרטורים לביצוע פעולות על ביטים רק על טיפוסים שלמים char( )int, short, byte, ~ << >> >>> & ^ Unary bitwise complement Signed left shift Signed right shift Unsigned right shift Bitwise AND Bitwise XOR Bitwise OR

29 פעולות על סיביות - דוגמאות 32 ביטים int ייצוג בינארי 3 ~3-3 3 << 2-3 >> 1-3 >>> 1 00000000000000000000000000000011 11111111111111111111111111111100 11111111111111111111111111111101 00000000000000000000000000001100 11111111111111111111111111111110 01111111111111111111111111111110 מה נקבל מ & 3?i שני הביטים הימניים של i ומה נקבל מ?i & 0xF0