JAVA,객체지향

객체 지향 4대 특성(추상화)

25G 2021. 5. 9. 21:21

안녕하세요~ㅎㅎ 오늘은 딱딱한 코드보다는 조금 새로운 카테고리를 만들어 봤는데요 아무래도 제가 공부하고 있는 언어가 객체지향 언어이다 보니 이 객체지향이라는 게 도대체 뭔지 단순히 객체 중심의 코딩을 한다 라기보다는 조금 더 깊게 공부하기 위해 이런 카테고리를 만들어 봤습니다

 

오늘은 객체지향의 4대 특성과 5대 설계원칙 중 4대 특성에 들어가는 추상화에 대해서 공부하고 알아본 것들을 포스팅해 보려고 합니다 잘못된 것이 있으면 댓글로 남겨주시면 감사하겠습니다.

 

추상화라는 단어는 객체지향이라는 단어만큼이나 난해하고 명확히 정의하기 어려운 단어라고 개인적으로 생각합니다 역시 이럴땐 사전적 의미를 찾아보는 게 좋겠죠?

추상화: [명사]여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용

 

그럼 객체 지향에서는 어떻게 해석되나 봤더니 "객체지향의 추상화는 곧 모델링이다"라는 말이 있습니다.

 

추상화란 구체적인 것을 분해해서 관찰자가 관심 있는 특성만 가지고 재조합 하는것이라고 정리할 수 있습니다.

 

위를 설명하기 위해선 클래스에 대해 얘기를 해야겠지만 그전 객체를 먼저 간단하게 알아보자면

1. 물건, 물체

2. 욕망, 연구, 관심 등의 대상

3. 목적, 목표

즉 한글로 굳이 표현하자면 객체보단 개체라는 말이 좀 더 맞을지도 모른다

세상에 존재하는 유일무이한 사물 그것을 객체라고 보고

객체에는 저마다 속성과 기능을 가지고 있습니다. 이 속성과 기능에 따라 객체들을 분류를 해 보니 객체를 통칭할 수 있는 집합적 개념, 클래스가 나오게 되는 거죠

 

그런데 이것들이 추상화랑 무슨 상관이 있는지 의아해하실 수도 있습니다

예를 들어 사람이라는 클래스를 설계한다고 가정한다면 일단 그 설계자는 사람의 공통된 특성을 찾아서 시력, 몸무게 등등 명사로 표현되는 것을 속성으로 분류하고 먹다, 자다 같은 동사로 표현되는 것을 기능이라고 합니다. 그럼 이런 기능들은 동사이니 수행하기 위한 행위를 가지게 되겠죠? 그럼 이때 이 수행하는 기능을 구현하는 로직이 메서드가 되는 것이지요

 

추상화란 구체적인 것을 분해해서 관심 영역에 대한 특성만을 가지고 재조합하는 것

즉 자신이 어떤 애플리케이션을 어디에서 어떻게 사용할 것인지에 대한 설계의 과정이라고 생각합니다.

 

추상화는 모델링이다 라는 말이 어느 정도 이해가 되시는 시점이라고 생각을 하고 좀 더 얘기를 이어나가자면 

모델은 실제 사물을 정확히 복제하는 게 아니라 목적에 맞게 관심 있는 특성만을 추출해서 표현해야 합니다.

이 모델링(추상화)은 객체지향에서는 클래스를 설계할 때 꼭 필요한 과정이고 데이터베이스의 테이블을 설계할때 필요한 기법입니다.

 

자 이렇게 추상화에 대해서 얘기를 해 보았습니다. 원래 제가 공부한 내용은 메모리 영역에서 어떻게 되는지 까지 였지만 글이 너무 길어지고 지루해질 것 같아서 핵심만 정리해서 글을 싸질러 봅니다.

오늘도 블로그 와주셔서 감사하고 다음에 더 좋은 글로 찾아뵙겠습니다.

'JAVA,객체지향' 카테고리의 다른 글

java/라이브러리 만들기  (0) 2021.11.09
JAVA/일반변수와 레퍼런스(참조) 변수  (0) 2021.10.27
메서드 Stack 메모리  (0) 2021.10.27
JAVA기본 메모리 운영  (0) 2021.07.15
객체 지향{상속: 재사용+확장}  (0) 2021.05.11