추상화 - 인터페이스, 추상 클래스
2023. 2. 20. 21:34ㆍ객체지향
728x90
추상화란 무엇일까??
추상의 사전적 의미는 "사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출하여 파악하는 것"이다.
그렇다면, 객체지향에서의 추상화란 어떤 의미일까??
추상의 사전적 의미와 같은 맥락으로 객체지향에서 추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 의미합니다.
추상화를 사용했을 때 이점은 뭘까??
- 추상화를 사용하면, 요구사항의 정책을 높은 수준에서 서술이 가능합니다.
- 추상화를 사용하면, 설계가 유연해집니다.
이게 무슨 말일까???
아래에 다음과 같은 요구사항이 있다고 하자!
감사일기를 작성하면, 리워드 지급 정책에 따라 사용자에게 리워드가 지급됩니다.
여기서, 리워드 지급 정책은 동일 리워드 지급 정책, 외부 조건에 따라 리워드가 달라지는 정책 등을 추상화한 것입니다.
이렇듯 추상화를 사용한다면, 요구사항의 정책을 높은 수준에서 서술할 수 있습니다.
만약에 리워드 지급 정책에 새로운 리워드 지급 정책이 추가됬다고 가정해본다면, 이미 리워드 지급 정책은 추상화가 되어있기때문에 큰 변경 없이 기능을 추가할 수 있습니다.
이는 곧 '설계가 유연해진다.'라는 뜻입니다!
추상화는 언제 사용하는 것인가?
추상화를 사용하는 경우에는 무언가 변동가능한 개념이 있을 때 사용합니다.
추상화는 JAVA에서 어떻게 사용해야 하는가?
JAVA에서 추상화는 인터페이스와 추상 클래스를 사용해서 구현할 수 있습니다.
그렇다면, 추상화를 사용할 때 언제 인터페이스를 사용하고 언제 추상 클래스를 사용해야할까??
- 인터페이스와 같은 경우에는 구현은 공유할 필요가 없이, 순수하게 인터페이스만 공유하고 싶을 때 사용합니다.
- 서로 관련성이 낮은 클래스들에게 공통적인 기능을 추상화하고 싶을 때 사용하는 경우가 많다.
- 디폴트 메서드로 다중 상속이 가능
- 추상 클래스같은 경우에는 인터페이스를 공유하고 싶은데, 구현도 일부 겹칠 때 사용합니다.
- 서로 관련성이 높은 클래스들에게서 코드를 공유하고 싶을 때 사용하는 경우가 많다.
부족한 글 읽어주셔서 감사합니다!!
728x90
'객체지향' 카테고리의 다른 글
일급 컬렉션이 뭘까?? (0) | 2023.02.28 |
---|---|
상속과 합성을 언제 사용해야할까? (0) | 2023.02.20 |