Menu
Coddy logo textTech

Atrybuty (składowe danych)

Część sekcji Programowanie obiektowe ścieżki C++ w Coddy. Lekcja 9 z 104.

Pola danych (atrybuty) przechowują stan obiektu. Zazwyczaj są deklarowane jako private i dostęp do nich uzyskuje się za pomocą publicznych metod pobierających i ustawiających. Nazywa się to hermetyzacją.

Prywatne składowe danych

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

Publiczne metody pobierające i ustawiające

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

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

Settery z walidacją

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

Specyfikatory dostępu

class MyClass {
private:    // Dostępne tylko wewnątrz klasy
    int secret;

public:     // Dostępne z dowolnego miejsca
    int getSecret() { return secret; }

protected:  // Dostępne w klasie i jej klasach pochodnych
    int shared;
};

Ustawienie składowych danych jako private ukrywa je przed kodem zewnętrznym. Gettery zwracają ich wartości, a settery je modyfikują, opcjonalnie je walidując. Chroni to Twoje dane i pozwala kontrolować sposób dostępu do nich.

challenge icon

Wyzwanie

Średni

Utwórz klasę BankAccount z prywatnymi składowymi danych i publicznymi metodami dostępu:

  • Prywatne składowe: accountName (string), balance (int)
  • Settery: setAccountName, setBalance
  • Gettery: getAccountName, getBalance
  • deposit(int amount): zwiększa saldo, jeśli amount > 0
  • withdraw(int amount): zwraca "Success", jeśli to możliwe, w przeciwnym razie "Insufficient funds"

Spróbuj swoich sił

#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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator C++ online