Menu
Coddy logo textTech

תכונות (חברי נתונים)

חלק מהיחידה תכנות מונחה עצמים במסלול ה-C++ של Coddy. שיעור 9 מתוך 104.

חברי נתונים (מאפיינים) מאחסנים את המצב של אובייקט. בדרך כלל מצהירים עליהם כעל private וניגשים אליהם באמצעות שיטות getter/setter ציבוריות. זה נקרא כימוס.

חברי נתונים פרטיים

class BankAccount {
private:
    std::string accountName;
    int balance;
};

פעולות גישה ציבוריות לקבלת ערכים ולעדכונם

class BankAccount {
private:
    std::string accountName;
    int balance;

public:
    void setBalance(int balance) {
        this->balance = balance;
    }
    
    int getBalance() {
        return this->balance;
    }
};

פונקציות קביעה עם אימות

void BankAccount::setBalance(int balance) {
    if (balance >= 0) {
        this->balance = balance;
    }
}

מצייני גישה

class MyClass {
private:    // נגיש רק בתוך המחלקה
    int secret;

public:     // נגיש מכל מקום
    int getSecret() { return secret; }

protected:  // נגיש במחלקה ובמחלקות הנגזרות ממנה
    int shared;
};

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

challenge icon

אתגר

בינוני

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

  • איברים פרטיים: accountName (מחרוזת), balance (int)
  • פעולות הגדרה: setAccountName, setBalance
  • פעולות אחזור: getAccountName, getBalance
  • deposit(int amount): מוסיפה ליתרה אם amount > 0
  • withdraw(int amount): מחזירה "Success" אם ניתן, אחרת "Insufficient funds"

נסו בעצמכם

#include <iostream>
#include "BankAccount.h"

int main() {
    std::string name;
    int initial, depositAmt;
    std::getline(std::cin, name);
    std::cin >> initial >> depositAmt;
    
    BankAccount account;
    account.setAccountName(name);
    account.setBalance(initial);
    
    std::cout << "Account: " << account.getAccountName() << std::endl;
    std::cout << "Balance: " << account.getBalance() << std::endl;
    
    account.deposit(depositAmt);
    std::cout << "After deposit: " << account.getBalance() << std::endl;
    
    std::string result = account.withdraw(2000);
    std::cout << "Withdraw 2000: " << result << std::endl;
    std::cout << "Final Balance: " << account.getBalance() << std::endl;
    return 0;
}
quiz iconבחנו את עצמכם

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

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

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