PracticU

פרוטוקולים ומימושם - Protocols

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode › פרוטוקולים ומימושם - Protocols
מילון מושגים:
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
קומפיילר - תוכנה שממירה קוד מקור שנכתב בשפת תכנות לקוד שהמחשב יכול להריץ, ומדווחת על שגיאות תחביר.
אובייקט - יחידה בתכנות מונחה עצמים שמאגדת נתונים (תכונות) ופעולות (מתודות). נוצר בדרך כלל ממחלקה המשמשת כתבנית.

פרוטוקולים ומימושם - Protocols
פרוטוקול (Protocol) ב-Swift הוא רשימת הנחיות שטיפוס צריך למלא: תכונות ופעולות. הפרוטוקול מתאר מה נדרש, ולא את המימוש עצמו.
השלבים העיקריים
1. הגדרת הדרישה: בדוגמה, הפרוטוקול FullyNamed דורש תכונה בשם fullName מסוג String, שאפשר לקרוא אותה.
2. קריאה בלבד או גם כתיבה: אם בפרוטוקול מגדירים רק get, מספיק תכונה מחושבת לקריאה. אם מגדירים גם set, צריך לאפשר כתיבה לתכונה.
3. מימוש במחלקה: במחלקה Movie כותבים את שם הפרוטוקול אחרי נקודתיים, והקומפיילר עוזר להוסיף את הדרישות החסרות. גם enum וגם סטרקט יכולים לממש פרוטוקול.
4. תכונה מחושבת: כשהדרישה היא רק לקריאה, מממשים תכונה מחושבת שמחזירה את השם המלא, שבדוגמה מורכב מכותרת הסרט ומשנת היציאה.
5. פעולה נדרשת: פרוטוקול יכול לדרוש פעולה, למשל getScript שמחזירה מחרוזת, והטיפוס שמממש את הפרוטוקול חייב לספק אותה.
6. דוגמה מובנית: הפרוטוקול CustomStringConvertible דורש תכונה description מסוג מחרוזת, וכך קובעים איך האובייקט ייראה כשמדפיסים אותו.
שימו לב
אם בפרוטוקול מוגדר set, מימוש שיש בו רק get לא עומד בדרישה. לכן בודקים את הדרישות לפני המימוש.
תרגיל
מממשים את הפרוטוקול Drivable במחלקות מכונית ואופניים, ובשתיהן גם CustomStringConvertible.
בסיום תדעו להגדיר פרוטוקול, לממש אותו במחלקה, ולהבין למה מדפיסים אובייקט דרך CustomStringConvertible.
השיעור הבא בקורס: תרגול - משחק קלפים - תרגול מסכם בשפת swift

פרקי ההרצאה: פרוטוקולים ומימושם - Protocols

  1. 00:00

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

  2. 00:44

    הגדרת פרוטוקול FullyNamed

  3. 03:31

    דרישת תכונה: get בלבד או גם set

  4. 04:49

    מימוש פרוטוקול במחלקה Movie

  5. 06:18

    תכונה מחושבת לעומת תכונה שמורה במימוש

  6. 07:32

    דרישה לתכונה עם get ו-set

  7. 08:24

    פרוטוקול שדורש גם פעולות

  8. 09:01

    פרוטוקול Scriptable ופונקציית getScript

תמלול ההרצאה: פרוטוקולים ומימושם - Protocols

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

  1. 00:02

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

  2. 00:30

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

  3. 00:44

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

  4. 00:56

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

  5. 01:25

    יקרא פול ניימד ואני אכריח פה שיהיה להם סטרינג ובוא נאמר אני מכריח שיהיה רק גט אוקיי אז מותר לי לרשום רק וזה יהיה read only או שאני יכול לרשום שזה יהיה גם גטר וגם סטר.

  6. 02:13

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

  7. 02:29

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

  8. 02:47

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

  9. 03:07

    בואו נראה. אני אגדיר לנו פה פרוטוקול, ראשון, פרוטוקול, ואני אקרא לפרוטוקול שלי נניח Fuly Named, אוקיי? זאת אומרת, מי שמממש את הפרוטוקול יהיה לו בטוח שם מלא.

  10. 03:23

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

  11. 03:47

    או שמא מדובר גם בגתר וגם בסלטר? כלומר, האם מדובר ב-computed property או ב-stored property? האם יש גם אפשרות לשמור את הערך של התכונה או רק לקרוא את הערך של התכונה?

  12. 04:05

    ואני אתן לכם דוגמאות לשניהם. אבל כרגע, בואו נגיד דוגמה ראשונה, תכונה מחושבת, computed property. תמונה מחושבת אז יש לה רק get read only בואו נראה עכשיו הנה אז יש לי פה רשימת דרישות דרשתי בתוך הפרוטוקול רשימת דרישות תקראו לפרוטוקול

  13. 04:34

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

  14. 05:10

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

  15. 05:50

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

  16. 06:24

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

  17. 06:38

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

  18. 06:52

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

  19. 07:03

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

  20. 07:13

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

  21. 07:22

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

  22. 07:48

    אז עכשיו אני לא דורש computed property יותר למעשה אנחנו דורשים כבר כמעט stored property ואז אנחנו נהיה חייבים להחזיר פה איזשהו גם get וגם set בסדר תראו עכשיו זה כבר הפך להיות stored property בדרישות ואנחנו כן מממשים את הפרוטוקול כן מצייתים לדרישות יש לי גם get וגם set לרוב יכריחו אותנו לממש כרגע זה אמרנו read and write נכון

  23. 08:21

    get and set לרוב יכריחו אותנו לממש Computed Properties אבל זה לא חובה יש מקרים ויש מקרים אז פרוטוקול יכול להכריח אתכם להוסיף משתנים בין אם זה משתנה מחושב ובין אם זה משתנה שמור תכונה שמורה במידת הצורך פרוטוקול גם יכול להכריח אותנו לממש פעולות בואו נראה נניח שיש לי עוד פרוטוקול שנקרא בוא נאמר Scriptable

  24. 08:42

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

לקורס המלא: קורס פיתוח אפליקציות לאייפון

ההרצאה הקודמת: ניהול זכרון - העברת משתנים לפי ערך ולפי מצביע - Classes Are Reference

ההרצאה הבאה: תרגול - משחק קלפים - תרגול מסכם בשפת swift

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

  • פרוטוקולים של ניתוב דינמי

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

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון