prepd.

שאלת מבחן במבוא למדעי המחשב - האוניברסיטה הפתוחה 2022 - ירושה

נתונות המחלקות A, B, D ו-Driver (כמתואר בשאלה 4).

(ב) (3 נקודות) -
נניח שנתונות שתי הפקודות הבאות:


מה יהיה הערך של המשתנה k לאחר ביצוע הפקודות?
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחה912022סמסטר ב
ירושהפולימורפיזםמחלקותתכנות מונחה עצמיםOverloadingמעקב אחר קוד
a מטיפוס סטטי A ודינמי B. קודם חשבו את _x אחרי new B(3), ואז הפעילו a.f(6) ואחריו a.f(result). שימו לב לטיפוס הסטטי של a בקריאה לf.
שלב 1: a = new B(3)
- בנאי A(): _x = 1

- בנאי B(3): _x = f(3) = _x + 3 = 1 + 3 = 4

- אחרי הבנאי: _x = 4


שלב 2: a.f(6) - הטיפוס הסטטי של a הוא A, והפרמטר 6 הוא int. נקראת f(int x) - dynamic binding - נבחרת f(int) של B.
- f(6) = _x + 6 = 4 + 6 = 10

- (שימו לב: f(int) לא משנה את _x, רק מחזירה ערך. _x עדיין 4)


שלב 3: a.f(10) - שוב f(int) של B.
- f(10) = _x + 10 = 4 + 10 = 14


התשובה: k = 14
שאלת מבחן במבוא למדעי המחשב - האוניברסיטה הפתוחה 2022 | prepd.