자바 JAVA

[JAVA]자바 - 데이터 추상화 Data Abstraction

스누징어 2021. 6. 29. 16:51

데이터 추상화 Data Abstraction

선행

* 데이터 추상화를 쉽게 이해하기 위해서는 캡슐화가 무엇인지 알아야 한다.

 

[JAVA]자바 - 캡슐화 Encapsulation

캡슐화 Encapsulation OOP의 4대 특성 * 캡슐화는 OOP(Object Oriented Programming)의 4대 특성 중 하나로 주류 OO언어에 꼭 들어가는 개념이다. * 캡슐화는 데이터와 함수를 클래스라는 개념으로 묶은 것이다..

licktwice.tistory.com

 

 

OOP의 4대 특성

* 데이터 추상화는 OOP(Object Oriented Programming)의 4대 특성 중 하나로 

  주류 OO언어에 꼭 들어가는 개념이다.

 

* 데이터 추상화는 좋은 캡슐화만으로 얻을 수 있다.

 

* 데이터 추상화는 꼭 OO에서만 있는 개념이 아니며 절차지향에서도 

  다른 여러 분야에서도 적용될 수 있다.

 

 

(데이터) 추상화란 - 1

* '추상화'란 다른 말로 '일반화'라고 하며, 반의어는 '구체화'이다.

  

* 추상화의 예시

  전원 버튼을 누른다. -> 무언가가 켜진다.

  이처럼 우리는 내부 동작을 몰라도 어떤 결과가 나올지를 예상할 수 있다.

  추상화는 핸드폰, TV, 에어컨 등 많은 곳에 적용될 수 있는 '개념'이고

  우리는 모든 가전제품의 작동방식을 몰라도 원하는 결과를 얻어낼 수 있다.

 

* 제작자가 아닌 사용자 입장에서는 

  클래스를 구제적으로 아는 것이 아닌, 추상적으로만 알아도 된다.

 

* 즉, 추상화란 사용자가 클래스를 사용할 때 내부 데이터와 함수 구현을 몰라도 된다는 의미이다.

  추상화란 사용자가 클래스 안에 있는 구체적인 것들에 종속되지 않는다는 것이다.

  

 

(데이터) 추상화란 - 2

* 추상 클래스(abtract class)나 추상 메서드, 인터페이스에 관한 의미이다.

 

* 공통된 특성, 개념, 동작을 하나로 묶는 것이 추상화이다.

  비슷한 함수를 하나의 추상 메서드 안에 정의하는 것으로

  공통된 함수 시그니쳐를 가지게 한다. 

  추상 메서드를 가지고 있는 게 추상 클래스이고, 

  추상 클래스와 메서드는 상속과 다형성의 기반이 된다.

 

* 즉, 여러 클래스에서 공통된 부분을 모아 하나의 부모 클래스를 만드는 것이 추상화이다.

  자식 클래스마다 동작은 다르지만 같은 함수 시그니쳐를 가지는 것이 추상화이다.

 

 

(데이터) 추상화란 - 3

* 클래스를 만드는 것도 추상화가 들어간다고 할 수 있다.

 

* 예를 들어 사람 클래스를 만든다고 한다면 무엇이 들어갈까?

  키, 몸무게, 혈액형, 성별 등을 넣고,

  동작으로 숨쉬기, 소화기능 등을 넣을 것이다.

 

why?

  저런 특성들은 모든 사람 객체에 들어가는 공통된 요소이기 때문이다.

 

공통된 요소를 모으는 게 왜?

  1. 모든 사람에게 들어가는 공통된 요소를 클래스에 넣어 코드 중복을 줄인다.

  2. 수많은 객체를 만들 때 완성도(안정성)가 올라간다.

      (만약 클래스에 '키'를 넣지 않았다면 키가 0인 사람이 생길 가능성이 있다.)

 

* 개개인의 특성은 나중에 각각의 자식 클래스나 개체에 넣으면 된다.

 

 

추상화의 단점

* 쓸데없는 코드가 늘어날 수 있다.

  클래스 안에 데이터가 100개라면,  

  각 데이터마다 getter, setter가 존재하고, 총함수의 개수는 200개가 되었다.

 

* 추상화라는 과정의 객관적인 기준, 근거가 없는 경우가 많다.

  사람마다 다르게 이해하고 사용하는 것들의

  공통된 부분이 무엇인지 결정하고 일반화하는 과정에서

  많은 의견 출동이 있을 수 있다.

 

 

 

 

 

 

 

 

 

귀여운 그림은 쭐어님이 그리셨습니다.

반응형