정보 은닉(Information Hiding)은 객체 지향 프로그래밍에서 중요한 원칙 중 하나로, 객체 간의 데이터 보호를 위해 특정 정보나 구현 세부 사항을 외부로부터 숨기는 개념입니다. 이 원칙은 클래스나 객체의 내부 상태나 기능이 외부에 공개되지 않도록 하여, 데이터 무결성을 유지하고 외부 코드가 내부 구현에 의존하지 않도록 하는 것을 목표로 합니다.
정보 은닉의 주요 목적은 다음과 같습니다:
1. 데이터 보호
객체의 내부 데이터를 외부에서 직접 접근하지 못하도록 하여, 잘못된 접근이나 수정으로 인해 발생할 수 있는 오류를 방지합니다. 이를 통해 객체의 상태를 보호하고 데이터의 무결성을 유지할 수 있습니다.
2. 캡슐화(Encapsulation)
정보 은닉은 캡슐화와 밀접하게 관련되어 있습니다. 캡슐화는 객체의 데이터를 메서드와 함께 묶어 두는 것을 의미하며, 외부에서는 메서드를 통해서만 데이터를 접근할 수 있게 합니다. 이를 통해 객체의 구현 세부 사항을 외부로부터 숨길 수 있습니다.
3. 유지 보수성 향상
클래스의 내부 구현이 외부에 노출되지 않기 때문에, 내부 구현을 변경하더라도 외부 코드에 미치는 영향을 최소화할 수 있습니다. 이로 인해 시스템의 유지 보수와 확장이 용이해집니다.
4. 인터페이스 분리
정보 은닉을 통해 객체는 자신의 인터페이스만을 외부에 제공하고, 내부 구현은 숨깁니다. 외부에서는 인터페이스를 통해서만 객체와 상호작용할 수 있습니다. 이로 인해 객체 간의 결합도가 낮아지고, 독립적인 모듈로 개발할 수 있게 됩니다.
class BankAccount:
def __init__(self, balance):
self.__balance = balance # __로 시작하는 변수는 프라이빗 변수로 처리됨
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
return amount
else:
return "Insufficient balance"
def get_balance(self):
return self.__balance
위의 예시에서 `BankAccount` 클래스는 `__balance`라는 프라이빗(private) 변수를 가지고 있습니다. 이 변수는 클래스 내부에서만 접근 가능하며, 외부에서는 `deposit`, `withdraw`, `get_balance` 메서드를 통해서만 접근할 수 있습니다. 이를 통해 클래스 외부에서 `balance` 값을 직접 수정할 수 없게 되어 데이터 무결성이 보호됩니다.
'정보처리기술사 > 기출문제' 카테고리의 다른 글
Self-Organizing Map(SOM) (0) | 2024.08.14 |
---|---|
다크패턴(Dark Pattern) (0) | 2024.08.14 |
IT프로젝트에서의 리스크 대응절차 (0) | 2024.08.14 |
형상관리(Configuration Management)의 기준선 (0) | 2024.08.14 |
머신러닝(Machine Learning) 성능지표 (0) | 2024.08.14 |