클래스는 개념, 객체는 실체
위 말을 기억해 주세요. 위에서 알 수 있는 건 개념과 실체는 다르다는 것이고,
클래스로부터 객체가 만들어지니, 개념으로부터 실체가 만들어진다고도 볼 수 있겠네요.
초등학생에게 추상화에 대해 물어보면 이렇게 대답할지도 몰라요.
추상화란 무엇인가요 ? 추상적이게 만드는 것이요 !
그럼 추상적인 것이란 무엇이죠 ? 음... 사랑 ? 미움 ? 신 ! 붕어빵틀???
'추상적'이라는 건 하나 하나의 사물이 아니라 그것 자체로 '일반적'인 것을 말합니다.
예를 들어
'사람'이라고 해보죠.
그 사람은 세종대왕인가요 ? 나폴레옹인가요 ?
세종대왕, 나폴레옹은 사람의 구체적인 실체이고,
사람은 나폴레옹, 세종대왕 등을 추상화한 개념이에요.
자바로 들어가서 설명해볼게요 !
사람 세종대왕 = new 사람();
말이 되죠. 사람이 태어났는데 그 사람을 세종대왕이라 하자!
vs
나폴레옹 사람 = new 나폴레옹();
나폴레옹이 태어났는데 그 나폴레옹을 사람이라 하자! 이건 어색합니다.
클래스(개념)는 설계도고 객체(실체)는 그 설계도를 바탕으로 만들어진 실제 사물이라고 생각하셔도 좋습니다.
클래스에서 객체가 만들어진다는 건 알겠는데
그래서 추상화가 무엇인가요!!!
역으로 생각해보면 쉬워요.
세종대왕, 나폴레옹, 잔다르크, 호날두, 메시, 푸틴, 트럼프, 마이클 조던 등이 있습니다.
그럼 사람은 어디있죠 ??
사람이라는 개념은 구체적인 실체-세종대왕, 잔다르크, 트럼프, 마이클 조던 등으로부터
공통의 특성-몸무게, 나이, 먹다(), 자다()-을 묶어서 생겨났습니다.
실제로 어린 아이이 학습할 때에는 '실제 바나나'를 여러 번 보고, '바나나라는 개념'을 익히게 됩니다.
바나나의 사전적 의미(개념) : 초승달 모양의 긴 타원형으로 색깔은 주로 누런색이다. 맛과 향기가 좋다.
추상 : 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용.
그렇다면 코딩에서 추상화란 무엇일까요 ?
수학 학원에서 학생 관리 프로그램을 만든다고 해봅시다.
혈액형, 키, 몸무게, mbti 등의 정보가 필요할까요?
변수에는 성적, 학교, 나이 등만 넣으면 되겠죠.
코딩에서 추상화란,
'관심 있는 특성'만을 고르고 클래스(또는 인터페이스)를 만드는 일이라고 생각합니다.
실제 세계의 모든 사례-구체적인 것에서 특성을 고를 필요는 없죠.
그저 우리가 구현해야할 문제에 있어서 필요한 것만 추려내면 됩니다.
객체 지향 언어를 사용하는 개발자가 하는 일은 실제 세계를 복사하는 일이 아니라
실제 세계를 추상화하여 '관심 있는 특성'을 클래스에 녹여내는 것입니다.
참고 :
https://search.shopping.naver.com/book/catalog/32462919817
스프링 입문을 위한 자바 객체 지향의 원리와 이해 : 네이버 도서
네이버 도서 상세정보를 제공합니다.
search.shopping.naver.com
'Java > Java 문법' 카테고리의 다른 글
Java) 캡상추다 - 상속(재사용+확장) feat.인터페이스 (1) | 2024.10.06 |
---|---|
Java) 변수 선언, 저장 및 메모리 영역 (3) | 2024.10.05 |
스트림 예시 (0) | 2024.10.02 |
스트림 (0) | 2024.10.01 |
람다 (0) | 2024.09.27 |