Menu
Coddy logo textTech

Attributi (membri dati)

Fa parte della sezione Programmazione orientata agli oggetti del percorso C++ di Coddy. Lezione 9 di 104.

I membri dati (attributi) memorizzano lo stato di un oggetto. In genere vengono dichiarati private e vi si accede tramite metodi getter/setter pubblici. Questo si chiama incapsulamento.

Membri dati privati

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

Getter e setter pubblici

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

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

Setter con convalida

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

Specificatori di accesso

class MyClass {
private:    // Accessibile solo all'interno della classe
    int secret;

public:     // Accessibile da ovunque
    int getSecret() { return secret; }

protected:  // Accessibile nella classe e nelle sottoclassi
    int shared;
};

Rendere i membri dati private li nasconde al codice esterno. I getter restituiscono i loro valori, mentre i setter li modificano con una convalida facoltativa. Questo protegge i tuoi dati e controlla il modo in cui vi si accede.

challenge icon

Sfida

Medio

Crea una classe BankAccount con membri dati privati e metodi di accesso pubblici:

  • Membri privati: accountName (stringa), balance (int)
  • Setter: setAccountName, setBalance
  • Getter: getAccountName, getBalance
  • deposit(int amount): aggiunge al saldo se l’importo > 0
  • withdraw(int amount): restituisce "Success" se possibile, altrimenti "Insufficient funds"

Provalo tu

#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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore C++ online