Menu
Coddy logo textTech

שדות לעומת מאפיינים

חלק מהיחידה תכנות מונחה עצמים במסלול ה-C# של Coddy. שיעור 6 מתוך 70.

שדות הם משתנים שמוצהרים ישירות במחלקה. מאפיינים הם חברים שמספקים גישה מבוקרת לשדות באמצעות מאחזרי get ו-set.

שדות מאחסנים נתונים ישירות

public class Person
{
    // שדות - אחסון ישיר של משתנים
    private string name;
    private int age;
}

מאפיינים מספקים גישה מבוקרת באמצעות get ו-set

public class Person
{
    private string name;
    
    // מאפיין עם שדה גיבוי
    public string Name
    {
        get { return name; }
        set { name = value; }
    }
}

מאפיינים שממומשים אוטומטית (קיצור)

public class Person
{
    // מאפיין שממומש אוטומטית
    public string Name { get; set; }
    public int Age { get; set; }
}

מאפיינים יכולים לכלול לוגיקת אימות

public class Person
{
    private int age;
    
    public int Age
    {
        get { return age; }
        set 
        { 
            if (value >= 0 && value <= 120)
                age = value;
        }
    }
}

מאפיין לקריאה בלבד (מאפשר גישה get בלבד)

public class Circle
{
    private double radius;
    
    public double Radius
    {
        get { return radius; }
    }
    
    // מאפיין מחושב לקריאה בלבד
    public double Area
    {
        get { return Math.PI * radius * radius; }
    }
}

שדות הם בדרך כלל פרטיים, וניגשים אליהם באמצעות מאפיינים. מאפיינים מאפשרים להוסיף לוגיקה, אימות ושליטה באופן הגישה לנתונים או שינוי שלהם. מאפיינים הממומשים אוטומטית נוחים כשאין צורך בלוגיקה נוספת.

challenge icon

אתגר

בינוני

צרו מחלקה BankAccount שמדגימה את ההבדל בין שדות למאפיינים:

  • שדה פרטי balance לאחסון יתרת החשבון
  • מאפיין שממומש אוטומטית AccountName
  • מאפיין לקריאה בלבד Balance שמחזיר את השדה של היתרה
  • המתודות Deposit ו־Withdraw שמשנות את השדה הפרטי

נסו בעצמכם

using System;

class Program
{
    static void Main()
    {
        string accountName = Console.ReadLine();
        decimal initialBalance = decimal.Parse(Console.ReadLine());
        decimal depositAmount = decimal.Parse(Console.ReadLine());
        
        BankAccount account = new BankAccount(accountName, initialBalance);
        
        Console.WriteLine($"Account: {account.AccountName}");
        Console.WriteLine($"Initial Balance: ${account.Balance}");
        
        account.Deposit(depositAmount);
        Console.WriteLine($"After Deposit: ${account.Balance}");
        
        string result = account.Withdraw(2000);
        Console.WriteLine($"Withdraw attempt: {result}");
        Console.WriteLine($"Final Balance: ${account.Balance}");
    }
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר C# אונליין