25

משתנים, קלט, תכניתblog.csit.org.il/UpLoad/FilesUpload/Les3_GenericNode.pdf · 2020. 5. 21. · :ןהBucket ילד הקלחמה תונוכת ילדה עבצ תא תראתמה

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

  • החוליה הגנריתהילה קדמן

    ף"תש, 2020

    מבני נתונים-מדעי המחשב

    http://blog.csit.org.il/MyBlog.aspx?BlogID=33

    http://blog.csit.org.il/MyBlog.aspx?BlogID=33

  • מבנה המחלקה:

    פעולות המחלקה:

    CONTACT-המחלקה איש קשר

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    להפנייהset-וgetפעולות

    לכל set-וgetפעולות

    תכונה

    בנאים

    תכונות המחלקה

    3

  • חוליה במחלקה:

    Nodeחוליה נקראת

    רשימה של אנשי קשר:

    CONTACT-המחלקה איש קשר

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    4

  • דליתכונות המחלקה-Bucketהן:

    מחרוזת המתארת את צבע הדלי

    מספר שלם המתאר את קיבולת הדלי בליטרים

    .מספר ממשי המתאר את כמות המים הנוכחית בדלי

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

    .בצבע והקיבולת הנתונים

    BUCKET-המחלקה דלי

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    5

  • נבנה שתי רשימות, כדי ליצור דליים :

    האחת של מחרוזות המתארות את צבע הדלי

    השנייה של מספרים שלמים המתארים את קיבולת הדלי

    עבור כל אחת מהרשימות נגדיר את המחלקה המתאימה:

    StringNodeחוליה ברשימת הצבעים

    IntNodeחוליה ברשימת המספרים

    נגדיר את המחלקה , כמו כןBucketNodeחוליה ברשימת הדליים

    Node =חוליה

    BUCKET-המחלקה דלי

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    6

  • נגדיר באותו אופן רשימה של מספרים שלמיםint

    שם המחלקה :IntNode

    Node =חוליה

    intחוליה מסוג

    INTNODE-המחלקה חוליה מסוג מספר שלם

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    set-וgetפעולות

    value-ל

    בנאים

    set-וgetפעולות

    nextלהפנייה7

  • מבנה החוליה:

    רשימה של מספרים שלמים:

    INTNODEרשימה של חוליות מסוג

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    IntNode

    value next

    8

  • נגדיר באותו אופן רשימה של מחרוזותString

    STRINGNODE-חוליה מסוג מחרוזת המחלקה

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    set-וgetפעולות

    value-ל

    בנאים

    set-וgetפעולות

    nextלהפנייה9

  • מבנה החוליה:

    רשימה של מספרים שלמים:

    STRINGNODEרשימה של חוליות מסוג

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    10

  • ניתן לראות שההבדל בין המחלקות נמצא בטיפוס הנתונים בלבד

    שכפול קוד-לכל סוג רשימה יש לכתוב מחלקה משלה

    מחלקות שונות קוד דומה

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    11

  • מאפשר ליצור מחלקה אחת המתאימה לטיפוסי נתונים גנריותמנגנון ה

    . שונים

    טיפוס המחלקה יוגדר באמצעות

    אינו טיפוס נתונים כי אם שומר מקוםplace holder

    לטיפוס הנתונים שיקבע בהמשך בזמן השימוש במחלקה

    וקר במשחק קלפים'מתנהג כמו ג

    , וקר יכול להחליף כל קלף במהלך המשחק'הג

    יכול להחליף כל טיפוס נתונים בתכנית

    המחלקה הגנרית

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    12

  • JAVA

    NODEממשק המחלקה

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    13

  • JAVA

    מחלקה עוטפת

    ערךvalueהמחלקה הקונקרטית הוא משתנה מטיפוס בסיסי

    (int, double, char)

    התכונהT לאובייקט מסוג הפנייהבמחלקה הגנרית היאT

    כדי להשתמש המחלקה עבור טיפוסים בסיסים ב-java במחלקות העוטפות של כל נשתמש

    .אחד מהטיפוסים הבסיסיים

    Integer עבור הטיפוסint

    Double עבור המחלקהdouble

    Character עבור המחלקהchar

    ההמרה מטיפוס המחלקה העוטפת

    לטיפוס הבסיסי ולהיפך מתבצעים

    באופן אוטומטי

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    14

  • החוליה הגנרית לעומת החוליה הקונקרטית

    המחלקה הגנרית

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    15

  • JAVA

    רשימה גנרית

    השימוש ב-T נעשה אך ורק במחלקהNode

    יש להגדיר מהו טיפוס הרשימה שיחליף את , כשיוצרים רשימה בתכניתT.

    המחלקה ): אנשי קשררשימה שלContactללא התכונה מסוג הפניה)

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    16

    Node

    Node Node Node Node Node

  • JAVA

    רשימה גנרית

    השימוש ב-T נעשה אך ורק במחלקהNode

    יש להגדיר מהו טיפוס הרשימה שיחליף את , כשיוצרים רשימה בתכניתT.

    מספרים שלמיםהפנייה לרשימה של:

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    17

  • JAVA

    רשימה גנרית

    השימוש ב-T נעשה אך ורק במחלקהNode

    יש להגדיר מהו טיפוס הרשימה שיחליף את , כשיוצרים רשימה בתכניתT.

    מחרוזותהפניה לרשימה של:

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    18

  • דליתכונות המחלקה-Bucketהן:

    מחרוזת המתארת את צבע הדלי

    מספר שלם המתאר את קיבולת הדלי בליטרים

    .מספר ממשי המתאר את כמות המים הנוכחית בדלי

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

    .בצבע והקיבולת הנתונים

    נבנה בתכנית שלוש רשימות :

    רשימה של מחרוזות המתארות את צבע הדלי-ראשונה

    רשימה של מספרים שלמים המתארים את קיבולת הדלי-השנייה

    הראשונותשל דליים שתורכב מהמידע השמור בשתי הרשימות -השלישית

    BUCKET-המחלקה דלי

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    19

  • JAVA

    רשימה גנרית

    השימוש ב-T נעשה אך ורק במחלקהNode

    יש להגדיר מהו טיפוס הרשימה שיחליף את , כשיוצרים רשימה בתכניתT.

    דלייםהפניה לרשימה של:

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    20

  • JAVA

  • הצגת רשימה

    כל האיורים שלהלן מתייחסים , מכאן ולהבא

    :

  • הקדמה לשלב הבא

    לעיתים קרובות מתחיל התרגיל במשפט :

    ... רשימה של מספרים שלמים /חוליות-נתונה שרשרת"

    ..."כתוב פעולה שתקבל את הרשימה ותבצע

    לכתוב את הפעולה הנדרשת: מטרת התרגיל.

    . הרשימהיש לבנות את , כדי לבדוק את נכונות הפתרון שכתבנו: הבעיה

    מייגעת החוזרת על עצמה עבור כל תרגיל שנרצה לפתור פעילות

    . ולהריץ במחשב

    שימו:

    . נתוניםהינה מבנה רשימה . רשימהמחלקה המגדירה אין

    .יש לכתוב פעולות מתאימות, כדי ליצור את הרשימה ולהציג אותה

    מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    23

  • מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    24

  • מן קד

    ה היל

    -b

    log.csit.o

    rg.il

    25