אתם מתרגלים שאלה מתוך בגרות מדעי המחשב — מבני נתונים (שאלון 899271)מבחן 2025 · קיץ מועד Special · שאלה 12כל שאלות המבחן ←
תכנות מונחה עצמיםירושה

המחלקה One כוללת שדה סטטי num (משותף לכל העצמים), שני בנאים עמוסים, ופעולת add(One) הניתנת לדריסה. Two יורשת מ-One, מוסיפה שדה y, שני בנאים משלה (הקוראים ל-super/base), מגדירה mul() חדשה (בלי פרמטר - לא דריסה של mul(int)) ודורסת את add(One). סעיף א עוקב אחר 5 קריאות הבנאי הראשונות בפעולת main/Main; בכל אחד מ-10 סעיפי ב מציבים שורת קוד עצמאית אחת במקום ה-// ***, וקובעים אם היא תקינה - ואם כן, מה הפלט הנוסף.

public class One
{
    private static int num = 0;
    protected int x;

    public One(int n)
    {
        this.x = n;
        num += n;
        Console.WriteLine("One 1");
    }

    public One(int n1, int n2)
    {
        this.x = n1 + n2;
        num += n1;
        Console.WriteLine("One 2");
    }

    public int GetNum()
    {
        return num;
    }

    public int GetX()
    {
        return x;
    }

    public int Mul(int n)
    {
        return this.x * n;
    }

    public virtual void Add(One other)
    {
        this.x += other.x;
        Console.WriteLine("x = " + this.x);
    }
}

public class Two : One
{
    private int y;
    public Two() : base(10)
    {
        this.y = 12;
    }

    public Two(int num) : base(num/2)
    {
        this.y = num;
        Console.WriteLine("Second");
    }

    public int Mul()
    {
        return this.x * this.y;
    }

    public override void Add(One other)
    {
        if (other is Two)
            this.y += ((Two)other).y;
        Console.WriteLine("y = " + this.y);
    }
}

public class Tester
{
    public static void Main(string[] args)
    {
        One one1 = new One(1);
        One one2 = new One(2, 3);
        One oneTwo = new Two(4);
        Two two1 = new Two();
        Two two2 = new Two(6);
        // ***
    }
}
סעיף א

ציירו את העצמים שנוצרו בפעולת main/Main, וכתבו את הפלט של הפעולה (עד לשורה // ***).

`public class One { private static int num = 0; protected int x;

public One(int n)
{
    this.x = n;
    num += n;
    Console.WriteLine("One 1");
}

public One(int n1, int n2)
{
    this.x = n1 + n2;
    num += n1;
    Console.WriteLine("One 2");
}

public int GetNum()
{
    return num;
}

public int GetX()
{
    return x;
}

public int Mul(int n)
{
    return this.x * n;
}

public virtual void Add(One other)
{
    this.x += other.x;
    Console.WriteLine("x = " + this.x);
}

}

public class Two : One { private int y; public Two() : base(10) { this.y = 12; }

public Two(int num) : base(num/2)
{
    this.y = num;
    Console.WriteLine("Second");
}

public int Mul()
{
    return this.x * this.y;
}

public override void Add(One other)
{
    if (other is Two)
        this.y += ((Two)other).y;
    Console.WriteLine("y = " + this.y);
}

}

public class Tester { public static void Main(string[] args) { One one1 = new One(1); One one2 = new One(2, 3); One oneTwo = new Two(4); Two two1 = new Two(); Two two2 = new Two(6); // *** } }`

סעיף ב.1

הציבו את הפקודה הבאה במקום המצוין לעיל ב-***, במקום פעולת main/Main. כתבו במחברת את מספר הפקודה וציינו אם הקוד תקין או לא תקין. אם הקוד תקין -- כתבו את הפלט, ואם הוא אינו תקין, הסבירו מדוע. Java: System.out.println ("Total = " + one1.getNum()); C#: Console.WriteLine ("Total = " + one1.GetNum());

סעיף ב.2

הציבו את הפקודה הבאה במקום המצוין לעיל ב-***, במקום פעולת main/Main. כתבו במחברת את מספר הפקודה וציינו אם הקוד תקין או לא תקין. אם הקוד תקין -- כתבו את הפלט, ואם הוא אינו תקין, הסבירו מדוע. Java: System.out.println ("Total = " + two2.getNum()); C#: Console.WriteLine ("Total = " + two2.GetNum());

סעיף ב.3

הציבו את הפקודה הבאה במקום המצוין לעיל ב-***, במקום פעולת main/Main. כתבו במחברת את מספר הפקודה וציינו אם הקוד תקין או לא תקין. אם הקוד תקין -- כתבו את הפלט, ואם הוא אינו תקין, הסבירו מדוע. Java: System.out.println ("mul = " + one1.mul(1)); C#: Console.WriteLine ("Mul = " + one1.Mul(1));

סעיף ב.4

הציבו את הפקודה הבאה במקום המצוין לעיל ב-***, במקום פעולת main/Main. כתבו במחברת את מספר הפקודה וציינו אם הקוד תקין או לא תקין. אם הקוד תקין -- כתבו את הפלט, ואם הוא אינו תקין, הסבירו מדוע. Java: System.out.println ("mul = " + oneTwo.mul()); C#: Console.WriteLine ("Mul = " + oneTwo.Mul());

סעיף ב.5

הציבו את הפקודה הבאה במקום המצוין לעיל ב-***, במקום פעולת main/Main. כתבו במחברת את מספר הפקודה וציינו אם הקוד תקין או לא תקין. אם הקוד תקין -- כתבו את הפלט, ואם הוא אינו תקין, הסבירו מדוע. Java: System.out.println ("mul = " + two1.mul()); C#: Console.WriteLine ("Mul = " + two1.Mul());

סעיף ב.6

הציבו את הפקודה הבאה במקום המצוין לעיל ב-***, במקום פעולת main/Main. כתבו במחברת את מספר הפקודה וציינו אם הקוד תקין או לא תקין. אם הקוד תקין -- כתבו את הפלט, ואם הוא אינו תקין, הסבירו מדוע. Java: one1.add(oneTwo); C#: one1.Add(oneTwo);

סעיף ב.7

הציבו את הפקודה הבאה במקום המצוין לעיל ב-***, במקום פעולת main/Main. כתבו במחברת את מספר הפקודה וציינו אם הקוד תקין או לא תקין. אם הקוד תקין -- כתבו את הפלט, ואם הוא אינו תקין, הסבירו מדוע. Java: two1.add(oneTwo); C#: two1.Add(oneTwo);

סעיף ב.8

הציבו את הפקודה הבאה במקום המצוין לעיל ב-***, במקום פעולת main/Main. כתבו במחברת את מספר הפקודה וציינו אם הקוד תקין או לא תקין. אם הקוד תקין -- כתבו את הפלט, ואם הוא אינו תקין, הסבירו מדוע. Java: ((Two)one1).mul(); C#: ((Two)one1).Mul();

סעיף ב.9

הציבו את הפקודה הבאה במקום המצוין לעיל ב-***, במקום פעולת main/Main. כתבו במחברת את מספר הפקודה וציינו אם הקוד תקין או לא תקין. אם הקוד תקין -- כתבו את הפלט, ואם הוא אינו תקין, הסבירו מדוע. Java: two1 = new One(1,2); C#: two1 = new One(1,2);

סעיף ב.10

הציבו את הפקודה הבאה במקום המצוין לעיל ב-***, במקום פעולת main/Main. כתבו במחברת את מספר הפקודה וציינו אם הקוד תקין או לא תקין. אם הקוד תקין -- כתבו את הפלט, ואם הוא אינו תקין, הסבירו מדוע. Java: ((One)two1).mul(1); C#: ((One)two1).Mul(1);

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי