캡슐화 : 데이터(변수)와 그 데이터를 다루는 기능(메서드)를 하나의 캡슐에 담아 외부에서 직접 접근하지 못하게 막고,
통제된 방법(의도된 메서드)로만 접근하도록 만드는 방법
인벤토리를 만들 때에 사용했던 코드가 캡슐화의 예시이다.
private ItemInfo itemInfo;
private 접근자로 데이터를 숨겨준다.
public ItemInfo ItemInfo
{
get => itemInfo; // 데이터를 가져올 때
set
{
itemInfo = value; // 데이터를 설정할 때
SetItemImage(itemInfo.itemData.icon); // 설정하면서 추가 작업 수행
}
}
ItemInfo는 통제된 접근 방법으로 아이템 데이터를 바꿀 수 있게 해준다.
장점
- 데이터 보호 : 직접적으로 수정하지 못하게 막음, 데이터 손상 방지
- 재사용성,유지보수성 : 특정 작업을 추가하기 쉬움
- 가독성 향상
- 안정적 인터페이스
물론 데이터를 숨겨주는 과정 없이도 간단한 코드는 똑같은 기능을 사용할 수 있다.
다만 다음과 같은 이유들로 더 좋은 방식이 될 수 있다.
- 데이터를 더 안전하게 보호할 수 있다( 설정(set) 과정 뿐만 아니라 읽는(get) 과정도)
- 내부 데이터에 더 많은 제어 추가 가능 (내부란, private itemInfo)
객체의 내부 구현을 외부로부터 감춰서, 내부 구현의 변경이 외부에 영향 X - 다른 프로퍼티들로 안전하게 기능 추가 가능
'개념공부' 카테고리의 다른 글
Unity Animation with method (1) | 2024.12.22 |
---|---|
Static (0) | 2024.12.19 |
ScriptableObject (1) | 2024.12.15 |
트리의 회전과 AVL 트리 (0) | 2024.12.11 |
다익스트라 알고리즘(Dijkstra's Algorithm) (0) | 2024.12.10 |