סיכום – רשימה מותאמת אישית
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C# של Coddy. שיעור 40 מתוך 70.
אתגר
קלבואו נבנה מחלקה CustomList שמאגדת את כל התכונות המתקדמות מהפרק הזה — העמסת אופרטורים, אינדקסרים, דריסה של ToString() ומתודות הרחבה — כדי ליצור אוסף שנוח ואינטואיטיבי להשתמש בו.
תארגן את הקוד שלך בשלושה קבצים:
CustomList.cs: צור מחלקהCustomListבמרחב השמותCollections, שעוטפת מערך של מספרים שלמים ומספקת דרכי גישה אינטואיטיביות. הרשימה שלך צריכה לכלול:- מערך פרטי של מספרים שלמים לאחסון פריטים, ומאפיין
Count(עם setter פרטי) שעוקב אחר מספר הפריטים המאוחסנים - בנאי שמקבל קיבולת (מספר שלם) ומאתחל את המערך הפנימי לגודל זה
- מתודה
Add(int item)שמוסיפה פריט למיקום הזמין הבא (אם יש מקום) - אינדקסר
this[int index]שמאפשר לקבל פריטים לפי מיקומם ולעדכן אותם - העמסת אופרטור
+שמאחדת שתי רשימות CustomLists לרשימה חדשה שמכילה את כל הפריטים משתיהן (הקיבולת של הרשימה החדשה צריכה להיות סכום מספר הפריטים בשתי הרשימות) - מתודת
ToString()דרוסה שמחזירה את הפריטים בפורמט[item1, item2, item3]— יש לכלול רק פריטים עדCount, ולא משבצות ריקות
- מערך פרטי של מספרים שלמים לאחסון פריטים, ומאפיין
ListExtensions.cs: צור מחלקה סטטיתListExtensionsבמרחב השמותCollections, ובה מתודת הרחבה עבור ה-CustomList שלך:Sum()— מחזירה את סכום כל הפריטים ברשימה (עדCount)
Program.cs: בקובץ הראשי שלך, צור שתי רשימות CustomList, הוסף פריטים לכל אחת, ולאחר מכן הדגם כיצד כל התכונות פועלות יחד — השתמש באינדקסר כדי לגשת לפריטים, אחד רשימות באמצעות האופרטור+, הדפס באמצעותToString()וחשב את הסכום באמצעות מתודת ההרחבה שלך.
תקבל שש קלטים:
- שלושה מספרים שלמים להוספה לרשימה הראשונה
- שלושה מספרים שלמים להוספה לרשימה השנייה
צור את הרשימה הראשונה בקיבולת 5 ואת השנייה בקיבולת 3. הוסף את שלושת ערכי הקלט לרשימה המתאימה.
הדפס את הפלט בפורמט הבא:
List 1: {ToString()}
List 2: {ToString()}
List 1[0]: {first item}
Combined: {ToString() of combined list}
Combined sum: {Sum()}לדוגמה, אם הקלטים הם 10, 20, 30, 5, 15 ו-25, הפלט צריך להיות:
List 1: [10, 20, 30]
List 2: [5, 15, 25]
List 1[0]: 10
Combined: [10, 20, 30, 5, 15, 25]
Combined sum: 105שים לב איך כל החלקים פועלים יחד — האינדקסר מאפשר גישה בדומה למערך, האופרטור + מאפשר לאחד רשימות באופן טבעי, ToString() מספק פלט קריא, ומתודת ההרחבה מוסיפה פונקציונליות שימושית. כך מרגישות מחלקות שמתוכננות היטב!
נסו בעצמכם
using System;
using Collections;
class Program
{
public static void Main(string[] args)
{
// קרא שישה מספרים שלמים
int a1 = Convert.ToInt32(Console.ReadLine());
int a2 = Convert.ToInt32(Console.ReadLine());
int a3 = Convert.ToInt32(Console.ReadLine());
int b1 = Convert.ToInt32(Console.ReadLine());
int b2 = Convert.ToInt32(Console.ReadLine());
int b3 = Convert.ToInt32(Console.ReadLine());
// TODO: צור CustomList ראשון בקיבולת 5
// TODO: הוסף את a1, a2, a3 לרשימה הראשונה
// TODO: צור CustomList שני בקיבולת 3
// TODO: הוסף את b1, b2, b3 לרשימה השנייה
// TODO: הדפס את List 1 באמצעות ToString()
// TODO: הדפס את List 2 באמצעות ToString()
// TODO: הדפס את List 1[0] באמצעות האינדקסר
// TODO: שלב את הרשימות באמצעות האופרטור + והדפס את התוצאה
// TODO: הדפס את סכום הרשימה המשולבת באמצעות מתודת ההרחבה Sum()
}
}
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםמרחבי שמות והנחיותמבוא למחלקות ולאובייקטיםמילת המפתח 'this'מתודות ופרמטריםשדות לעומת מאפייניםבנאיםאתחול אובייקטיםסיכום – מחשבון פשוט4ירושה
תחביר ירושה בסיסית (:)מילת המפתח 'base'מילות המפתח Virtual ו-Overrideמחלקות Sealedמחלקת הבסיס 'object'סיכום – היררכיית עובדים7תכונות מתקדמות
העמסת אופרטוריםאינדקסרים (this[])דריסת ToString()מתודות הרחבהסיכום – רשימה מותאמת אישית2מאפיינים וחברים סטטיים
מאפיינים במימוש אוטומטימאפיינים לקריאה בלבד ולכתיבה בלבדשדות ומתודות סטטייםמחלקות סטטיותחברים עם גוף ביטוי5פולימורפיזם וממשקים
פולימורפיזם בזמן קומפילציה לעומת בזמן ריצהממשק לעומת מחלקה מופשטתממשקים מרוביםממשקים מפורשיםהמרה כלפי מעלה והמרה כלפי מטהחזרה: מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה במקום ירושהGenerics (מחלקות ומתודות)נציגים ואירועיםמאפיינים ורפלקציהIDisposable והצהרת usingיסודות הזרקת תלויותתרגלו בעצמכם: קומפיילר C# אונליין