속성 (데이터 멤버)
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로 설정하면 외부 코드에서 해당 멤버를 숨깁니다. 게터는 멤버의 값을 반환하고, 세터는 선택적 유효성 검사를 통해 값을 수정합니다. 이렇게 하면 데이터를 보호하고 데이터에 액세스하는 방식을 제어할 수 있습니다.
챌린지
중급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;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 C++ 컴파일러