Menu
Coddy logo textTech

Attribute (Datenmember)

Teil des Abschnitts Objektorientierte Programmierung der C++-Journey von Coddy. Lektion 9 von 104.

Datenmember (Attribute) speichern den Zustand eines Objekts. Sie werden typischerweise als private deklariert und über öffentliche Getter-/Setter-methods aufgerufen. Dies wird als Kapselung bezeichnet.

Private Datenmember

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

Öffentliche Getter und Setter

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

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

Setter mit Validierung

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

Zugriffsbezeichner

class MyClass {
private:    // Nur innerhalb der Klasse zugänglich
    int secret;

public:     // Von überall zugänglich
    int getSecret() { return secret; }

protected:  // In der Klasse und in Unterklassen zugänglich
    int shared;
};

Wenn Datenmitglieder private gemacht werden, werden sie vor externem Code verborgen. Getter geben ihre Werte zurück, Setter ändern sie mit optionaler Validierung. Dadurch werden deine Daten geschützt und der Zugriff darauf kontrolliert.

challenge icon

Aufgabe

Mittel

Erstelle eine BankAccount-Klasse mit privaten Datenelementen und öffentlichen Zugriffsmethoden:

  • Private Member: accountName (String), balance (int)
  • Setter: setAccountName, setBalance
  • Getter: getAccountName, getBalance
  • deposit(int amount): erhöht den Kontostand, wenn amount > 0 ist
  • withdraw(int amount): gibt „Success“ zurück, wenn dies möglich ist, andernfalls „Insufficient funds“

Probier es selbst

#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 dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-C++-Compiler