שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית

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.
האוניברסיטה העברית בירושלים
"נכון ולא נכון"-אמיתות,בדיות והטעיות – בהתארגנויות עובדים.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
חורף - תשס " ג 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.
אוניברסיטת בן גוריון - מבוא למדעי המחשב 1 תרגול מספר 10  ממשקים o כללים בסיסיים o מימוש מספר ממשקים o דוגמת ממשק כחוזה  הורשה o כללים בסיסיים o דריסה.
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
שאילת שאלות שאלת חקר המפתח למנעול 1. שאילת שאלות – שאלת חקר מה ניתן לשנות ? :  בתנאים : טמפ ' או לחץ או הכלים, או הציוד  בחומרים : איכות או כמות או.
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
א " ב, מילים, ושפות הפקולטה למדעי המחשב אוטומטים ושפות פורמליות ( ) תרגיל מספר 1.
תורת הקבוצות חלק ב'. קבוצה בת מניה הגדרה: קבוצה אינסופית X היא ניתנת למניה אם יש התאמה חד-חד ערכית בין X לבין .
הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353)
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
יחס סדר חלקי.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
© המרכז להוראת המדעים האוניברסיטה העברית בירושלים
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
Points on a perimeter (Convex Hull) קורס – מבוא לעבוד מקבילי מבצעים – אריאל פנדלר יאיר ברעם.
1 Formal Specifications for Complex Systems (236368) Tutorial #3 Z introduction and notation (contd.); Birthday book example (Chapter 1 in the book)
אתחול עצמים. אתחולים ובנאים יצירת מופע חדש של עצם כוללת: הקצאת זכרון, אתחול, הפעלת בנאים והשמה לשדות במסגרת ריצת הבנאי נקראים גם הבנאי/ם של מחלקת הבסיס.
תוכנה 1 תבנית העיצוב Observer 1 שחר מעוז בית הספר למדעי המחשב אוניברסיטת תל אביב.
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
פיתוח מערכות מידע 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.
תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1 ואפליקציות ל- Windows Phone 8 Control (Part II)
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Costs and Filters Dr. Avi Rosenfeld Department of Industrial Engineering Jerusalem College of Technology
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
תוכנה 1 תרגול מספר 9: הורשה מחלקות אבסטרקטיות חריגים בית הספר למדעי המחשב אוניברסיטת תל אביב.
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.
האוניברסיטה העברית בירושלים
Object Oriented Programming
Object Oriented Programming
Formal Specifications for Complex Systems (236368) Tutorial #1
Object Oriented Programming
Object Oriented Programming
מחלקות classes.
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
תכנות מכוון עצמים ושפת JAVA
Static and enum קרן כליף.
תכנות מכוון עצמים ושפת JAVA
תכנות מכוון עצמים בשפת JAVA
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
ממשקים - interfaces איך לאפשר "הורשה מרובה".
אובייקטים ומחלקות קרן כליף.
ניתוח מערכות מידע תכנות ב C#
תכנות מכוון עצמים ושפת JAVA
תכנות מכוון עצמים ושפת JAVA
תזכורת על מה דיברנו שיעור שעבר? בנינו אתר אינטרנט עם כותרות
ירושה הגדרת קשר Is A.
תוכנה 1 תרגול 13 – סיכום.
מחסנית ותור Stacks and Queues.
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
הכלת אובייקטים קרן כליף.
פולימורפיזם מתקדם ממשקים בC# עריכה ועיצוב: קרן הרדי
Presentation transcript:

שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית הכלה שימוש בעצם ממחלקה אחרת כמאפיין במחלקה הנוכחית

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

קשר הכלה כקשר has A כפי שראינו בדוגמא הקודמת – A car has A engine אם הגדרת מחלקה : class Engine {…} כאשר אני בא לבנות מכונית אני אשתמש במחלקה שהגדרתי קודם . class Engine{ private boolean state; public void switchOn ( ){ state = true; }

כעת נגדיר מחלקת מכונית: class Car} private Engine engine; private int noOfPlaces; public void switchOn( ){ engine.switchOn(); } כלומר למרות שבניתי מחלקת מכונית, אני לא חייב לדעת את המבנה הפנימי של מחלקת מנוע אלא אני יכולה לעשות שימוש בו

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

מאפיינים מאפיין סוג מאפיין מס' עובד Integer שם עובד String (מחלקה – ספריית java) תאריך לידה Date (מחלקה - מחלקה שנגדיר מחלקה Department (מחלקה - מחלקה שנגדיר

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

מה אנחנו עושים? הגדרנו עובד ויש לו את המאפיינים הבאים: ת"ז עובד שם עובד תאריך לידה. נגדיר את זה כך בגאווה class Worker{ private int Id; private String name; private Date dob; הכלה

המאפיין תאריך לידה הוא מסוג מחלקה קיימת. לדבר זה יש יתרונות ויש גם חסרונות. יתרונות: יחידה מוכנה שמפשטת את הכתיבה. מתפקידה של תאריך לטפל בכל מה שקושר לתאריך ולכן כאשר אנחנו מגדירים Worker, אנחנו פתורים מלדאוג ל- Date קיצור כתיבת הקוד – אנחנו יכולים לבצע פעולות על ידי זימון פעולות מוכנות ביחידה המוכלת.

לדוגמא: אני מעונין לדעת מי הם העובדים שנולדו באותו יום. כיצד ניתן לעשות ? אפשרות 1 return (worker1.getDOB( ).getYear( ) == worker2.getDOB( ).getYear( ) && worker1.getDOB( ).getMonth( ) == worker2.getDOB( ).getMonth( ) && worker1.getDOB( ).getDay( ) == worker2.getDOB( ).getDay( ) ) מימוש זה מחייב שלמשתמש יהיה היכרות חלקי עם מבנה התאריך ויכנס ללוגיקה.

אפשרות 2: return worker1.getDOB( ).equals worker2.getDOB( )); כאן אנחנו פטורים מלהבין כיצד מאורגן התאריך ואנחנו יכולים להיעזר בפעולה שכתובה במחלקת תאריך דוגמא שניה: איך כותבים toString( ) עבור Worker? return “Worker name: “ + name + “dob : “ + dob.toString ( ) ….

איפה הבעיה? בנאי Worker: public Worker (int id; String name, Date dob){ this.id = id; this.name = name; this.dob = dob; } this.dob מכיל הפניה תאריך שנשלח עליו.

מה יקרה כאן? public static void main (String[] args){ Date date = new Date (1,1,1987); Worker w = new Worker (1,”Ami”,date); System.out.println (w); date.set (1,2,1990); System.out.println( ); }

כלומר – ברגע ששינו את האובייקט date שינו את תאריך יום ההולדת של העובד. מה שיודפס: Id : 1 Name: Ami DOB : 1/1/1987 Id : 1 Name : Ami DOB : 1/2/1990 כלומר – ברגע ששינו את האובייקט date שינו את תאריך יום ההולדת של העובד. איך date 1| 1 | 1987 | Ami | 1 w

יצירת תאריך חדשה ושמירת ההפניה במאפיין DOB תיקון הבעיה במקום לשמור הפניה לתאריך נשמור עותק של התאריך. public Worker (int id; String name, Date dob){ this.id = id; this.name = name; this.dob = dob.copy( ); } יצירת תאריך חדשה ושמירת ההפניה במאפיין DOB

הכלה - aggregation מאפיין נוסף של העובד הוא המחלקה בו הוא עובד. לצורך כך נבנה מחלקה נוספת – Department האם ההתנהגות של department הוא דומה להתנהגות של date? המאפיין מסוג Date הוא ייחודי בעצם לכל אובייקט של worker (יתכן שחלק מהעובדים יוולדו באותו יום אבל זה במקרה) המאפיין מסוג Department הוא יכול להיות משותף לכמה עובדים.

לפניך דוגמא: Department d1 = new Department ( 1, “R&D”); Worker w = new Worker (2, “Rachel”, new Date (2,3,1978), d1); System.out.println (w); d1.setName (“Research & Development”); גם כאן תחילה נדפיס ששם המחלקה הוא R&D אבל אח"כ הוא ישתנה והוא ישתנה אצל כל העובדים. סוג הקשר הוא "רופף" יותר והאובייקט d1 יכול להמשיך להתקיים גם ללא

תרגיל נגדיר את המחלקות הבאות: כתובת: כתובת היא מחלקה המכילה את המאפיינים הבאים שם רחוב מספר בית שם העיר מיקוד השיטות למימוש: אחזר רחוב, אחזר מס' בית, אחזר עיר ואחזר מיקוד. שנה רחוב, שנה מס' בית, שנה עיר, שנה מיקוד toString( ), equals( ) , copy( )

המחלקה מכילה את הנתונים של בעל חשבון בבנק. מחלקת בעל חשבון: המחלקה מכילה את הנתונים של בעל חשבון בבנק. המחלקה תכיל את המאפיינים הבאים: מס' לקוח שם לקוח כתובת לקוח השיטות למימוש: אחזר מס' לקוח, אחזר שם לקוח, אחזר כתובת לקוח שנה שם לקוח, שנה כתובת toString( ) , equals( )

המחלקה מכילה את הנתונים של בעל חשבון בבנק. מחלקת חשבון: המחלקה מכילה את הנתונים של בעל חשבון בבנק. המחלקה תכיל את המאפיינים הבאים: לקוח יתרה השיטות למימוש: אחזר לקוח, אחזר יתרה הפקד כסף, משוך כסף, שנה לקוח toString( ) , equals( )