PowerPoint Presentation

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

PowerPoint Presentation

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

PowerPoint Presentation

Slide 1

Microsoft PowerPoint - rec3.ppt

PowerPoint Presentation

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

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

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

תרגול 1

PowerPoint Presentation

Slide 1

Slide 1

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

PowerPoint Presentation

PowerPoint Presentation

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

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

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

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

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

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

Microsoft Word - pitaron222Java_2007.doc

PowerPoint Presentation

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

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

PowerPoint Presentation

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

PowerPoint Presentation

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

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

PowerPoint Presentation

Slide 1

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

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

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

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

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

HTML - Hipper Text Makeup Language

Slide 1

PowerPoint Presentation

Microsoft PowerPoint - 10_threads.ppt

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

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

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

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

תרגול 1

Microsoft PowerPoint - rec1.ppt

Slide 1

Microsoft PowerPoint - lec9.ppt

Slide 1

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

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

פייתון

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

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

Microsoft PowerPoint - lec9.ppt

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

Slide 1

Microsoft PowerPoint - lec10.ppt

Microsoft Word - Presentation.doc

תרגול 1

תרגול 1

Microsoft Word B

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

Microsoft Word - c_SimA_MoedB2005.doc

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

Microsoft Word - דוגמאות ב

PowerPoint Presentation

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

1

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

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

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

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

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

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

שקופית 1

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

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

Microsoft PowerPoint - lec2.ppt

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

מקביליות

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

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

Microsoft Word - Ass1Bgu2019b_java docx

Tutorial 11

Microsoft PowerPoint - 07_tdd.ppt

תרגיל 9 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. תהי L השפה בעלת סימן פונקצייה דו מקומי G, סימן פונקציה חד מקומי T, סימן יחס תלת מקומי.c, d וקבועים L

Slide 1

234114

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

אגף התקשוב, אוניברסיטת בר אילן קורס תוכנת מטלב ויישומיה ד"ר סמדר שץ מימוש ממשק משתמש ע"י GUIDE קורס תוכנת מטלב ויישומיה שיעור מס' 12: שימוש ב- GUIDE -

Microsoft PowerPoint - rec8.ppt

תמליל:

תוכנה 1 תרגול מס' 6 מחלקות, עצמים, וקצת חוזים

תזכורת מופעי מחלקה אפשר ליצור מופעים של מחלקה מסוימת )גם: עצמים מטיפוס המחלקה( בעזרת ביטוי.new BankAccount account1 = new BankAccount(...); כל מופע יכול להכיל ערכים שונים של שדות מופע בניגוד לשדות סטטיים, אשר שייכים למחלקה כל מופע יכול לקרוא לשירותי מופע מתוך שירותים אלה יש גישה למשתנה,this אשר מצביע על העצם הקורא, וממנו ניתן לגשת לשדות ושירותי מופע נוספים בניגוד לשירותים)\פונקציות\מתודות( סטטיים, אשר אינם מקושרים למופע ספציפי אלא רק למחלקה 2

המצב הפנימי של אובייקט 3 המצב הפנימי של עצם מיוצג ע"י נתוניו )שדותיו( שדות עצם יהיו לרוב עם הרשאת גישה פרטית במקרה של חשבון בנק: מצב פנימי: מכיל בין היתר שדה לייצוג היתרה מאיזה טיפוס? public class BankAccount {... private double balance;...

שירותי מופע ישנם 3 סוגי שירותים )מתודות, פונקציות, פרוצדורות(: שאילתות )queries, accessors( מחזירות ערך ללא שינוי המצב הפנימי שאילתות צופות :)observers( מחזירות פרט מידע הקשור לעצם )למשל, בירור יתרה( שאילתות מפיקות :)producers( מחזירות עצם מאותו טיפוס )למשל, חשבון חיסכון המקושר לחשבון עובר ושב( בד"כ שימושיות עבור עצמים מקובעים )immutable( כמו מחרוזות. פקודות mutators( )commands, transformers, מבצעות שינוי במצב הפנימי של העצם כגון: משיכה, הפקדה בנאים )constructors( יצירת עצם חדש כגון: יצירת חשבון חדש 4

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

תנאי קדם )preconditions( מגדירים את הנחות הספק - מצבים של התוכנית שבהם מותר לקרוא לשירות בד"כ, ההנחות הללו נוגעות רק לקלט שמועבר לשירות. תנאי הקדם יכול להיות מורכב ממספר תנאים שעל כולם להתקיים )AND( סימון: @pre 6

תנאי אחר )postconditions(... אם תנאי הקדם מתקיים, הספק חייב לקיים את תנאי האחר ואם תנאי קדם אינו מתקיים? אולי השרות יסתיים ללא בעיה אולי השרות יתקע בלולאה אינסופית אולי התוכנית תעוף מייד אולי יוחזר ערך שגוי לא ניתן להניח דבר: אולי השרות יסתיים ללא בעיה אך התוכנית תעוף ובכתיב לוגי: תנאי קדם תנאי אחר, )תנאי קדם(!? סימון: / תתקע לאחר מכן @post 7

כיצד נסמן? בקורס הנוכחי אנחנו מאפשרים גמישות בתחביר של כתיבת חוזים ניתן להשתמש ב: תנאים בוליאניים בג'אווה )x >=0( תגיות מהסגנון )שנלמד בהרצאה(: @pre, @post, $prev, $ret, $implies ביטויים ונוסחאות מתמטיים ) x [0,1]( שפה חופשית )"M is a diagonal square matrix ( שילובים של הנ"ל, ועוד בכתיבת חוזים חשוב לשמור על התייחסות לכל המקרים שמתאימים לתנאי הקדם בתנאי האחר תמציתיות, בהירות ודיוק! )בייחוד אם משתמשים בשפה טבעית( 8

שאילתות BankAccount public class BankAccount { public double getbalance() {...; שאילתות public long getaccountnumber() {...; public Customer getowner )( {...; private double balance; private long accountnumber; private Customer owner; מוסכמה: הגישה לשדה field תעשה בעזרת המתודה.getField() שמירה על מוסכמה זו הכרחית בסביבות JavaBeans ו- GUI Builders מצב פנימי 9

getter/setter יש חשיבות לגישה לנתונים דרך מתודות. מדוע? לא כל שדה עם נראות פרטית )private( getter/setter ציבורי צריך 10 למשל: עבור השדה balance האם דרוש?getter כן, זהו חלק מהממשק של חשבון בנק האם דרוש?setter public void setbalance(double balance) { this.balance = balance; לא בהכרח, פעולות של משיכה או הפקדה אמנם משפיעות על היתרה, אבל פעולה של שינוי יתרה במנותק מהן אינה חלק מהממשק

פקודות: משיכה והפקדה public void deposit(double amount) { balance += amount; /** * Withdraw amount from the account * * @pre 0 < amount <= getbalance() * @post getbalance() == $prev(getbalance()) - amount */ public void withdraw(double amount) {?????????????????????????????????????????????????????????????????????????????? balance -= amount; שקול ל- this.balance אפשרות א': חוזה 11

פקודות: משיכה והפקדה public void deposit(double amount) { balance += amount; /** * Withdraw amount from the account * * @pre 0 < amount <= getbalance() * @post getbalance() == $prev(getbalance()) - amount */ public void withdraw(double amount) { balance if (amount -= amount; < 0 amount > getbalance()) { System.out.println("Invalid withdrawal amount: "+ amount); return; balance -= amount; 12 אפשרות ב ': תכנות מתגונן:

דיון העברה בנקאית מספר חלופות למימוש העברת סכום מחשבון לחשבון: אפשרות א: מתודה סטטית שתקבל שני חשבונות בנק ותבצע ביניהם העברה: /** * Makes a transfer of amount from one account to the other * @pre 0 < amount <= from.getbalance() * @post to.getbalance() == $prev(to.getbalance()) + amount * @post from.getbalance() == $prev(from.getbalance()) amount */ public static void transfer(double amount, BankAccount from, BankAccount to) { from.withdraw(amount); to.deposit(amount); 13

דיון העברה בנקאית אפשרות ב: אחד החשבונות אחראי לפעולה מעביר הכסף( )למשל, /** * Makes a transfer of amount from the current * account to the other one */ public void transferto(double withdraw amount, BankAccount other) { other.deposit(amount); withdraw(amount); אפשר גם להשתמש בהעמסה של withdraw 14

בנאי תפקיד: ליצור עצם חדש ולאתחל את שדותיו בנאי לא אמור לכלול לוגיקה נוספת פרט לכך! לאחר האתחול העצם חייב לקיים את משתמר המחלקה דוגמא למשתמר: מאזן אי-שלילי, בעלים אינו,null מס' חשבון חיובי....null במחלקה :BankAccount בנאי ברירת המחדל יוצר עצם שאינו מקיים את המשתמר! נותן ערכי ברירת מחדל לכל השדות, ולכן, למשל, הבעלים הוא יש דברים שאינם באחריות המחלקה. למשל: מי דואג לתקינות מספרי חשבון? )למשל שיהיו שונים( מי מנהל את מאגר הלקוחות? 15

בנאי BankAccount /** * Constructs a new account and sets its owner and identifier * @pre id > 0 * @pre customer!= null * @post getowner() == customer * @post getaccountnumber() == id * @post getbalance() == 0 */ public BankAccount(Customer customer, long id) { accountnumber = id; owner = customer; אין ערך החזרה לבנאי! לא נקרא ל- new BankAccount מכאן אם יש בעיה בקלט אי אפשר להחזיר null 16

העמסת בנאים /** * Constructs a new account and sets its owner and identifier * @pre id > 0 * @pre customer!= null * @pre initialbalance >= 0 * @post getowner() == customer * @post getaccountnumber() == id * @post getbalance() == initialbalance */ public BankAccount(Customer customer, long id, double initialbalance) { this(customer, id); balance = initialbalance; תזכורת: העמסה = יצירת מתודה בעלת שם זהה אך עם ארגומנטים שונים. דומה ניתן להגדיר בנאים עם ארגומנטים שונים. באופן this() כאן משמש לא כמשתנה אלא כקריאה לבנאי אחר של אותה מחלקה שיבצע אתחול ראשוני על העצם שאנו מייצרים. ניתן להשתמש בתחביר זה רק מתוך בנאי! 17

עצמים, מחלקות, נראות ומה שביניהם 18

המחלקה CurrentClass public class CurrentClass { public static void mypublicstaticmethod() { System.out.println("In mypublicstaticmethod"); private static void myprivatestaticmethod() { System.out.println("In myprivatestaticmethod"); public void mypublicmethod() { System.out.print("In mypublicmethod >> "); myprivatemethod(); private void myprivatemethod() { System.out.println("In myprivatemethod"); קריאה למתודה פרטית ממתודה פומבית )גם ההפך זה בסדר( 19

המחלקה OtherClass public class OtherClass { public static void otherspublicstaticmethod() { System.out.println("In otherspublicstaticmethod"); private static void othersprivatestaticmethod() { System.out.println("In othersprivatestaticmethod"); public void otherspublicmethod() { System.out.print("In otherspublicmethod >> "); othersprivatemethod(); private void othersprivatemethod() { System.out.println("In othersprivatemethod"); 20

נוסיף main ל- CurrentClass public class CurrentClass { public static void main(string[] args) { CurrentClass.myPublicStaticMethod(); mypublicstaticmethod(); CurrentClass.myPrivateStaticMethod(); CurrentClass.myPublicMethod(); CurrentClass currentclass = new CurrentClass(); currentclass.mypublicmethod(); // Prints: In mypublicmethod >> In myprivatemethod currentclass.myprivatemethod(); // Prints: In myprivatemethod currentclass.mypublicstaticmethod(); //Has a warning, Prints: In mypublicstaticmethod OtherClass.othersPublicStaticMethod(); otherspublicstaticmethod(); OtherClass.othersPrivateStaticMethod(); // Prints: In mypublicstaticmethod // Prints: In mypublicstaticmethod // Prints: In myprivatestaticmethod // Prints: In otherspublicstaticmethod... OtherClass otherclass = new OtherClass(); otherclass.otherspublicmethod(); // Prints: In otherspublicmethod >> In othersprivatemethod otherclass.othersprivatemethod(); 21

מסקנות מתודה סטטית אינה יכולה לקרוא למתודה שאינה סטטית חייבים לציין מיהו העצם שהשירות משויך אליו mypublicmethod() לא יעבוד currentclass.mypublicmethod() נראות מגדירה מאיזה מקום בקוד נראות פרטית = )מתוך מתודה סטטית( כן! ניתן לגשת למתודה ניתן לגשת רק מהקוד של אותה מחלקה נראות פומבית = ניתן לגשת מכל מחלקה )אם היא לא באותה חבילה, יש להוסיף הצהרת )import נלמד על עוד שני סוגים בהמשך 22

Instance vs. Class (static) Fields Instance fields למה? ייצוג פנימי של המופע Class (static) fields למה? קבועים ערכים המשותפים לכל מופעי המחלקה מתי? מאותחלים לפי הסדר עם טעינת המחלקה מתי? מאותחלים עם יצירת האובייקט כמה? אחד לכל מופע כמה? יש רק 1 בכל התוכנית! )0 המחלקה( לפני טעינת מאיפה? ) 23 מאיפה? נגישים ממתודות סטטיות ומתודות מופע נגישים אך ורק ממתודות מופע! )למה?

דוגמא public class BankAccount { public static final String BANK_NAME = "BNP"; //static constant private static int lastaccountid = 0; //static field private int id; public BankAccount() { id = ++lastaccountid; // unique ID for every account /* static method */ public static void main(string[] args) { System.out.println(lastAccountId); System.out.println(id); BankAccount account = new BankAccount(); System.out.println(account.id); Why?? /* instance method */ public void printstuff() { System.out.println(lastAccountId); System.out.println(id); 24

הסוף... 25