Menu
Coddy logo textTech

Attributs (Membres de données)

Fait partie de la section Programmation Orientée Objet du Journey C++ de Coddy — leçon 9 sur 104.

Les membres de données (attributs) stockent l'état d'un objet. Ils sont généralement déclarés private et on y accède par des méthodes getter/setter publiques. C'est ce qu'on appelle l'encapsulation.

Membres de données privés

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

Accesseurs et mutateurs publics

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

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

Setters avec validation

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

Spécificateurs d'accès

class MyClass {
private:    // Accessible uniquement à l'intérieur de la classe
    int secret;

public:     // Accessible de n'importe où
    int getSecret() { return secret; }

protected:  // Accessible dans la classe et les sous-classes
    int shared;
};

Rendre les membres de données private les masque du code extérieur. Les accesseurs (getters) retournent leurs valeurs, les mutateurs (setters) les modifient avec une validation optionnelle. Cela protège vos données et contrôle la manière dont on y accède.

challenge icon

Défi

Moyen

Créez une classe BankAccount avec des membres de données privés et des méthodes d'accès publiques :

  • Membres privés : accountName (string), balance (int)
  • Setters : setAccountName, setBalance
  • Getters : getAccountName, getBalance
  • deposit(int amount) — ajoute au solde si le montant est > 0
  • withdraw(int amount) — retourne "Success" si possible, sinon "Insufficient funds"

Aide-mémoire

Les membres de données (attributs) stockent l'état d'un objet et sont généralement déclarés private pour l'encapsulation.

Membres de données privés :

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

Getters et setters publics :

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

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

Setters avec validation :

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

Spécificateurs d'accès :

class MyClass {
private:    // Accessible uniquement à l'intérieur de la classe
    int secret;

public:     // Accessible de n'importe où
    int getSecret() { return secret; }

protected:  // Accessible dans la classe et les sous-classes
    int shared;
};

Essayez vous-même

#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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet