Menu
Coddy logo textTech

Atributos (Miembros de datos)

Parte de la sección Programación Orientada a Objetos del Journey de C++ de Coddy — lección 9 de 104.

Los miembros de datos (atributos) almacenan el estado de un objeto. Normalmente se declaran como private y se accede a ellos a través de métodos getter/setter públicos. Esto se llama encapsulación.

Miembros de datos privados

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

Getters y 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 con validación

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

Especificadores de acceso

class MyClass {
private:    // Solo accesible dentro de la clase
    int secret;

public:     // Accesible desde cualquier lugar
    int getSecret() { return secret; }

protected:  // Accesible en la clase y subclases
    int shared;
};

Hacer que los miembros de datos sean private los oculta del código externo. Los getters devuelven sus valores, los setters los modifican con validación opcional. Esto protege tus datos y controla cómo se accede a ellos.

challenge icon

Desafío

Intermedio

Crea una clase BankAccount con miembros de datos privados y métodos de acceso públicos:

  • Miembros privados: accountName (string), balance (int)
  • Setters: setAccountName, setBalance
  • Getters: getAccountName, getBalance
  • deposit(int amount) — añade al saldo si amount > 0
  • withdraw(int amount) — devuelve "Success" si es posible, de lo contrario "Insufficient funds"

Hoja de referencia

Los miembros de datos (atributos) almacenan el estado de un objeto y normalmente se declaran como private para el encapsulamiento.

Miembros de datos privados:

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

Getters y 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 con validación:

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

Especificadores de acceso:

class MyClass {
private:    // Solo accesible dentro de la clase
    int secret;

public:     // Accesible desde cualquier lugar
    int getSecret() { return secret; }

protected:  // Accesible en la clase y subclases
    int shared;
};

Pruébalo tú mismo

#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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación Orientada a Objetos