© המרכז להוראת המדעים האוניברסיטה העברית בירושלים

Slides:



Advertisements
Similar presentations
Object Oriented 33 MCSD DORON AMIR
Advertisements

ממיבחניםC שאלות ++.
תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
מבוא למדעי המחשב לתעשייה וניהול
בתרגול הקודם הורשה: –ניתן להרחיב רק מחלקה אחת –כל מה שלא private – עובר בהורשה –המילה השמורה super –יצירת היררכיה –Object היא שורש ההיררכיה –דריסה אופרטור.
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
האוניברסיטה העברית בירושלים
מבוא כללי למדעי המחשב תרגול 1. כתיבת התוכנה כתיבת התוכנית עצמה נעשית ע " י כתיבת קובץ טקסט רגיל אשר תוכנו מקיים את כללי שפת C כתיבת התוכנית עצמה נעשית.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
דוד שוורץ, עידן זק, נטע צור וחיה כהן. הפונקציונאליות : המשתמש יבחר קובץ שעליו הוא רוצה לבצע את האנליזה, וילחץ עליו עם כפתור ימני בעכבר. יפתח תפריט ובו.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
הוראת המדעים האוניברסיטה העברית1 רקורסיה. הוראת המדעים האוניברסיטה העברית2 חלק א: רקורסיה עם מספרים.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
דוד שוורץ, עידן זק, נטע צור וחיה כהן. הפונקציונאליות:  המשתמש בוחר קובץ שעליו הוא רוצה לבצע את האנליזה, ולוחץ עליו עם כפתור ימני בעכבר.  נפתח תפריט.
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
תכנות תרגול 10 שבוע : הקשר בין מערכים למצביעים נרצה לעמוד על הקשר בין מערך למצביע מאחר ומערכים הם הכללה של משתנים הרי שברור שלמערך ולכל אחד מאיבריו.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
קורס תכנות – סימסטר ב ' תשס " ח שיעור שישי: מערכים
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים 1 הפניות.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
אתחול עצמים. אתחולים ובנאים יצירת מופע חדש של עצם כוללת: הקצאת זכרון, אתחול, הפעלת בנאים והשמה לשדות במסגרת ריצת הבנאי נקראים גם הבנאי/ם של מחלקת הבסיס.
המשך תכנות מונחה עצמים 1. היום בתרגול  הורשה  שיטות מיוחדות  פולימורפיזם 2.
ניתוח מערכות מידע ב נעים להכיר... תכנות ב C#.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Methods public class Demonstrate { public static void main (String argv[]) { public static void main (String argv[]) { int script = 6, acting = 9, directing.
1 מבוא למדעי המחשב הרצאה 21: Queue, Iterator & Iterable.
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים עוברים לג ' אווה.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
1 תרגול 11: Design Patterns ומחלקות פנימיות 1 תוכנה 1.
 Client, Supplier ומה שביניהם ( ADT!).  שאלה 1: יצירת ADT עבור מעגל במישור נניח שלקוח מעוניין בפעולות הבאות : הזזת מעגל וחישוב שטח מעגל. הספק יספק ללקוח.
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים פולימורפיזם מתקדם ממשקים בג ' אווה 1.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 12. ספריות.
מבנה נתונים או טיפוס נתונים מופשט חלק ב – פעולות על רשימה הוכן ע " י ולרי פקר דצמבר 2015.
1 תרגול 11: Design Patterns ומחלקות פנימיות אסף זריצקי ומתי שמרת 1 תוכנה 1.
1 נתבונן בפונקציה הבאה public static int min(int[] a,int n) { int min = a[0]; for (int i = 1; (i < n ) && (i < a.length) ; i++) if (min > a[i]) min = a[i];
ישראל אומן המרכז לחקר הרציונליות האוניברסיטה העברית, ירושלים פורום הסטודנטים לכלכלה ח"י בטבת תשע"ב באוניברסיטת תל-אביב ( ) כלכלה התנהגותית: כהנמן.
עקרונות תכנות מונחה עצמים תרגול 11: OOP in C++. Outline  Where do the objects live ?  Inheritance  Slicing  Overriding vs Shadowing.
מחרוזות – הטיפוס String
עיצוב תוכנה מבוסס עצמים סדנאות תשס"ח-תשס"ט
האוניברסיטה העברית בירושלים
מחלקות classes.
מבוא לתכנות מונחה עצמים Object Oriented Programming
באר-שבע 2015 יום עיון
תכנות מונחה עצמים.
SQL בסיסי – הגדרה אינדוקטיבית
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
תכנות מכוון עצמים ושפת JAVA
Static and enum קרן כליף.
תכנות מכוון עצמים בשפת JAVA
ממשקים - interfaces איך לאפשר "הורשה מרובה".
תרגול מס' 6 מחלקות, עצמים, וקצת חוזים
בניית מחסנית סטטית Static Stack Implementation מורים מובילים תשע"ה
אובייקטים ומחלקות קרן כליף.
שפת c# הלכה למעשה צעדים ראשונים רחל קורדובה עמל מקיף ג ראשל"צ.
ניתוח מערכות מידע תכנות ב C#
תכנות מכוון עצמים ושפת JAVA
תכנות מכוון עצמים ושפת JAVA
תזכורת על מה דיברנו שיעור שעבר? בנינו אתר אינטרנט עם כותרות
מבוא לתכנות מונחה עצמים Object Oriented Programming
תוכנה 1 תרגול 13 – סיכום.
תכנות מכוון עצמים ו- C++ יחידה 02 העמסת פונקציות, ערכי ברירת מחדל, enum, קימפול מותנה קרן כליף.
Engineering Programming A
פולימורפיזם מתקדם ממשקים בC# עריכה ועיצוב: קרן הרדי
Presentation transcript:

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים עצוב תוכנה מבוסס עצמים שיעור 3 © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים מחלקות © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים מהי מחלקה? Bucket מחלקה היא הגדרה של אוסף תכונות ופעולות המשותפות לכל העצמים שנוצרו מהמחלקה. ייצוג – בחירת התכונות int capacity // קיבולת הדלי בליטרים double currentAmount // כמות המים Bucket (int capacity) void empty() boolean isEmpty() void fill (double amountToFill) double getCapacity() double getCurrentAmount() void pourInto (Bucket bucketInto) String toString() © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים הכרזה על מחלקה /** * This class represents a Bucket. * @author: OOP Team */ public class Bucket { // כאן ייכתב גוף המחלקה } קובץ חדש למחלקה חדשה Bucket.java שם המחלקה מסמן הגדרת מחלקה הרשאת גישה © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים ייצוג המחלקה /** * This class represents a Bucket. * @author: OOP Team */ public class Bucket { //the attributes of the class: private int capacity; // קיבולת הדלי בליטרים private double currentAmount; // בדלי כמות המים שברגע זה : } תכונות הן המשתנים הפנימיים של העצם שיווצר ממחלקה זו. הרשאת גישה פרטית טיפוס התכונה שם התכונה © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים פעולות – פעולה בונה פעולה בונה שם זהה לשם המחלקה. נקראת בזמן יצירת העצם. מאתחלת את ערכי התכונות public class Bucket { private int capacity; private double currentAmount; public Bucket (int capacity) this.capacity = capacity; this.currentAmount = 0; } הרשאת גישה סוגריים המסמנים פעולה ומכילים פרמטרים כשם המחלקה איתחול ראשוני של התכונות © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים פעולות נוספות public class Bucket { private int capacity; private double currentAmount; // פעולות נוספות... public boolean isEmpty() return(this.currentAmount == 0); } פעולה שבודקת האם הדלי ריק? © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

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

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים הרשאות גישה פומבי (public) פרטי (private) public class Bucket { private int capacity; private double currentAmount; public Bucket (int capacity) this.capacity = capacity; this.currentAmount = 0; } : public boolean isEmpty() return (this.currentAmount == 0); public class TestBucket { public static void main (String[] args) Bucket b1 = new Bucket(4); int cap = b1.capacity; boolean check = b1.isEmpty(); } © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים עיקרון ההכמסה מדוע התכונות פרטיות והשיטות פומביות? והתשובה... 1) כך אפשר לשנות את המימוש בלי לגעת בממשק 2) כך מתאפשרת גישה מבוקרת לתכונות © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים פעולות נוספות public class Bucket { // תכונות... public void fill (double amountToFill) // אם הקיבולת של הדלי קטנה מהכמות החדשה שאמורה להתקבל בדלי if (this.capacity < this.currentAmount + amountToFill) this.currentAmount = this.capacity; // אז מלא את הדלי עד הסוף else this.currentAmount += amountToFill; } פעולה הממלאת דלי © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים פעולות נוספות public class Bucket { private int capacity; private double currentAmount; : public String toString() return(“The capacity: “ + this.capacity + “\n” + “The current amount of water: “ + this.currentAmount); } פעולה לבניית מחרוזת המתארת את העצם. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

bucketInfo.currentAmount; פעולה המקבלת עצם כפרמטר – למי פונים? public class Bucket{ public void example (Bucket bucketInto) { int capacity1 = this.capacity; int capacity2 = bucketInto.getCapacity(); int currentAmount1 = this.currentAmount; int currentAmount2 = bucketInto.getCurrentAmount(); bucketInto.fill (5); this.fill (3); } bucketInfo.capacity; bucketInfo.currentAmount; © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

פעולות נוספות-פעולה המקבלת עצם כפרמטר public void pourInto (Bucket bucketInto) { double freeSpace = bucketInto.getCapacity() – bucketInto.getCurrentAmount(); if (this.currentAmount < freeSpace) bucketInto.fill (this.currentAmount); this.currentAmount = 0; } else bucketInto.fill (freeSpace); this.currentAmount – = freeSpace; הפעולה שפוך מהדלי לדלי אחר © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים העמסת פעולות ניתן לכתוב כמה פעולות בעלות אותו שם בתנאי שרשימת הפרמטרים שלהן שונה. השוֹנוּת יכולה להיות במספר הפרמטרים או בטיפוסיהם או בסדר שלהם. public Bucket (); public Bucket (int capacity); public Bucket (int capacity, double currentAmount); © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים פעולות בונות שונות חובת הפעולה הבונה לאתחל את כל התכונות (ללא תלות בפרמטרים) יש לתעד את כל ערכי ברירת המחדל /** * פעולה בונה של המחלקה דלי * הפעולה לא מקבלת פרמטרים * ובונה דלי ריק בגודל 10 */ public Bucket (){ this.capacity = 10; this.currentAmount = 0; } © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים פעולה בונה ברירת מחדל שאלה : מה יקרה אם ניצור מחלקה ולא נכתוב שום פעולה בונה? האם במקרה כזה לא ניתן יהיה ליצור עצם? תשובה: כדי למנוע מצב כזה , הקומפיילר מוסיף פעולת ברירת מחדל משלו, רק במקרה שאין פעולה בונה אחרת. פעולה זו אינה נראית במחלקה, אך מאפשרת ליצור עצם על ידי זימון פעולה בונה ללא פרמטרים: Bucket b = new Bucket(); © המרכז להוראת המדעים האוניברסיטה העברית בירושלים

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

© המרכז להוראת המדעים האוניברסיטה העברית בירושלים תרגילים Point – תרגיל מס' 1. Javadoc – תרגיל מס' 2. © המרכז להוראת המדעים האוניברסיטה העברית בירושלים