개념공부

캡슐화(Encapsulation)

Cadi 2024. 12. 15. 23:38

캡슐화 : 데이터(변수)와 그 데이터를 다루는 기능(메서드)를 하나의 캡슐에 담아 외부에서 직접 접근하지 못하게 막고, 

통제된 방법(의도된 메서드)로만 접근하도록 만드는 방법

 

인벤토리를 만들 때에 사용했던 코드가 캡슐화의 예시이다.

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