בבכיתה
1. ייחוס אב מפנה לעצם מטיפוס בן
א. עד כה ראינו שייחוס מטיפוס של מחלקה x מפנה לעצם שנוצר ממחלקה x. לדוגמה:
;()Student s1 = new Student.
ב. בשיעור ראינו דבר חדש: ייחוס מטיפוס אב יכול להפנות לעצם ממחלקת בן. לדוגמה:
;()Person p1 = new Student.
בשל העובדה שסטודנט הוא גם אדם (בהינתן שמחלקת סטודנט יורשת ממחלקת אדם),
ייחוס Person יכול להפנות לעצמים מטיפוס Person, אך גם לעצמים ממחלקות היורשות מ- Person.
ייחוס Person יכול להפנות לעצם מטיפוס Student.
ייחוס Person *איננו יכול* להפנות לעצם מטיפוס Car כיוון שאינם שייכים לאותה שושלת היררכית.
ייחוס Student *איננו יכול* להפנות לעצם מטיפוס Person כיוון שמבחינה לוגית, לא כל Person
הוא Student. ייחוס בן לא יכול להפנות לעצם מטיפוס אב.
ג. דוגמאות לקוד תקין:
;()Student s1 = new Student
;()Student s2 = new Student
;()Person p1 = new Person
;()Person p2 = new Person
;()Person p3 = new Student
;Person p4 = p2
;Person p5 = s1
;p5 = s2
;p5 = p1
;s2 = s1
;p3 = p1
ד. דוגמאות לקוד שאינו תקין (בהמשך לקוד שבסעיף ג'):
;s1 = p1
;()Student s3 = new Person
;Student s4 = p5
2. האופרטור is
תפקידו לבדוק האם עצם הוא מטיפוס מסוים.
לדוגמה: ;("if(s1 is Student) Console.WriteLine("Yse
השימוש השכיח לשימוש ב- is הוא במסגרת תנאי בתוך לולאה. לדוגמה:
במידה ויצרנו מערך מטיפוס Person, וברצוננו להדפיס הציונים של כל הסטודנטים
הנמצאים במערך זה, אזי בתוך הלולאה העוברת על כל איברי המערך נשאל:
אם העצם הנוכחי הוא מטיפוס סטודנט, הדפס את הציון של סטודנט זה.
לבית
1. תרגיל
בצעו את תרגיל ShapesProject-Basic1 (סעיף 225 בדף 'קישורים').
יתכן ותעדיפו תחילה לצפות בסרטון שבסעיף 2 שלהלן.
2. צפייה
צפו בסרטון אודות האופרטור (פעולה) is, הכולל התייחסות גם ל- casting כאן.
הדוגמה בסרטון זה היא על שושלת המחלקות Shape, Circle, Rectange, דוגמה
היכולה להתרחש במציאות. מערך הכולל כמה סוגים של צורות, וזאת בזכות העובדה
שטיפוס המערך הוא Shape, ולכן כל תא במערך יכול להפנות לאחד מסוגי העצמים
הבאים: Shape, Circle, Rectangle.
המחלקה Shape היא מחלקת האב, הכוללת שתי תכונות: x, y והמחלקות היורשות
ממנה הן המחלקות Circle ו- Rectangle. התכונות x,y מייצגות נקודה במישור.
למחלקה Circle תכונה נוספת: diameter המייצגת את ערכו של הקוטר.
התכונות שהיא יורשת ממחלקת האב Shape, שהן x,y, מייצגות את מרכז העיגול.
למחלקה Rectangle שתי תכונות נוספות ששמן x, y, המייצגות נקודה שנייה במישור.
התכונות שהיא יורשת ממחלקת האב Shape הן x,y, המייצגות נקודה אחת במישור.
באמצעות שתי נקודות במישור, מחלקה זו יודעת לייצר מלבן בעל אורך, רוחב והימצאות
במיקום ספציפי במישור.
4. התכוננו למבדק ש.ב
בשיעורים הבאים
1. הסבר: הורשה-הכלה-פולימורפיזם - Inheritance-Composition-Polymorphism (ס' 170).
2. תרגיל: ClassStudentsProject הוספת תכונה מורכבת (Complex Data-Type)
המוכלת (Composition) במחלקה (ס' 190).
3. תרגיל: SchoolEntitiesProject שימוש באופרטור is ודריסת פעולות בהיררכיית המחלקות (ס' 210).