Menu
Coddy logo textTech

속성 (데이터 멤버)

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

데이터 멤버(속성)는 객체의 상태를 저장합니다. 이들은 일반적으로 private으로 선언되며 공개 getter/setter 메서드를 통해 접근됩니다. 이것을 캡슐화라고 합니다.

프라이빗 데이터 멤버

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

공개 게터(getters)와 세터(setters)

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

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

유효성 검사가 포함된 세터

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으로 설정하면 외부 코드로부터 이를 숨길 수 있습니다. 게터(Getters)는 그 값을 반환하고, 세터(Setters)는 선택적인 유효성 검사와 함께 값을 수정합니다. 이를 통해 데이터를 보호하고 데이터에 접근하는 방식을 제어할 수 있습니다.

challenge icon

챌린지

중급

프라이빗 데이터 멤버와 퍼블릭 액세스 메서드를 가진 BankAccount 클래스를 생성하세요:

  • 프라이빗 멤버: accountName (string), balance (int)
  • 세터(Setters): setAccountName, setBalance
  • 게터(Getters): getAccountName, getBalance
  • deposit(int amount) — amount > 0인 경우 잔액에 추가합니다
  • withdraw(int amount) — 가능한 경우 "Success"를 반환하고, 그렇지 않으면 "Insufficient funds"를 반환합니다

치트 시트

데이터 멤버(속성)는 객체의 상태를 저장하며, 캡슐화를 위해 일반적으로 private으로 선언됩니다.

프라이빗(Private) 데이터 멤버:

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

퍼블릭(Public) 게터(getters)와 세터(setters):

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

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

유효성 검사가 포함된 세터:

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

접근 제어자(Access specifiers):

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

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

protected:  // 클래스 및 하위 클래스에서 접근 가능
    int shared;
};

직접 해보기

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

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

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