1 / 23

טיפוס המייצג ישות, טיפוס ראשי, פעולות בונות

טיפוס המייצג ישות, טיפוס ראשי, פעולות בונות. ד"ר נוע רגוניס המכללה האקדמית בית-ברל. מבנה טיפוס. class < שם הטיפוס > { תכונות פעולה בונה פעולות מאחזרות וקובעות פעולות חישוביות }. פעולה בונה. < שם הפעולה כשם הטיפוס > ( < פרמטרים > ) {

kaelem
Download Presentation

טיפוס המייצג ישות, טיפוס ראשי, פעולות בונות

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. טיפוס המייצג ישות, טיפוס ראשי,פעולות בונות ד"ר נוע רגוניס המכללה האקדמית בית-ברל ד"ר נוע רגוניס

  2. מבנה טיפוס class <שם הטיפוס > { תכונות פעולה בונה פעולות מאחזרות וקובעות פעולות חישוביות } ד"ר נוע רגוניס

  3. פעולה בונה <שם הפעולה כשם הטיפוס> ( <פרמטרים> ) { ….. } • לא רשום טיפוס הערך מוחזר (למעשה מוחזר באופן סמוי המצביע לעצם שנוצר). • שם זהה לטיפוס. • מופעלת רק פעם אחת עבור עצם אחד. • הפעלתה מביאה לבניית העצם וגם לביצוע גוף הפעולה. ד"ר נוע רגוניס

  4. פעולה בונה הרחבה • לא חייבים להגדיר אותה, אם אינה מוגדרת תמיד ניתן להפעיל את הפעולה הבונה המוגדרת כברירת מחדל, ללא פרמטרים ועם גוף ריק. • אם מוגדרת פעולה בונה, אך רוצים שתהיה אפשרות לשימוש גם בפעולה הבונה "הריקה" יש להגדיר אותה במפורש בנוסף. ד"ר נוע רגוניס

  5. טיפוס ראשי • בתמ"ע אנחנו מדברים על פרויקט הכולל מספר טיפוסים. • כל טיפוס מתאר ישות מסוימת ומהווה תבנית ליצירת עצמים. • כל טיפוס כולל פעולות שניתן להפעיל על עצם מן הטיפוס. • אבל מה באמת קורה? מה מתבצע? מתי מתבצע? מי מביא לביצוע? ד"ר נוע רגוניס

  6. ד"ר נוע רגוניס

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

  8. ד"ר נוע רגוניס

  9. טיפוס ראשי – מטרות 2 • הטיפוס הראשי לא מייצג ישות – הוא האלגוריתם הראשי – הוא המנצח על תהליך הפתרון. • לפיכך לא נגדיר בו תכונות ולא נגדיר בו פעולות המתאימות לטיפוס המייצג ישות, אלא נגדיר בו פעולה ראשית בלבד. • מאחר וטיפוס זה לא מייצג ישות גם אין מקום להגדיר על פיו עצמים. ד"ר נוע רגוניס

  10. class MainPepper { ללא תכונות // public static void main(String[] args) { יצירת עצמים מטיפוסים אחרים // } } ד"ר נוע רגוניס

  11. הפעולההראשית בטיפוס הראשי • בפעולה הראשית יוגדרו העצמים המשתתפים בפתרון הבעיה ויופעלו עליהם פעולות. • בטיפוס המייצג ישות יש אוסף של פעולות, הפעלת הפעולות תהיה בהתאם לצורך של משימה. • צרכי המשימה יבואו לידי ביטוי בפעולה הראשית, היא תקבע את סדר ביצוע הפעולות בהתאם לנדרש. ד"ר נוע רגוניס

  12. class MainPepper { static final String DEFAULT = “red”; public static void main(String[] args) { Pepper pep = new Pepper(1, 100, DEFAULT); pep.setColor(“green”); pep.cutIntoNumPieces(10); System.out.println (“Pieces = “ + pep.getPieces()); } } ד"ר נוע רגוניס

  13. ומה עם ה- static ? • פעולה שתופעל על עצמים, לא תוגדר כ static. כלומר, הפעולות המוגדרות בטיפוס המייצג ישות לא יוגדרו כסטטיות. • פעולה שלא תופעל על עצמים, כן תוגדר כ static. (כמו כל הפעולות שהגדרנו עד כה...) • הרחבה על static ומשמעויותיו גם באשר לתכונות, בהמשך הקורס. ד"ר נוע רגוניס

  14. פעולה ראשית - מה מותר / מה נהוג • אין מניעה שלכל טיפוס תהיה פעולה ראשית, אך כפי שנאמר מקובל לבנות טיפוס מיוחד לצורך הפעלת התכנית – ורק בו תוגדר הפעולה הראשית. • מבחינת השפה ניתן גם לייצר עצמים מן הטיפוס הראשי, שהוא טיפוס לכל דבר, וניתן גם להגדיר בו פעולה יוצרת – אך אין לכך הקשר הגיוני במסגרת תמ"ע. ד"ר נוע רגוניס

  15. הפעלת הפעולה ראשית • ניתן "לזמן"טיפוס ממערכת ההפעלה. הזימון גורם לביצוע פעולת main של אותו טיפוס. java MainPepper • ב-BlueJ הפעולה הראשית מופיעה (ככל פעולה static) בתפריט של הטיפוס. • בכל סביבת פיתוח יש את הדרך שלה להפעיל את ה- main, או שהוא מופעל באופן אוטומטי. ד"ר נוע רגוניס

  16. הרחבה עלהפעולה הבונה ד"ר נוע רגוניס

  17. סדר פעולות בבנייה • הקצאת תא זיכרון "בודד"למשתנה pep עם ערך תחילי null – מצביע אל העצם. • הקצאת תאי זיכרון לתכונות העצם, ואתחול תכונותיו (לערכי ברירת מחדל). • ביצוע גוף הפעולה הבונה המשנה את ערכי תכונות העצם ו/או מבצעת פעולות נוספות. • השמת המצביע לעצם לתוך המשתנה pep. ד"ר נוע רגוניס

  18. class MainPepperSalad { public static void main() { Pepper pepr = new Pepper(1,100,"red"); Pepper pepg = new Pepper(1,100,"green"); Pepper pepy = new Pepper(1,100,"yellow"); PepperSalad salad = new PepperSalad(pepr, pepg, pepy); } } ד"ר נוע רגוניס

  19. ומה קורה פה? class MainPepperSalad { public static void main() { Pepper pepr = new Pepper(1,100,"red"); PepperSalad salad = new PepperSalad(pepr, pepr, pepr); } } ד"ר נוע רגוניס

  20. ריבוי פעולות בונות • ניתן להגדיר מספר רב של פעולות יוצרות, ובלבד שהחתימות יהיו שונות. • למשל פעולה יוצרת לפלפלים ירוקים ושלמים: public Pepper (int w) { weight = w; pieces = 1; color = “green”; } ד"ר נוע רגוניס

  21. ריבוי פעולות בונות • בחירת הפעולה הנכונה היא בהתאם לפרמטרים בזימון. Pepper p1 = new Pepper(1, 200, “red”); Pepper p2 = new Pepper(140); ד"ר נוע רגוניס

  22. ריבוי פעולות בונות • כאשר אין הגדרה של פ.י., מוגדרת מראש פ.י. ללא פרמטרים ועם גוף פעולה ריק. • אם הוגדרה בטיפוס פ.י., ה פ.י. המוגדרת מראש ללא פרמטרים לא קיימת, אלא אם תוגדר במפורש. publicPepper() { pieces = 1; weight = 100; color = green; } Pepper p3 = new Pepper(); ד"ר נוע רגוניס

  23. ריבוי פעולות בונות • או אפילו הגדרה בנוסף של פעולה יוצרת בדיוק כמו זו של ברירת המחדל: public Pepper (int w) { weight = w; pieces = 1; color = “green”; } public Pepper () { } ד"ר נוע רגוניס

More Related