일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 시스템
- NIO
- 파이썬
- 코틀린
- Java
- 자바암호
- android
- spring data jpa
- 데이터베이스
- jpa
- 고전역학
- GPT-4's answer
- kotlin
- flet
- chatGPT's answer
- 소프트웨어공학
- 웹 크롤링
- python
- JVM
- 유닉스
- write by GPT-4
- 인프라
- 리눅스
- 자바
- write by chatGPT
- 역학
- Database
- 자바네트워크
- spring integration
- oracle
- Today
- Total
Akashic Records
5.4 캡슐화 본문
캡슐화(Encapsulation)는 객체 지향 프로그래밍의 핵심 원칙 중 하나로, 객체의 데이터와 메서드를 함께 묶어서 외부에서 접근을 제한하는 것을 의미합니다. 캡슐화를 사용하면 데이터와 메서드를 객체 내부에서만 사용하도록 할 수 있으며, 이를 통해 코드의 안정성과 유지 보수성을 높일 수 있습니다.
파이썬에서 캡슐화를 구현하는 방법은 주로 접근 제한자(Access Modifiers)를 사용합니다. 파이썬에서 접근 제한자는 다음과 같이 세 가지로 구분됩니다:
- Public: 이름 앞에 언더스코어(_)가 없는 변수나 메서드는 public으로 간주되며, 어디에서나 접근할 수 있습니다.
- Protected: 이름 앞에 하나의 언더스코어(_)가 있는 변수나 메서드는 protected로 간주되며, 해당 클래스와 하위 클래스에서만 접근할 수 있습니다. 그러나 파이썬에서는 실제로 외부 접근을 제한하지는 않고, 프로그래머에게 상속 관계에서만 사용하도록 권장한다는 의미입니다.
- Private: 이름 앞에 두 개의 언더스코어(__)가 있는 변수나 메서드는 private으로 간주되며, 해당 클래스 내부에서만 접근할 수 있습니다. 파이썬에서는 이름 장식(Name Mangling)을 통해 실제로 외부에서 접근하는 것을 어렵게 만듭니다.
캡슐화 예시 코드:
class BankAccount:
def __init__(self, account_number, name, balance):
self.__account_number = account_number
self.__name = name
self.__balance = balance
# Getter 메서드
def get_account_number(self):
return self.__account_number
def get_name(self):
return self.__name
def get_balance(self):
return self.__balance
# Setter 메서드
def set_name(self, name):
self.__name = name
def deposit(self, amount):
if amount > 0:
self.__balance += amount
def withdraw(self, amount):
if 0 < amount <= self.__balance:
self.__balance -= amount
else:
print("잔액이 부족합니다.")
def display(self):
print(f"계좌번호: {self.__account_number}, 이름: {self.__name}, 잔액: {self.__balance}")
위 예시에서 BankAccount 클래스의 인스턴스 변수들(__account_number, __name, __balance)은 private 접근 제한자를 사용하여 외부에서 직접 접근할 수 없게 합니다. 대신, getter와 setter 메서드를 통해 해당 변수들에 안전하게 접근하거나 값을 변경할 수 있습니다. 이렇게 캡슐화를 통해 데이터의 무결성을 유지하고 객체의 상태를 관리하는 로직을 적절하게 구현할 수 있습니다.
또한, deposit 및 withdraw 메서드를 통해 잔액 변경을 관리하고 있으며, 이러한 메서드를 사용하여 외부에서 잔액을 안전하게 조작할 수 있습니다. 이와 같이 캡슐화를 사용하면 코드의 안정성과 유지 보수성을 높일 수 있습니다.
캡슐화를 사용하는 주요 이점은 다음과 같습니다:
- 데이터 은닉(Data Hiding): 객체의 내부 상태를 외부에서 직접 접근할 수 없게 하여 데이터의 무결성을 유지합니다. 이를 통해 객체의 상태를 적절한 메서드를 사용하여 관리할 수 있습니다.
- 코드 재사용성(Reusability): 캡슐화된 객체는 독립적이기 때문에 다른 프로그램에서도 쉽게 재사용할 수 있습니다.
- 코드 유지 보수성(Maintainability): 객체의 상태를 관리하는 로직이 내부에 캡슐화되어 있으므로, 수정이 필요할 경우 해당 객체의 코드만 변경하면 됩니다. 이렇게 하면 전체 코드에 영향을 미치지 않고 유지 보수가 쉬워집니다.
- 코드의 안정성(Stability): 객체의 내부 상태를 외부로부터 보호함으로써 객체의 상태를 예상치 못한 방식으로 변경되는 것을 방지할 수 있습니다. 이를 통해 코드의 안정성이 향상됩니다.
캡슐화를 통해 데이터와 메서드를 함께 묶고 외부 접근을 제한하면, 객체 지향 프로그래밍의 원칙에 따라 안정적이고 유지 보수가 쉬운 코드를 작성할 수 있습니다.
'Python for Beginners' 카테고리의 다른 글
6.1 예외 처리 (0) | 2023.03.21 |
---|---|
5.5 디자인 패턴 (0) | 2023.03.20 |
5.3 다형성 (0) | 2023.03.20 |
5.2 상속 (0) | 2023.03.20 |
5.1 클래스(Class)와 객체(Object) (0) | 2023.03.20 |