Menu
Coddy logo textTech

Attribute (Datenelemente)

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

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

Private Datenelemente

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;
    }
}

Zugriffsspezifizierer

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;
};

Indem man Datenelemente private macht, werden sie vor externem Code verborgen. Getter geben ihre Werte zurück, Setter ändern sie mit optionaler Validierung. Dies schützt Ihre Daten und kontrolliert, wie auf sie zugegriffen wird.

challenge icon

Aufgabe

Mittel

Erstellen Sie 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 möglich, andernfalls "Insufficient funds"

Spickzettel

Datenelemente (Attribute) speichern den Zustand eines Objekts und werden normalerweise als private für die Kapselung deklariert.

Private Datenelemente:

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;
    }
}

Zugriffsspezifizierer:

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;
};

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