Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الـ Attributes (بيانات الأعضاء)

جزء من قسم البرمجة كائنية التوجه في رحلة C++ على Coddy. الدرس 9 من 104.

تخزّن أعضاء البيانات (السمات) حالة الكائن. عادةً ما يتم تعريفها باستخدام private والوصول إليها من خلال methods عامة للحصول على القيم وتعيينها. يُسمّى هذا التغليف.

أعضاء البيانات private

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 (string)، 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++ عبر الإنترنت