PracticU

ממשק IEnumerable

בלי כתוביותעם כתוביות
PracticU › קורס תכנות מונחה עצמים - OOP - Object Oriented Programming - חומר לימוד של מדעי המחשב › ממשק IEnumerable
מילון מושגים:
ממשק - נקודת מגע בין רכיבים: ממשק משתמש שבו אדם מפעיל תוכנה, או ממשק תכנותי שמגדיר אילו פעולות רכיב אחד חושף לאחר.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
פונקציה - קטע קוד בעל שם שמבצע משימה מוגדרת, מקבל ערכי קלט (פרמטרים) ויכול להחזיר תוצאה. מאפשרת לארגן קוד ולהשתמש בו שוב.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.

ממשק IEnumerable
כדי שאוסף שכותבים בעצמם יוכל לעבור עליו בלולאה foreach, צריך לממש בו את הממשק IEnumerable. השיעור בונה אוסף צעצועים משלו ומראה את כל החלקים שנדרשים לכך.
השלבים העיקריים
1. מחלקת הפריט: יוצרים מחלקה שמייצגת איבר בודד באוסף, למשל צעצוע עם שם ומחיר. לה קונסטרקטור שמקבל את הערכים.
2. מחלקת האוסף: מחלקה שמכילה מערך של הצעצועים ומממשת את IEnumerable. הממשק מחייב פונקציה בשם GetEnumerator, שמחזירה אובייקט שיודע לעבור על האיברים.
3. מחלקת המעבר (Enumerator): מחלקה נפרדת שמממשת את IEnumerator. יש לה מיקום נוכחי (position) שמתחיל ב-1-, ופונקציית MoveNext שמקדמת את המיקום ומחזירה true אם עוד יש איברים.
4. הפרופרטי Current: מחזיר את האיבר שנמצא במיקום הנוכחי. בשיעור הופיע ערך ריק כשלא הוחזר הערך הנכון.
5. Reset: מחזירה את המיקום להתחלה, כך שאפשר להתחיל את הלולאה מחדש.
6. הלולאה: כש-foreach רץ, הוא קורא ל-GetEnumerator, ואז חוזר על MoveNext ו-Current עד שמגיע לסוף האוסף.
שימו לב
המיקום מתחיל ב-1-, כי MoveNext מקדם את המיקום לפני כל קריאה. כך האיבר הראשון נמצא ב-0.
אם Current לא מחזיר את האיבר הנוכחי, הלולאה מדפיסה ערך ריק במקום את הצעצוע.
עכשיו אפשר להפוך אוסף שכתבנו בעצמנו לאוסף שאפשר לעבור עליו בלולאה for each.
השיעור הבא בקורס: Generics

פרקי ההרצאה: ממשק IEnumerable

  1. 00:00

    יצירת Collection משלנו

  2. 01:26

    מעבר על אוסף עם foreach

  3. 03:13

    מחלקת צעצועים ואוסף TOYS

  4. 05:25

    ה-Constructor של האוסף

  5. 07:04

    מימוש הממשק IEnumerable

  6. 07:43

    הפונקציה GetEnumerator

  7. 08:59

    משתנה מסוג IEnumerator

תמלול ההרצאה: ממשק IEnumerable

הטקסט המלא של הדקות הראשונות בהרצאה «ממשק IEnumerable» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:33

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

  3. 01:05

    להם names ונעשה new ובוא ניתן לnames כמה ערכים נעשה add avi נעשה copy paste כמה פעמים עכשיו אם אני רוצה לעבור על האיברים האלה שיש ברשימה שיש באוסף הזה שנקרא names ולדוגמה להדפיס אותם אני יכול להשתמש בלולה for each ואז כל משתנה הוא מסוג של סטרינג והוא נמצא בתוך האוסף הזה שנקרא names ואז אני ניגש אני ניגש לאיבר הנוכחי בnames

  4. 01:52

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

  5. 02:33

    אוקיי בואו נריץ את זה רק כדי לראות. כן אז נכנסנו ללאה האיבר הראשון יהיה אבי האיבר הבא אחריו יהיה יוסי נעשה עוד פעם F5 הוא יגיע לאותה נקודה שוב פעם האיבר הבא יהיה דנה.

  6. 02:49

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

  7. 03:21

    קולקשן שמכיל צעצועים אוקיי בוא נגיד התוכנה שלנו היא תוכנה שיש לה מלאי של צעצועים, אנחנו רוצים לעבור עליהם. אז בוא ניצור לנו איזה קלאס, נעשה add, נקרא לקלאס הזה toy, קלאס הזה ייצג צעצוע מסוים, בוא נגיד תן לו שם, וגם ניתן לו,

  8. 04:05

    בוא נגיד שיש לו מחיר גם, יפה. עכשיו אני רוצה ליצור, יש לנו עכשיו פה קלאס אחד שמייצג toy, עכשיו אני רוצה ליצור את הקלאס בנומל לליסט, אני רוצה ליצור את הקלאס שיכיל אוסף של צעצועים אז נעשה עוד פעם add קלאס ועכשיו נקרא לזה toys נקרא לזה toys list יש לנו פה קלאס שעכשיו הוא בסופו של דבר יכיל

  9. 04:49

    יכיל איברים שכל איבר יהיה מסוג של toy אז בתוך הקלאס הזה אנחנו עומדים לכתוב למעשה את האיברים את האוסף של הצעצועים שיהיו לנו שהקלאס הזה שהמערך שהאוסף הזה יכיל אוקיי אז זה מיסוג של toy יש לנו פה מערך של צעצועים שנקרא לזה selected toys או פשוט נקרא לזה אולי toys יופי עכשיו יש לקלאס הזה קונסטרקטור toys list והקונסטרקטור הזה מקבל אליו כשיוצרים את האובייקט הזה שהוא למעשה מייצג אוסף של הצעצועים אנחנו רוצים

  10. 05:48

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

  11. 06:22

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

  12. 07:01

    each אנחנו צריכים לממש להשתמש באינטרפייס מסוים באינטרפייס שאנחנו צריכים להשתמש בו נקרא I enumerable המילה enumerate אם נשים בצד את הable הזה המילה enumerate רק אם המילה ה-numerate היא מציינת משהו שאפשר למנות אותו, לספור אותו, אוקיי?

  13. 07:28

    וה-seer-at-able זה למעשה משהו שניתן לספירה. זאת אומרת ה-toys class, בזה שאני יכול לממש את האינטרפייס הזה, אני אומר שניתן לעבור עליו.

  14. 07:39

    כלומר, ניתן להשתמש בו באמצעות עולה for each. אז אני אלחט על הצ'ופצ'יק הקטן שיש פה, ומה שיש לי פה עכשיו, אני יכול עכשיו לקבל באופן אוטומטי, תהיה לי השלמה אוטומטית של כל הפונקציות או הפרופרטי שנמצאים באותו אינטרפייס שאני חייב להשתמש בהם.

  15. 08:08

    אז אני לוחץ על זה, ומה שהופיע לי פה זה משתנה שנקרא get enumerator. משתנה שנקרא get enumerator הוא משתנה שנמצא בתוך האינטרפייס הזה ואני צריך להשתמש בו.

  16. 08:22

    אם אני רוצה לגרום לך עכשיו שהקלאס הזה שנקרא toys יהיה אפשר לעבור עליו. אוקיי, זה כמו שקוראים גט אינומרטור, מחזיר לנו איינומרטור.

  17. 08:36

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

  18. 08:48

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

  19. 09:00

    אז בדרך כלל כשאני אומר גט אינומרטור, אני אומר תביא לי את הישות שמביאה לי את האיבר הבא ברשימה אז יש לי פה גטי נומרטור אני צריך ליצור פה עוד משתנה אחד שנקרא פרייבט IE נומרטור ונקרא לו people.toys enum וכשאנחנו עכשיו נמצאים בתוך הקונסטרקטור ויצרנו עכשיו משתנה מסוג של toys list אני רוצה גם לתת עכשיו ערך ל-toys enum

  20. 09:49

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

לקורס המלא: קורס תכנות מונחה עצמים OOP

ההרצאה הקודמת: יצירת Collection

ההרצאה הבאה: Generics

הרצאות קשורות מקורסים אחרים

  • ממשק גרפי של Git
  • הסבר על מה זה ממשק - API
  • ממשק גרפי של SCOM
  • ממשק גרפי GNOME

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת C# .NET - קורס תכנות למתחילים - דוט-נט / סי-שארפ - חומר לימוד של מדעי המחשב