המשימה
נתונה המחלקה Book עם שתי תכונות פרטיות: כותרת ושנה.
השלם אותה כך שתכלול:
• בנאי רגיל שמקבל כותרת ושנה.
• **בנאי העתקה** — בנאי שמקבל ספר קיים ובונה ממנו ספר חדש עם אותם
ערכים.
• פעולת setYear שמשנה את השנה.
• פעולה sameAs שמקבלת ספר אחר ומחזירה true אם שני הספרים בעלי אותה
כותרת ואותה שנה.
הנחיות:
• השוואת מחרוזות נעשית ב-equals ולא ב-== . השוואה ב-== משווה הפניות,
ולכן היא עלולה להחזיר false על שתי מחרוזות זהות.
• זו בדיוק הנקודה של התרגיל: `Book b = a;` אינו העתקה — שני השמות
מצביעים על אותו עצם, ושינוי דרך אחד נראה גם דרך השני. בנאי העתקה
יוצר עצם **חדש**, ולכן שינוי בו אינו משפיע על המקור.
• sameAs משווה ערכים, לא הפניות. שני עצמים נפרדים עם אותם ערכים —
התשובה true.
```ds:table
{"title":"הבדיקה שבקוד","rows":[["שלב","a","עותק","sameAs"],["אחרי ההעתקה","Dune 1965","Dune 1965","true"],["אחרי setYear(2000) על העותק","Dune 1965","Dune 2000","false"]]}
```
קוד הפתיחה
using System;
class Book {
private string title;
private int year;
public Book(string title, int year) {
// אתחל את התכונות
}
/** בנאי העתקה — בונה ספר חדש עם אותם ערכים כמו other. */
public Book(Book other) {
// כתוב את הפתרון כאן
}
public string GetTitle() {
return "";
}
public int GetYear() {
return 0;
}
public void SetYear(int year) {
// עדכן את השנה
}
/** האם שני הספרים בעלי אותה כותרת ואותה שנה. */
public bool SameAs(Book other) {
// כתוב את הפתרון כאן
return false;
}
}
class Program {
static void Main() {
Book a = new Book("Dune", 1965);
Book copy = new Book(a);
Console.WriteLine(a.SameAs(copy)); // True
copy.SetYear(2000);
Console.WriteLine(a.GetYear()); // 1965 — המקור לא נפגע
Console.WriteLine(copy.GetYear()); // 2000
Console.WriteLine(a.SameAs(copy)); // False
Book r = a; // לא העתקה — אותו עצם
r.SetYear(1999);
Console.WriteLine(a.GetYear()); // 1999
Book x = new Book("Dune", 1999);
Console.WriteLine(a.SameAs(x)); // True — ערכים זהים
}
}
כדי לכתוב, להריץ ולקבל משוב — התחבר עם חשבון Google. לוקח שנייה.
המשוב נוצר על ידי AI ועשוי לטעות. אם אתה חושב שהפתרון שלך נכון —
כנראה שאתה צודק. הציון כאן הוא לתרגול בלבד ואינו מדווח לאיש.
אל תכתוב בקוד פרטים אישיים כמו שם מלא, טלפון או כתובת. הקוד נשלח לשירות
בדיקה חיצוני.