PracticU

הבדל בין Interface ל-Abstract Class

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

הבדל בין Interface ל-Abstract Class
השיעור משווה בין מחלקה אבסטרקטית (abstract) לבין ממשק (interface), ומסביר מתי נכון להשתמש בכל אחד מהם.
השלבים העיקריים
1. מחלקה כללית: Car הוא מושג כללי, ולכן אפשר להגדיר אותו כ-abstract. אז אי אפשר ליצור ממנו אובייקט, וכתיבת new Car() מביאה להודעת שגיאה.
2. פונקציה אבסטרקטית: בתוך מחלקה אבסטרקטית אפשר להגדיר פונקציה בלי גוף. כל מחלקה יורשת חייבת לממש אותה. בדוגמה: האצה שונה במכונית מירוץ ובמיני-ואן.
3. ממשק: מגדיר רשימת יכולות, כמו לנסוע, לעצור, להאיץ ולהאט. מחלקה שמממשת את הממשק מתחייבת לכתוב את כל הפונקציות שבו. מקובל לקרוא לממשק בשם שמתחיל ב-I, כמו IDrivable.
4. ממשקים מרובים: בדוטנט מחלקה יורשת ממחלקה אחת בלבד, אבל יכולה לממש כמה ממשקים. מפרידים ביניהם בפסיק.
5. חוזה: הממשק דומה לחוזה. מי שחותם עליו מתחייב לממש את הדברים שבו, ולכן כשרואים מחלקה שמממשת ממשק יודעים אילו פונקציות יש לה.
שימו לב
כל השדות והפונקציות בתוך ממשק הם ציבוריים (public).
שתי הדרכים מאפשרות להגדיר מבנה כללי לפני המימוש, כשכל מחלקה משלימה את הפרטים שלה.
השיעור הבא בקורס: המחלקה Object

פרקי ההרצאה: הבדל בין Interface ל-Abstract Class

  1. 00:00

    Abstract ו-Interface

  2. 00:59

    מחלקת Car הכללית

  3. 01:55

    משמעות המילה abstract

  4. 02:57

    אי אפשר ליצור אובייקט אבסטרקטי

  5. 04:17

    פונקציות אבסטרקטיות

תמלול ההרצאה: הבדל בין Interface ל-Abstract Class

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

  1. 00:02

    שלום לכולם, ההרצאה הזאת היא הרצאה הבאה בנושא של Object Oriented Programming ובהרצאה הזאת אני הולך להסביר מה זה Abstract ומה זה Interface אז בואו ניגש רגע לקוד שלנו, עכשיו אם אתם זוכרים בהתחלה בהתחלה יצרנו פה קלאס שנקרא Car והקלאס הזה ייצג כלי רכב אבל לא אמרתי בדיוק

  2. 00:25

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

  3. 00:49

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

  4. 01:09

    זאת אומרת שאני עכשיו עושה car new car, אוקיי? יש לי פה את הקלאס של הcar שלי, ואני עושה עכשיו New Car, אני מקבל פה איזה רכב.

  5. 01:18

    אבל למען האמת, כשאני מקבל פה New Car, אני לא יודע איזה רכב אני מקבל פה, אוקיי?

  6. 01:24

    כי השם של ה-Class הוא Car, וCar זה משהו שאין לו ספציפיות, הוא משהו כללי. אני רוצה עכשיו להגיד מכונית מרוץ, אז אני מצפה שעכשיו יהיה לי Class שנקרא מכונית מרוץ.

  7. 01:38

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

  8. 02:15

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

  9. 02:42

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

  10. 02:57

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

  11. 03:23

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

  12. 03:47

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

  13. 04:00

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

  14. 04:19

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

  15. 05:05

    עכשיו כולכם מסכימים איתי שמכונית מרוץ, מאיצה יותר מהר מאשר מיני ואן. זאת אומרת הפונקציה פה אקסלרייט, האצה או תאיץ, פונקציה שמאיצה, הגוף שלה יהיה שונה בין אובייקט מסוג של מכונית מרוץ racing car לבין אובייקט מסוג של מיני ואן.

  16. 05:30

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

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

ההרצאה הקודמת: ממשק - Interface בתכנות מונחה עצמים

ההרצאה הבאה: המחלקה Object

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

  • The R Class
  • יצירת interface ב-TypeScript
  • Static Class
  • מה הבדל בין כל סוגי הלולאות

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

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