
Shape מחזיקה את x ו-y, מיקום הצורה על המסך. היא משתמשת בקיצור של מאפייני בנאי ומכילה מתודת display.Circle מוסיפה radius, ו-Rectangle מוסיפה width ו-height. כל אחת קוראת ל-super עם x ו-y ודורסת את display, ומוסיפה את הנתונים שלה.Shape מופיעה לפני המחלקות שיורשות ממנה.Shape נבנתה רק כדי לא לחזור על קוד, ולכן אין סיבה שיוצרים ממנה אובייקט. המילה abstract לפני class גורמת לשגיאה "cannot create an instance of an abstract class" בכל ניסיון כזה.abstract getArea(): number מוצהרת ללא מימוש, כי צורה כללית לא יכולה לחשב שטח. כל מחלקה יורשת שאינה אבסטרקטית חייבת לממש אותה.Math.PI כפול הרדיוס בחזקת 2, באמצעות **. במלבן הוא width כפול height. אפשר להשתמש בבלון התיקון של העורך כדי ליצור את השלד אוטומטית.toFixed כדי להציג שתי ספרות אחרי הנקודה.Rectangle הייתה אבסטרקטית בעצמה, לא הייתה חובה לממש בה את הפונקציה.הטקסט המלא של הדקות הראשונות בהרצאה «מחלקה אבסטרקטית ב-TypeScript» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו רוצים לעבור לדברים קצת יותר מתקדמים באובג'קט אוריינטד ולראות איך עושים אותם בטייפסקריפט והדבר הראשון שנראה זה בעצם עץ הורשה אחר לגמרי מהחתולים שבנינו מקודם. מה שאנחנו רוצים לבנות עכשיו זה מחלקות עבור פרויקט שמציג שומר מסך של צורות על המסך בוא נניח כרגע ואנחנו רוצים לבנות עיגולים ואנחנו רוצים לבנות מלבנים.
כך circle, יש לנו פה מחלקה שמתארת עיגול, אנחנו רוצים לבנות אותה, ויש לנו פה מחלקה שמתארת מלבן, ואנחנו רוצים לבנות אותה. אבל הרבה צורות יש להן דברים משותפים.
לדוגמה, בוא נגיד שלכל צורה יש x ו-y שמתארים את המיקום שלה על המסך. אוקיי, אז אנחנו רוצים להשתמש בקונספט של הורשה ולבנות איזושהי מחלקת בסיס כזאת ששתי המחלקות האלה יירשו ממנה.
בעץ הורשה החצים הולכים לכיוון מעלה, זה מה שמקובל. אז איך נקרא למחלקה הזאת? אז הגיוני שנקרא לה שייפ, ויש לנו כאן מחלקה שמתארת צורה כללית.
לצורה כללית יש x ו-y, לעיגול יש גם רדיוס ולמלבן יש ויד והייט. זה מה שאנחנו רוצים לבנות בתור עץ הורשה ועל זה נראה את שאר הדברים היותר מורכבים שיש לנו כאן.
אז בואו נייצר לעצמנו פה איזושהי מחלקה וקודם כל יש לנו שייפ נקודת ts פלאס שייפ יש לנו פה בוא נגיד שהכל public x number יש לנו y number יש לנו איזשהו קונסטרקטור, האמת אפשר אפילו להשתמש בטריק של הקונסטרקטור פרופרטי זה יהיה number public x number ויש לנו פה דיספליי זה אפשר להוריד
זה אמור להיות y כמובן דיספליי ופה אנחנו רוצים להציג כמה זה הx דיס נקודה, פה אני צריך דולר, דיס נקודה איקס, נרד שורה, משכפל, כמה ה-y שלנו, ויש לנו פה את המחלקה שמתארת צורה כללית, אנחנו רוצים לגשת ולייצר circle, typeScript,
פלאס circle extends shape, ואנחנו רוצים להוסיף, בואו נעשה public constructor, קונסטרקטור אנחנו רוצים, בוא נעשה את זה כבר בצורה כזאת public radius ויש לנו number, יש לנו כאן קונסטרקטור והקונסטרקטור מקבל את ה-X, מקבל את ה-Y ומקבל את ה...
לא האמת, בואו נבנה public radius number, נראה לי יותר פשוט יהיה. כאן אנחנו רוצים לקרוא לסופר ולשלוח את ה-X ואת ה-Y ולבצע האמת שזה כבר יכניס את הרדיוס למעלה.
בואו נבצע דיספליי ואנחנו רוצים לקרוא לסופר נקודה דיספליי ובנוסף אנחנו רוצים בואו ניקח רגע אחד מהם נציג פה את הרדיוס בצורה כזאת. בואו נשכפל את כל המחלקה של הסרקל קונטרול C קונטרול V למחלקה שמתארת ריק אנגל.
נשנה את השם ריק אנגל, ריק אנגל מקבל XY, מקבל וויד והייט. פיס פה את הוויד, פיס נקודה וויד ואת ה-height, ובוא נניח אפילו כאן נגדיר HR שיהיה לנו קו אחרי ההדפסה וגם כאן hr ואנחנו רוצים לבדוק את הנתונים אז בואו ניגש פה למיין שאני לא אשכח לשכפל את זה ואנחנו רוצים גם shape אנחנו
רוצים גם circle למה copy אני רוצה copy ואנחנו רוצים rectangle בוא נראה אולי הוא בטעות עשה לי את הקופי שאני כבר לא צריך אותו ביי ביי יופי ויש לנו כאן באינדקס גישה לכל הקלאסים, אנחנו רוצים במיין לבצע אובייקטים.
אז יש לנו פה my circle שווה new circle, ויש לנו x, y, radius, my circle, display, my rectangle, מיוריקטנגל, יש לנו 11, 22, 33, 44, מייריקטנגל, דיספליי ובונאריץ ואנחנו רואים שהכל עובד כמו
שצריך. יופי, אז מה אנחנו רוצים לראות בסרטון הזה? בסרטון הזה אנחנו רוצים לראות את כל מה שקשור לקונספט האבסטרקטי, זאת אומרת מחלקה אבסטרקטית ופונקציות אבסטרקטיות.
הרי כרגע אנחנו לא הגדרנו שום דבר כאבסטרקטי. למה יש לנו את המחלקה shape? המחלקה shape, בנינו אותה רק בכדי שלא נצטרך לחזור על קוד לצורך ההורשה.
ואנחנו רוצים שהמחלקה shape עצמה תהיה מחלקה אבסטרקטית, בכדי שלא ניתן לבנות ממנה אובייקט, זה לא המטרה שלה. כעת כל אחד יכול לבוא וליצור myshape=musehape ולהגיד יש לי צורה מסוימת שיש לה x ו-y ואנחנו יכולים אפילו to display it
ואנחנו נראה את זה. הנה אנחנו רואים את הצורה. אנחנו לא רוצים לאפשר יצירה של אובייקט מהמחלקה shape וזה מתבצע על ידי הגדרת המחלקה כמחלקה אבסטרקטית.