מאפיינים במימוש אוטומטי
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C# של Coddy. שיעור 10 מתוך 70.
מאפיינים שממומשים אוטומטית מאפשרים לך להצהיר על מאפיינים בלי לכתוב שדות גיבוי מפורשים. המהדר יוצר מאחורי הקלעים שדה פרטי מוסתר באופן אוטומטי.
במקום לכתוב את הקוד המפורט הזה:
public class Product
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}אפשר פשוט לכתוב:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}אפשר גם להגדיר ערכי ברירת מחדל ישירות בהצהרה:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}מאפיינים הממומשים אוטומטית אידיאליים כשאין צורך באימות או בלוגיקה מותאמת אישית ב-getter או ב-setter. הם שומרים על המחלקות שלך נקיות ומצמצמים משמעותית קוד תבניתי.
אתגר
קלבואו נבנה מערכת מלאי פשוטה באמצעות מאפיינים שממומשים אוטומטית, כדי לעקוב אחר פריטים בחנות.
תיצרו שני קבצים כדי לארגן את הקוד:
Item.cs: הגדירו מחלקה בשםItemבמרחב השמותInventory, עם מאפיינים שממומשים אוטומטית עבורName(string),Price(decimal) ו-InStock(bool). הגדירו ערכי ברירת מחדל:Nameצריך לקבל כברירת מחדל את"Unknown",Priceאת0.0m, ו-InStockאתtrue.Program.cs: בקובץ הראשי, צרו שני אובייקטים מסוגItemבאמצעות מאתחלי אובייקטים. קראו מהקלט את השם והמחיר של כל פריט, ולאחר מכן הדפיסו את הפרטים של כל פריט.
תקבלו ארבעה קלטים:
- השם של הפריט הראשון
- המחיר של הפריט הראשון
- השם של הפריט השני
- המחיר של הפריט השני
הדפיסו כל פריט בתבנית הזו:
Item: {Name}, Price: {Price}, In Stock: {InStock}לדוגמה, אם הקלטים הם Laptop, 999.99, Mouse ו-25.50, הפלט צריך להיות:
Item: Laptop, Price: 999.99, In Stock: True
Item: Mouse, Price: 25.50, In Stock: Trueנסו בעצמכם
using System;
using Inventory;
class Program
{
public static void Main(string[] args)
{
// קרא את נתוני הקלט של הפריט הראשון
string name1 = Console.ReadLine();
decimal price1 = Convert.ToDecimal(Console.ReadLine());
// קרא את נתוני הקלט של הפריט השני
string name2 = Console.ReadLine();
decimal price2 = Convert.ToDecimal(Console.ReadLine());
// TODO: צור שני אובייקטים מסוג Item באמצעות אתחול אובייקטים
// הגדר את המאפיינים Name ו-Price לפי ערכי הקלט
// TODO: הדפס את פרטי כל פריט בפורמט:
// פריט: {Name}, מחיר: {Price}, במלאי: {InStock}
}
}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים
קבצים חיצונייםמרחבי שמות והנחיותמבוא למחלקות ולאובייקטיםמילת המפתח 'this'מתודות ופרמטריםשדות לעומת מאפייניםבנאיםאתחול אובייקטיםסיכום – מחשבון פשוט4ירושה
תחביר ירושה בסיסית (:)מילת המפתח 'base'מילות המפתח Virtual ו-Overrideמחלקות Sealedמחלקת הבסיס 'object'סיכום – היררכיית עובדים7תכונות מתקדמות
העמסת אופרטוריםאינדקסרים (this[])דריסת ToString()מתודות הרחבהסיכום – רשימה מותאמת אישית2מאפיינים וחברים סטטיים
מאפיינים במימוש אוטומטימאפיינים לקריאה בלבד ולכתיבה בלבדשדות ומתודות סטטייםמחלקות סטטיותחברים עם גוף ביטוי5פולימורפיזם וממשקים
פולימורפיזם בזמן קומפילציה לעומת בזמן ריצהממשק לעומת מחלקה מופשטתממשקים מרוביםממשקים מפורשיםהמרה כלפי מעלה והמרה כלפי מטהחזרה: מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה במקום ירושהGenerics (מחלקות ומתודות)נציגים ואירועיםמאפיינים ורפלקציהIDisposable והצהרת usingיסודות הזרקת תלויותתרגלו בעצמכם: קומפיילר C# אונליין