PowerPoint Presentation

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

Microsoft PowerPoint - rec3.ppt

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

Slide 1

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

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

PowerPoint Presentation

PowerPoint Presentation

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

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

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

PowerPoint Presentation

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

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

Slide 1

PowerPoint Presentation

PowerPoint Presentation

תרגול 1

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

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

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

Slide 1

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

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

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

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

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

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

PowerPoint Presentation

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

Slide 1

PowerPoint Presentation

Slide 1

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

Microsoft PowerPoint - rec1.ppt

Slide 1

Microsoft Word - pitaron222Java_2007.doc

Microsoft PowerPoint - rec8.ppt

PowerPoint Presentation

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

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

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

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

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

Microsoft Word - c_SimA_MoedB2005.doc

Microsoft PowerPoint - 10_threads.ppt

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

Microsoft PowerPoint - lec10.ppt

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

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

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

Slide 1

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

תרגול 1

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

Microsoft PowerPoint - lec9.ppt

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

Slide 1

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

מקביליות

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

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

Microsoft PowerPoint - 07_tdd.ppt

Overview of new Office 365 plans for SMBs

Slide 1

1

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

HTML - Hipper Text Makeup Language

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

פייתון

שקופית 1

Microsoft PowerPoint - L01-n.ppt

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

Microsoft PowerPoint - lec9.ppt

Slide 1

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - 07_tdd.ppt

תרגול 1

תרגול 1

מצגת של PowerPoint

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

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

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

Slide 1

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

Microsoft Word - דוגמאות ב

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

Slide 1

Tutorial 11

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

מקביליות

1 תבניות טקסט מהי תבנית טקסט? שימוש ב- Characters Meta שימוש ב- Expression Grouping שימוש ב- Quantifiers תת תבניות הפונקציה preg_match הפונקציה preg_m

תמליל:

The StringBuffer Class Represents a mutable character string Main methods: append() & insert() accept data of any type If: sb = new StringBuffer("123") Then: sb.append(4) is equivalent to sb.insert(sb.length(), 4). Both yields "1234" 1234" 123" sb סיום מחרוזות חוב משבוע שעבר 2 1 Inefficient version using String: public static String duplicate(string s, int times) { String result = s; for (int i=1; i<times; i++) { result = result + s; StringBuffer vs. String return result; A new String object is created each time The Concatenation Operator (+) String conversion and concatenation: "Hello " + "World" is "Hello World" "19" + 8 + 9 is "1989" Concatenation by StringBuffer String x = "19" + 8 + 9; is compiled to the equivalent of: String x = new StringBuffer().append("19"). append(8).append(9).tostring(); 4 3 Much more efficient version: public static String duplicate(string s, int times) { StringBuffer result = new StringBuffer(s.length() * times); for (int i=0; i<times; i++) { result.append(s); StringBuffer vs. String (cont.) return result.tostring(); created with the correct capacity More efficient version with StringBuffer: public static String duplicate(string s, int times) { StringBuffer result = new StringBuffer(s); for (int i=1; i<times; i++) { result.append(s); StringBuffer vs. String (cont.) return result.tostring(); no new Objects 6 5 1

תכנון תוכנה למערכת בנקאית עולם הפתרון: שפת תכנות עצמים מחלקות שירותים שדות עולם הבעיה: בנקים לקוחות משיכות, הפקדות חשבונות יתרות תוכנה 1 תרגולים 5-6: מחלקות ועצמים ליאור שפירא ואורנית דרור תכנון מערכת תוכנה עוסק במיפוי בין עולם הבעיה ועולם הפתרון 8 7 תכנון מחלקה לייצוג חשבון בנק בגישה מכוונת עצמים מייצגים ישויות מעולם הבעיה ע"י ישויות בשפת התכנות כל שם עצם מעולם הבעיה מועמד לייצוג ע"י מחלקה יש להיזהר לא להיצמד בקנאות לעולם האמיתי )דוגמא: פקיד בנק שעושה הכל( נתכנן מחלקה לייצוג חשבון בנק נהפוך תיאור המילולי של חשבון בנק לרכיב תוכנה עם מצב פנימי וסט פעולות אפשריות תאור הפעולות יתבטא בחוזה ובמתודות המחלקה המצב הפנימי המצב הפנימי של עצם מיוצג ע"י נתוניו )שדותיו( שדות עצם הם לרוב עם הרשאת גישה פרטית במקרה של חשבון בנק: מצב פנימי: מכיל בין היתר שדה לייצוג היתרה מאיזה טיפוס?... private??? balance; 10 9 המצב הפנימי שרותי המחלקה ישנם 3 סוגי שירותים )מתודות, פונקציות, פרוצדורות( שאילתות accessors( )queries, מחזירות ערך ללא שינוי המצב הפנימי כגון: בירור יתרה פקודות mutators( )commands, transformers, מבצעות שינוי במצב הפנימי של העצם כגון: משיכה, הפקדה בנאים )constructors( יצירת עצם חדש כגון: יצירת חשבון חדש המצב הפנימי של עצם מיוצג ע"י נתוניו )שדותיו( שדות עצם הם לרוב עם הרשאת גישה פרטית במקרה של חשבון בנק: מצב פנימי: מכיל בין היתר שדה לייצוג היתרה מאיזה טיפוס?... private double balance; 12 11 2

שאילתות BankAccount public double getbalance() { return balance; public long getaccountnumber() { return accountnumber; public Customer getowner )( { return owner; private double balance; private long accountnumber; private Customer owner; שאילתות BankAccount ברור יתרה: ארגומנטים? מה טיפוס הערך המוחזר? חוזה? )תנאי קדם? תנאי אחר?( פרטים על החשבון: מספר חשבון? פרטים על בעל החשבון? תעודת זהות? גיל? מוסכמה: הגישה לשדה field תעשה בעזרת המתודה.getField() שמירה על מוסכמה זו הכרחית בסביבות JavaBeans ו- GUI Builders שאילתות מצב פנימי 15 14 getter/setter המתודה: deposit סכום הכסף המופקד מתווסף ליתרה בחשבון ארגומנטים? ערך מוחזר? חוזה? )תנאי קדם?, תנאי אחר?( מוסכמה: שמות פקודות הם שמות פועל יש חשיבות לגישה לנתונים דרך מתודות. מדוע? לא כל שדה עם נראות פרטית )private( צריך getter/setter ציבורי יצירה אוטומטית של שרותים אלו עבור כל שדה פוגמת בעקרון הסתרת המידע למשל: עבור השדה balance האם דרוש?getter כן, זהו חלק מהממשק של חשבון בנק האם דרוש?setter לא בהכרח, פעולות של משיכה או הפקדה אמנם משפיעות על היתרה, אבל פעולה של שינוי יתרה במנותק מהן אינה חלק מהממשק 17 16 * Makes a deposit to the account * @pre amount > 0????????????????????????????? public void deposit(double amount) { * Makes a deposit to the account * @pre?????????????????????????????????????????????????????????????????? public void deposit(double amount) { בגישת תכנות לפי חוזה תנאיי הקדם לא יבדקו בגוף המתודה. אחרת: תכנות מתגונן. 19 18 3

המתודה: withdraw סכום הכסף המבוקש יורד מיתרת החשבון. משיכת יתר )אוברדרפט( אינו אפשרי. ארגומנטים? ערך מוחזר? חוזה? )תנאי קדם? תנאי אחר?( * Makes a deposit to the account * @pre amount > 0 * @post getbalance() == $prev(getbalance()) + amount public void deposit(double amount) { 21 20 * Withdraw amount from the account * @pre 0 < amount <= getbalance()?????????????????????????????? public void withdraw(double amount) { * Withdraw amount from the account * @pre???????????????????????????????????????????????????????????????????? public void withdraw(double amount) { 23 22 דיון העברה בנקאית מספר חלופות למימוש העברת סכום מחשבון לחשבון: אפשרות א: מתודה סטטית שתקבל שני חשבונות בנק ותבצע ביניהם העברה: * 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); * Withdraw amount from the account * @pre 0 < amount <= getbalance() * @post getbalance() == $prev(getbalance()) - amount public void withdraw(double amount) { 25 24 4

אפשרות ב: דיון העברה בנקאית דיון העברה בנקאית אפשרות ג: העמסת withdraw ו/או deposit שיקבלו שני ארגומנטים )סכום והפנייה לחשבון נוסף(: * Makes a transfer of amount from other to the current account * @pre 0 < amount <= other.getbalance() * @post getbalance() == $prev(getbalance()) + amount * @post other.getbalance() == $prev(other.getbalance()) amount public void deposit(double amount, BankAccount other) { other.withdraw(amount); * Makes a transfer of amount from the current account to * the other one public void transferto(double amount, BankAccount other) { other.deposit(amount); 27 26 שמורת BankAccount שמורת המחלקה Invariant( )Class * @inv getbalance() >= 0 * @inv getaccountnumber() > 0 * @inv getowner()!= null... צריכה להתקיים "תמיד" לפני ואחרי ביצוע כל מתודה ציבורית אחרי הבנאי במחלקה חשבון בנק: חשבון חייב להיות עם יתרה אי שלילית לכל חשבון קיים מספר מזהה במערכת לכל חשבון יש בעלים 29 28 בנאי BankAccount בנאי * Constructs a new account and sets its owner and identifier * @pre???????? * @pre???????? public BankAccount(Customer customer, long id) { accountnumber = id; owner = customer; תפקיד: ליצור עצם חדש המקיים את שמורת המחלקה בנאי לא אמור לכלול לוגיקה נוספת פרט לכך במחלקה :BankAccount בנאי ברירת המחדל יוצר עצם שאינו מקיים את השמורה! יש דברים שאינם באחריות המחלקה. למשל: מי דואג לתקינות מספרי חשבון? )למשל שיהיו שונים( מי מנהל את מאגר הלקוחות? הכמסה )encapsulation( 31 30 5

בנאי BankAccount בנאי 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; * Constructs a new account and sets its owner and identifier * @pre id > 0 * @pre customer!= null public BankAccount(Customer customer, long id) { accountnumber = id; owner = customer; 33 32 שיעור הבא final נשלים את דוגמת הבנק נבדוק את הקשר בין המחלקות השונות במערכת Bank Customer BankAccount נראה דוגמה לשימוש במערכת חשבון בנק מזוהה חד-חד ערכית עם עצם לא משתנה של.accountNumber לכן, נהפוך שדה זה ל- :final final private long accountnumber; Blank final field: a final field that hasn't been initialized at creation שדה blank final יש לאתחל פעם אחת בדיוק, בתוך הבנאי של המחלקה. אכיפה ע"י הקומפיילר: במקרה של השמות נוספות למשתנה final תהיה שגיאת קומפילציה 37 34 6