PracticU

יצירת מחלקה ואובייקטים ב-TypeScript

בלי כתוביותעם כתוביות
PracticU › קורס TypeScript › יצירת מחלקה ואובייקטים ב-TypeScript
מילון מושגים:
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
TypeScript - שפת תכנות המרחיבה את JavaScript בהוספת טיפוסים, ומתקמפלת ל-JavaScript רגיל.
OOP - תכנות מונחה עצמים: גישת פיתוח שמארגנת את הקוד סביב אובייקטים המאגדים נתונים ופעולות.
בנאי - מתודה מיוחדת שמופעלת אוטומטית בעת יצירת אובייקט ממחלקה, ומאתחלת את ערכיו ההתחלתיים.
מתודה - פונקציה המוגדרת בתוך מחלקה ומתארת פעולה שאובייקטים מאותה מחלקה יכולים לבצע.
פולימורפיזם - עיקרון בתכנות מונחה עצמים שבו אובייקטים ממחלקות שונות מגיבים לאותה פעולה כל אחד בדרכו.
הרשאה - קביעה אילו פעולות ומשאבים מותרים למשתמש או לתהליך לאחר שזהותו אומתה. שולטת במי רשאי לעשות מה.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.

יצירת מחלקה ואובייקטים ב-TypeScript
זו ההרצאה הראשונה בנושא תכנות מונחה עצמים ב-TypeScript. בה בונים מחלקה עם שדות, בנאי, מתודות, הגנה על מידע ובנאי מקוצר, לפני שמתקדמים להורשה, פולימורפיזם, אבסטרקטיות וממשקים.
בניית מחלקה
1. קובץ לכל מחלקה: מקובל לשים כל מחלקה בקובץ משלה. המחלקה Cat כוללת name מסוג string ו-age מסוג number, בלי let, const או var. הרשאת ברירת המחדל היא public, והמרצה מעדיף לכתוב אותה במפורש.
2. בנאי: מאתחל את השדות דרך this, כאשר this.name הוא השדה ו-name הוא המשתנה המקומי.
3. מתודה ויצירת אובייקט: המתודה display מחזירה void ומדפיסה את הערכים. אובייקט נוצר עם new Cat, ואם מכניסים ערך מיד אין צורך לציין את הטיפוס.
4. הוספה לאינדקס: הקובץ החדש חייב להיות מוגדר גם בדף שמריץ אותו, והמחלקה חייבת להופיע לפני ה-main שמשתמש בה.
הגנה על מידע ו-readonly
5. שדה פרטי: כדי למנוע גיל שלילי הופכים את השדה ל-private בשם _age, ומוסיפים get age ו-set age. ב-set לא מצהירים על ערך מוחזר, ובודקים שהערך חוקי. אם לא, זורקים throw new Error עם הודעה "illegal age".
6. גישה: משתמשים ב-myCat.age כאילו היה משתנה. הכנסת 5 תקינה, והכנסת מינוס 5 גורמת לשגיאה שנראית בקונסול.
7. readonly: שדה כזה מקבל ערך בבנאי או בשורת ההגדרה ולא ניתן לשנותו יותר, אפילו לא בתוך המחלקה. ניסיון כזה מציג שגיאה.
בנאי עם מאפיינים
8. הרשאות בפרמטרים: במחלקה Flower יש name כ-public, family כ-protected ו-cost כ-private. protected נגיש רק למחלקה וליורשים שלה. אם כותבים את הרשאת הגישה ישירות בפרמטרי הבנאי, TypeScript יוצר את השדה ומבצע את ההשמה לבד, וניתן לוותר על ההצהרות ועל השורות בגוף הבנאי.
שימו לב
הקיצור הזה לא עובד יחד עם getters ו-setters, כי TypeScript לא יוצר עבורם את הבדיקה.
עכשיו אפשר לבנות מחלקה עם שדות, בנאי, מתודות, getters ו-setters ולהגדיר הרשאות גישה. בהרצאה הבאה עוברים להורשה.
השיעור הבא בקורס: הורשה ב-TypeScript

פרקי ההרצאה: יצירת מחלקה ואובייקטים ב-TypeScript

  1. 00:00

    נושאי Object Oriented ב-TypeScript

  2. 00:37

    יצירת מחלקה ושדות המחלקה

  3. 01:34

    בניית Constructor ושימוש ב-this

  4. 02:15

    מתודת display להצגת הערכים

  5. 02:55

    יצירת אובייקט מהמחלקה

  6. 04:33

    הגנה על הגיל מערך שגוי

  7. 05:09

    שדה private עם get ו-set

תמלול ההרצאה: יצירת מחלקה ואובייקטים ב-TypeScript

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

  1. 00:02

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

  2. 00:18

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

  3. 00:33

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

  4. 00:46

    ומה שאנחנו רוצים לעשות זה class cat, ויש לנו כאן name, והוא string, ויש לנו כאן age, והוא number. אנחנו לא רושמים פה let, אנחנו לא רושמים const, אנחנו לא רושמים var, וזה בעצם התחביר.

  5. 01:10

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

  6. 01:22

    לי זה יותר נוח וברור. כל הדברים האלה זה data members, השדות של המחלקה. בנוסף אנחנו רוצים שיהיה לנו איזשהו קונסטרקטור שמאתחל את השדות של האובייקט.

  7. 01:40

    אז בואו נבנה פה קונסטרקטור שמקבל name ו-age והוא number ואנחנו רוצים לגשת לשדות. הגישה תמיד מתבצעת על ידי this name שווה ל-name this.h שווה h כאשר ה-name הזה זה כמובן המשתנה הלוקאלי ו-dis.name זה המשתנה הגלובלי.

  8. 02:06

    בואו נבנה איזושהי מתודה, זה סיטור ונבנה פה methods, איזושהי מתודה שתציג את הערכים של החתול. בואו נציג display חזירה void דוקיומנט right בואו נציג את ה-name של החתול ונרד שורה, אז זה יהיה this.name ונשכפל גם ל-age וזה יהיה this.age בצורה כזאת.

  9. 02:48

    ויש לנו כאן קלאס שמתאר את חתול ואנחנו יכולים לגשת ולבנות אובייקט. את זה נעשה במיין, אני שם את החתול פה בצד ויש לנו פה איזשהו let myCat = newCat בצורה כזאת, ואני מכניס לו מיצי ו4. עכשיו, יכלנו גם לבצע let cat נקודותיים cat שווה new cat, אבל כמובן אין צורך כי מיד הכנסנו ערך.

  10. 03:21

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

  11. 03:42

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

  12. 04:13

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

  13. 04:30

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

  14. 04:56

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

  15. 05:10

    דבר ראשון בואו נהפוך את זה ל-private ואני משנה לו את השם ל-underlineage.com underlineage underline עבור private הדבר הבא אנחנו מגדירים פונקציות getters וsetter על ידי המילה השמורה get וset יש לנו פה את ה-get age אני מחזיר number return this.underlineage בצורה כזאת

  16. 05:42

    זה רק יחזיר לי את הגיל ויש לנו פה public set h, אני מקבל איזשהו value שהוא number, שימו לב שאנחנו ב-set לא רושמים שאנחנו מחזירים number, ולא רושמים שאנחנו מחזירים void, בסדר?

  17. 06:01

    אנחנו לא מחזירים שום דבר. וכאן אני מבצע בדיקה אם הvalue לא חוקי מבחינתי, נניח קטן שווה 0, אז בואו נבצע throw new error ונקשור מ-illegal h נניח.

לקורס המלא: קורס TypeScript אונליין

ההרצאה הקודמת: פונקציות ב-TypeScript

ההרצאה הבאה: הורשה ב-TypeScript

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

  • Typescript
  • מחלקה sealed
  • יצירת מחלקה עם כל ההגדרות - Config Class - חלק 1
  • מחלקה אבסטרקטית ב-NodeJS

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

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס ריאקט - React
  • קורס NodeJS