Menu
Coddy logo textTech

Atributos (Membros de Dados)

Parte da seção Programação Orientada a Objetos do Journey de C++ da Coddy — lição 9 de 104.

Membros de dados (atributos) armazenam o estado de um objeto. Eles são tipicamente declarados como private e acessados por meio de métodos getter/setter públicos. Isso é chamado de encapsulamento.

Membros de dados privados

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

Getters e setters públicos

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

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

Setters com validação

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

Especificadores de acesso

class MyClass {
private:    // Acessível apenas dentro da classe
    int secret;

public:     // Acessível de qualquer lugar
    int getSecret() { return secret; }

protected:  // Acessível na classe e subclasses
    int shared;
};

Tornar os membros de dados private os esconde do código externo. Getters retornam seus valores, setters os modificam com validação opcional. Isso protege seus dados e controla como eles são acessados.

challenge icon

Desafio

Médio

Crie uma classe BankAccount com membros de dados privados e métodos de acesso públicos:

  • Membros privados: accountName (string), balance (int)
  • Setters: setAccountName, setBalance
  • Getters: getAccountName, getBalance
  • deposit(int amount) — adiciona ao saldo se o valor for > 0
  • withdraw(int amount) — retorna "Success" se possível, caso contrário "Insufficient funds"

Folha de consulta

Membros de dados (atributos) armazenam o estado de um objeto e são tipicamente declarados como private para encapsulamento.

Membros de dados privados:

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

Getters e setters públicos:

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

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

Setters com validação:

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

Especificadores de acesso:

class MyClass {
private:    // Acessível apenas dentro da classe
    int secret;

public:     // Acessível de qualquer lugar
    int getSecret() { return secret; }

protected:  // Acessível na classe e subclasses
    int shared;
};

Experimente você mesmo

#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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos