PracticU

Generics

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

Generics
השיעור מסביר ג'נריקס (Generics) ב-C#: יכולת להגדיר מחלקה או אוסף שעובד עם טיפוס מסוים, שנקבע בזמן השימוש. היתרון הוא שגיאות מתגלות בזמן הפיתוח ולא בזמן הריצה.
הבעיה
1. אוסף של object: ArrayList יכול להכיל כל סוג, כי כל משתנה הוא object. לכן הקוד מתקמפל גם כשקוראים מספר ממקום שבו נמצא טקסט.
2. שגיאה בזמן ריצה: ההמרה נכשלת רק כשהאפליקציה רצה. בזמן הבנייה הכל נראה תקין.
מונחים
3. Development time: הזמן שבו המפתח כותב ומקמפל את הקוד. שגיאה שמתגלה כאן קלה לתיקון.
4. Run time: הזמן שבו האפליקציה פועלת אצל המשתמש. שגיאה שמתגלה כאן עלולה להפיל את התוכנה.
ג'נריקס בפועל
5. List<int>: הסוגריים הזוויתיים קובעים את הטיפוס של האוסף. ניסיון להוסיף טקסט מתגלה כבר בזמן הפיתוח, עם קו אדום.
6. בלי המרה: כשהטיפוס ידוע, קוראים מהאוסף בלי cast, כי הקומפיילר יודע מה הסוג.
7. Dictionary<TKey, TValue>: אוסף של מפתח וערך, שבו שני הטיפוסים נקבעים בזמן היצירה.
יצירת מחלקה גנרית
8. הגדרה: מוסיפים <T> אחרי שם המחלקה, והטיפוס T משמש בשדות ובפרמטרים שבתוכה.
9. דוגמה: המחלקה ListOfItems<T> מקבלת מערך בקונסטרקטור ומחזירה את מספר האיברים. עם מערך של ארבעה מספרים היא מחזירה 4.
השינוי בין טיפוס לטיפוס בקוד הוא קטן, אבל ההשפעה על בטיחות הקוד גדולה.

פרקי ההרצאה: Generics

  1. 00:00

    מהו Generics

  2. 01:15

    הצגת הבעיה בשני משתנים

  3. 02:05

    המחלקה ArrayList

  4. 03:24

    הדפסת הערכים

  5. 04:31

    שליפת ערך לפי אינדקס

תמלול ההרצאה: Generics

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

  1. 00:01

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

  2. 00:20

    אז במהלך ההרצאה הזאת אני הולך להסביר מה זה ג'נריקס, מה היתרון של ג'נריקס שנותן לנו, מה משמעות המונחים של Development Time, time ואיך זה למעשה מתקשר לג'נריקס לא הסברתי את המונחים האלה במהלך ההרצאות האחרונות אבל מכיוון שיש איזה קשר די הדוק לג'נריקס אז אני הולך להסביר את זה ואנחנו גם נלמד על סוגים שונים שכבר קיימים בדוטנט

  3. 00:48

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

  4. 01:13

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

  5. 01:26

    אז תארו לעצמכם שיש לנו פה שני משתנים, אחד מהם נקרא לו name, יהיה השם שלי, ולמשתנה השני יהיה מסוג של int שנקרא לו money, נקרא לו salary.

  6. 01:45

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

  7. 02:22

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

  8. 02:46

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

  9. 02:58

    אז אם אני אעשה את הפעולה הבאה הזאת, אני אכניס את name ואז אני אעשה array, אני אכניס עכשיו גם את int, את ה salary. אתם רואים שאין לי שום בעיה, לא קיבלתי שום שגיאה או משהו כזה, הכל בסדר.

  10. 03:18

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

  11. 03:24

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

  12. 03:51

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

  13. 04:17

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

  14. 04:31

    עכשיו לצורך הדוגמה בוא נניח שאני שכחתי, לדוגמה באיזה אינדקס, באיזה מיקום בכל ה-collection הזה סלארי נמצא, המשתנה הזה נמצא.

  15. 04:44

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

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

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

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

  • Generics - חלק 1

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

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