반응형
캡슐화는 객체의 내부 상태와 동작을 외부 세계로부터 숨기고 대신 객체와의 상호 작용을 위한 공용 인터페이스를 노출하는 방법을 나타내는 객체 지향 프로그래밍의 특징 중 하나입니다. 이렇게 하면 객체가 사용되는 방식을 더 잘 제어할 수 있으며 개체의 내부 상태에 대한 의도하지 않은 변경을 방지할 수 있습니다.
캡슐화는 객체의 내부 상태 및 메서드에 대한 액세스를 제한하기 위해 액세스 한정자(예: "private" 또는 "protected")를 사용하여 달성되는 경우가 많습니다. 객체의 내부 상태 및 동작을 비공개로 만들고 개체와의 상호 작용을 위한 공용 인터페이스만 노출함으로써 개발자는 객체가 올바르게 사용되고 내부 상태가 일관되게 유지되도록 할 수 있습니다.
아래 예제는 C언어로 작성한 캡슐화의 예제입니다.
#include <stdio.h>
// define a struct for a bank account
typedef struct {
int account_number;
float balance;
} Account;
// function to create a new account
Account create_account(int account_number, float initial_balance) {
Account new_account;
new_account.account_number = account_number;
new_account.balance = initial_balance;
return new_account;
}
// function to deposit money into an account
void deposit(Account* account, float amount) {
account->balance += amount;
}
// function to withdraw money from an account
void withdraw(Account* account, float amount) {
account->balance -= amount;
}
// function to check the balance of an account
float check_balance(Account* account) {
return account->balance;
}
int main() {
Account my_account = create_account(123456, 0);
deposit(&my_account, 100);
printf("Account balance: $%.2f\n", check_balance(&my_account));
withdraw(&my_account, 25);
printf("Account balance: $%.2f\n", check_balance(&my_account));
return 0;
}
이 예에서 Account 구조체는 은행 계좌를 나타내며 account_number 및 balance라는 두 개의 객체가 있습니다. 이 필드는 외부 세계에서 숨겨져 있으며 제공된 함수 create_account, deposit, withdraw 및 check_balance를 통해서만 액세스할 수 있습니다. 이렇게 하면 계정의 내부 상태가 보호되고 사용자는 제공된 기능을 통해서만 계정과 상호 작용할 수 있으므로 계정 내부 상태의 일관성이 보장됩니다.
반응형
'공부 > OOP' 카테고리의 다른 글
인스턴스(instance)란? (0) | 2023.01.15 |
---|---|
객체지향의 5대 원칙 (0) | 2023.01.15 |
객체지향의 개념과 객체지향의 4대 특징 (0) | 2023.01.14 |
접근자(Getter)와 설정자(Setter)의 개념 (0) | 2023.01.13 |
오버로딩(Overloading)과 오버라이딩(Overriding)의 개념과 차이 (0) | 2022.12.29 |