해결된 질문
작성
·
166
0
`추상화`라는 개념을 제가 잘못 알고 있을지 몰라 질문하게 되었습니다.
저는 인터페이스 나 추상클래스를 추출한 다음 적용하는 것을 `추상화`를 적용했다 라고 이해하고 있었어요.
" 하위개념을 포괄하는 상위개념을 적용한다"
강의영상 6 : 15초 쯤 필드변수를 getter 로 치환하는 과정을`추상화 시킨다`고 말씀하셨는데요, 이 과정이 왜 `추상화`하는 과정인지 이해가 쉽지 않은데요,
`추상화`를 정의하려면 어떻게 접근하면 좋을지 약간의 조언을 부탁드려도 될까요?
읽어주셔서 감사합니다.
답변 1
5
안녕하세요. 찐별님.
좋은 질문 감사합니다. 추상화, Abstraction이라는건 개념적인 것이고, 찐별님이 설명하신 인터페이스나 추상클래스를 추출하는 과정은 추상화의 구체적인 사례에 해당합니다. 그리고 여기서 보여드린 필드(구체적인 것)를 메소드 (추상적인 것)으로 감싸는 행위도 역시 한가지 구체적인 사례에 해당하는 거죠. 둘중에 어떤게 추상화냐.. 라고 따져봐야 의미가 없습니다.
필드는 딱 해당 필드 하나만 지칭하니까 구체적이고, 그러나 어떤 값을 리턴해주는 함수는 A라는 필드 값을 리턴하다가 나중에 B라는 필드의 값을 리턴하더라도 함수 이름은 그대로 유지할 수가 있으니 상대적으로 추상적입니다. 그런 의미에서 "추상화 시킨다"라고 말을 한겁니다.
그리고 클라이언트 입장에서는 메소드만 호출할 뿐이지, 그 메소드에서 어떤 필드의 값이 어떻게 계산되어 나오는지 까지는 몰라도 되니까 그것도 역시 일종의 추상화라고 볼 수 있는 것입니다. 마치 인터페이스뒤에 어떤 구현체가 있는지 상관없이 인터페이스 기반으로 코딩하듯이 말이죠.
부디 이해하시는데 도움이 되었길 바랍니다.
감사합니다