속성 (데이터 멤버)
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)는 선택적인 유효성 검사와 함께 값을 수정합니다. 이를 통해 데이터를 보호하고 데이터에 접근하는 방식을 제어할 수 있습니다.
챌린지
중급프라이빗 데이터 멤버와 퍼블릭 액세스 메서드를 가진 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;
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.