데이터 추상화 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개가 되었다.
* 추상화라는 과정의 객관적인 기준, 근거가 없는 경우가 많다.
사람마다 다르게 이해하고 사용하는 것들의
공통된 부분이 무엇인지 결정하고 일반화하는 과정에서
많은 의견 출동이 있을 수 있다.
귀여운 그림은 쭐어님이 그리셨습니다.
'자바 JAVA' 카테고리의 다른 글
[JAVA]자바 - 생성자 Constructor (0) | 2021.07.03 |
---|---|
[JAVA]자바 - 다형성 Polymorphism (1) | 2021.06.30 |
[JAVA]자바 - 캡슐화 Encapsulation (0) | 2021.06.29 |
[JAVA]자바 - 빌드와 라이브러리 (0) | 2021.06.24 |
[JAVA]자바 - 패키지 Package (0) | 2021.02.08 |