Polymorphism - רב-צורתיות
מימוש פונקציה
בהתאם לטיפוס האובייקט – באמצעות הורשה ניתן לממש פונקציה אחת עבור אובייקטים
שונים
כשיש פונקציה שעושה
פעולה מסוימת שמתאימה לכל המחלקות אולם עבור כל מחלקה המימוש שונה – במידה ונכתוב
את הפונקציה עבור כל אחד מהמחלקות כשיש מערך של אובייקטים שונים לא נוכל להריץ את
הפונקציה בהרצה אחת על כולם
שימוש ב Polymorphism
מאפשר להגדיר פעם אחת ולבצע הורשה והתאמה לכל מחלקה
במחלקת הביס נגדיר
את הפונקציה כווירטואלית virtual ובמחלקה היורשת נגדיר את הפונקציה override
ונגדיר לה מימוש שונה - בהרצת התוכנית באובייקטים (דוג') A-B-C יתבצע מימוש כפי שהוגדר במחלקת האב ואילו בD יתבצע מימוש שונה
שים לב !! לא ניתן לבצע Polymorphism ללא הורשה
הורשה - abstract
במידה ויש לנו 2
סוגי עובדים בשביל למנוע קוד כפול ניצור מחלקה של עובד ושם השדות הבסיס כמו שם
פרטי\ משפחה ו2 מחלקות אחרות שיורשות את השדות בתוספת השדות הייחודים
מה שיוצא זה שיש
לנו 3 מחלקות שונות - בפועל המחלקה
הראשונה היא מחלקת בסיס ולא מחלקה שמממשים אותה בקוד - לכן נגדיר את הקלאס הראשון abstract
- לא ניתן ליצור אובייקט ממחלקה אבסרקטית
- מחלקה אבסטרקטית יכולה (אבל לא חייבת) להכיל פונקציות אבסטרקטיות
- לא ניתן לכתוב פונקציה אבסטרקטית במחלקה שהיא לא אבסטרקטית
- פונקציה אבסרקטית היא פונקציה ללא מימוש ולכן נכתבת כהצהרה ללא בלוק {} !!
- בהורשה של מחלקה אבסטרקטית במידה ויש פונקציה אבסרקטית חובה לממש את הפונקציה
כשעושים הורשה של
מחלקה A לB ניתן להכניס אובייקט של B לתוך A
לדוג' יש לנו מחלקת
בסיס של אנשים שתחתה יש בהורשה עובדים\
תלמידים
ואנחנו רוצים ליצור
תלמיד אבל שיקבל רק את נתוני בסיס של אנשים
Person s1 = new student ();
כעת נוצר לנו
סטודנט אבל עם גישה לנתונים של אנשים בלבד !!
ע"מ לגשת
למשתנים של סטודנט נצטרך לבצע יחוס
((Student)
s1).course = 10;
Protract – משתנה
מוגן – בין ציבורי לפרטי – רק מחלקות שיורשות מהמחלקה יוכלו לגשת
Exception Handling – ניהול חריגים
בכתיבת תוכנה
למשתמש חשוב לתפוס את השגיאות לפני שהן מגיעות לקוד והמערכת עפה
לדוג' במידה ואני מבקש מהמשתמש להזין מספר בין
1ל 10 נוכל לבצע בדיקות האם הערך שהזין אכן בכללים אך אם יזין טקסט המערכת תעוף כי
לא ניתן להכניס מחרוזת לתוך משתנה מסוג מספר
לכן נגיד לתוכנה
לנסות לעשות את ההשמה ובמידה ולא מצליח תדלג לקטע הבא שיציג הודעת שגיאה ללא השמה
int
x = 0;
do
{
Console.WriteLine("enter
number");
try
{
x = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("error");
}
} while (x < 0);
הסבר
- יצרנו לולאת DO ע"מ שהמערכת תחזור על הצמה שוב ושוב עד שיוזן ערך תקין
- השתמשנו בלולאת DO ולא בWHILE רגיל ע"מ שתתבצע הרצה ראשונה לפני הבדיקה
- Try = תנסה לבצע – אם הצליח המערכת מדלגת על הקטע הבא ותגיע לתנאי שיגרום ללולאה לרוץ
- Catch= תפיסה של השגיאה – מה לבצע במידה ולא הצליחה הקטע הקודם
-
ניתן לבצע את הקוד ללא לולאה ואז הוא ירוץ פעם אחת בלבד
אין תגובות:
הוסף רשומת תגובה