Menu
Coddy logo textTech

속성 (데이터 멤버)

Coddy C++ 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 104개 중 9번째.

데이터 멤버(속성)는 객체의 상태를 저장합니다. 일반적으로 private로 선언하고 public 게터/세터 methods를 통해 접근합니다. 이를 캡슐화라고 합니다.

Private 데이터 멤버

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

public getter와 setter

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

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

유효성 검사가 있는 setter

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

접근 지정자

class MyClass {
private:    // 클래스 내부에서만 접근 가능
    int secret;

public:     // 어디서나 접근 가능
    int getSecret() { return secret; }

protected:  // 클래스와 서브클래스에서 접근 가능
    int shared;
};

데이터 멤버를 private로 설정하면 외부 코드에서 해당 멤버를 숨깁니다. 게터는 멤버의 값을 반환하고, 세터는 선택적 유효성 검사를 통해 값을 수정합니다. 이렇게 하면 데이터를 보호하고 데이터에 액세스하는 방식을 제어할 수 있습니다.

challenge icon

챌린지

중급

private 데이터 멤버와 public 접근 메서드를 사용하는 BankAccount 클래스를 만드세요:

  • private 멤버: accountName (string), balance (int)
  • Setter: setAccountName, setBalance
  • Getter: getAccountName, getBalance
  • deposit(int amount): amount가 > 0이면 balance에 더합니다
  • withdraw(int amount): 가능하면 "Success"를 반환하고, 그렇지 않으면 "Insufficient funds"를 반환합니다

직접 해보기

#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 icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 C++ 컴파일러