[OOP]추상화와 캡슐화

박상준·2023년 8월 3일
0

JAVA

목록 보기
1/5
post-custom-banner

추상화

  1. 개요

    • 단순한 상태나 모양 등을 기준으로 공통화를 하는 행위를 추상화라고 하지 않는다.
    • 추상적인 행동을 기준으로 추상화를 해야한다.
  2. 예시

    • 고양이 , 강아지 , 토끼 등을 각각의 개별 컨텍스트로 정의한 경우를 생각해보자.
      • 각각의 컨텍스트들은 모두 움직인다 먹는다 등의 행동을 수행하고있다.
      • 이를 통하여 공통적인 행위들을 토대로 일반화된 처리가 필요한 경우, 각 컨텍스트에 일반화된 개념을 입혀 동물 이라는 추상적인 개념을 일반화합니다.
      • 추상화된 해당 행위를 통해 특정한 요구사항을 만족시키는 처리를 수행할 수 있게 됩니다.

    초기 설계 단계에서 추출하는 것이 아니다..

캡슐화

  1. 사전적 정의

    • 데이터와 그 데이터를 다루는 행위를 하나로 묶는 작업입니다.
  2. 목적?

    • 데이터의 보호 (== 제어권을 외부에 두는 행위) 는 부수적인 목적입니다.
    • 주된 목적으로는, 필요한 행동을 수행하도록 하는 것이며, 데이터 자체에 집중하는 것이 아니라, 데이터를 어떻게 사용하느냐를 정의해주는 역할을 합니다.
  3. “데이터를 어떻게 사용하느냐” 가 무엇인가

    • 데이터를 이용하여 무엇을 할지 결정하는 그 행위 에 집중해야합니다.
    • 해당 행위 들을 통해 해당 클래스에서 표현된 개념어떻게 동작하는지를 알 수 있습니다.
  4. 고찰

    예를 들어 우리가 일반적인 setter 를 정의한 경우

    setter 를 통해 클래스가 가진 데이터를 ~~ 한 데이터로 변경함을 의미한다는 행위가,

    ⇒ (쓰다가 깨닫) getter와 setter 도 결국 외부에서 어떠한 데이터가 존재하는지 알 수 있고 ,

    데이터를 이용하여 무엇을 할지 결정한 행위 라기 보다, 객체 상태를 외부에서 조작하는 행위 이기에, 데이터 자체에 집중한 행위 이기에, 사용하면 안된다고 하는 것 인거 같다.

    물론 완벽하게 필요하지 않은 건 또 아닌거같다. getter 의 경우에는 일부 필요하지 않을까?

    getter , setter 를 사용하지 않고,

    • 특정 행위 안에서 내부적으로 데이터에 대한 관리가 들어가야 완벽한 캡슐화이다.
    • 예를 들어 계좌의 개념의 클래스라면 출금 관련 행위를 수행하면서 , 내부 데이터의 관리도 수행하는 경우가 캡슐화의 궁극적인 목적이 되는 것이다.
profile
이전 블로그 : https://oth3410.tistory.com/
post-custom-banner

0개의 댓글