[꼼꼼한 개발자] 꼼코더
14. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [자바와 객체 지향] - 붕어빵틀 vs 붕어빵 은 잘못된 예시?, 객체와 클래스 개념 잡기, 추상화 : 모델링 본문
14. 스프링 입문을 위한 자바 객체 지향의 원리와 이해 - [자바와 객체 지향] - 붕어빵틀 vs 붕어빵 은 잘못된 예시?, 객체와 클래스 개념 잡기, 추상화 : 모델링
꼼코더 2022. 12. 27. 18:39👀 클래스 vs 객체 = 붕어빵틀 vs 붕어빵 은 잘못된 예시??
아마 많은 사람들이 들었던 클래스와 객체의 관계의 예시일 것이다.
하지만 붕어빵틀 ↔️ 붕어빵 예시는 ‘클래스와 객체의 관계’의 예시가 ‘아니다’
아래 코드를 보자. (쉽게 한글로 자바 코드를 흉내 내어 설명해 보겠다.)
뭔가 이상함을 눈치 챘을것이다.
그래도 어렵다면 좀 더 풀어서 설명해 보겠다.
붕어빵 틀을 생산하는 금형 기계가 있고
붕어빵 틀이 붕어빵을 찍어내서 ‘클래스’라고 한다.
그렇다면 같은 논리로 금형기계는 붕어빵틀을 찍어내는 클래스가 된다.
위에 말을 인간적인 말로 번역한다면 > “새로운 금형기계를 하나 만들었더니 붕어빵틀이 되었다..??”
이해가 어려운 예제이다.
금형기계와 붕어빵틀이 클래스와 객체 관계가 아니듯 붕어빵 틀과 붕어빵도 클래스와 객체 관계가 아니다.
그럼 붕어빵에게 붕어빵틀은 무엇일까?
붕어빵틀은 붕어빵을 만드는 펙토리였던 것이다.
추후 디자인 패턴 부분에서 펙토리를 다루겠다.
🥍 객체와 클래스 개념 잡기
자 그럼 질문을 해 보겠다.
- 사람은 클래스인가? 객체인가?
- 김연아는 클래스인가? 객체인가?
- 뽀로로는 클래스인가? 객체인가?
- 펭귄은 클래스인가? 객체인가?
또 다른 질문을 해 보겠다.
- 사람의 나이는 몇 살인가?
- 김연아의 나이는 몇 살인가?
- 뽀로로의 나이는 몇 살인가?
- 펭귄의 나이는 몇 살인가?
💁🏻♂️ 정답
“엥..?사람의 나이??”, “펭귄의 나이 이건 또 무슨 소리야??”라고 생각이 들었다면 그것은 ‘클래스’이다.
“김연아의 나이..?? 몇 살이지?”, “뽀로로는 지금 기준으로 몇 살이지.?”라고 생각이 들었다면 그것은 “객체’이다.
따라서 정답은 [사람, 펭귄 == 클래스], [김연아, 뽀로로 == 객체]
🎨 추상화 : 모델링
“객체 지향의 추상화는 곧 모델링이다”.라는 관점을 살펴보자
추상화란 구체적인 것을 분해해서 관찰자가 관심 있는 특성만 가지고 재조합하는 것.이라고 할 수 있다.
그럼 이렇게 생각해 볼 수 있다.
“내가 만들고자 하는 애플리케이션은 어디에서 사용될 것인가?”
그럼 위에서 말 한 추상화는 곧 모델링이라는 말대로 모델링을 해보자
병원 애플리케이션을 만들고자 생각하고 사람 클래스에서 필요한, 필요 없는 특성들을 구분해 보자.
🧹 정리
중요한 부분을 강조해서 보자.
- OOP의 추상화는 모델링이다.
- 클래스 : 객체 = 펭귄 : 뽀로로 = 사람 : 김연아
- 클래스 설계에서 추상화가 사용된다.
- 클래스 설계를 위해서는 애플리케이션 경제부터 정해야 한다.
- 객체 지향에서 추상화의 결과는 클래스다.
사실 추상화의 개념을 넓게 본다면 아래 내용도 포함된다.
- 상속을 통한 추상화, 구체화
- 인터페이스를 통한 추상화
- 다형성을 통한 추상화
위 내용들은 상속과 다형성, 인터페이스를 살펴볼 때 하나씩 살펴보자.
🙋🏻♂️ 마지막 질문
Q. 자바는 객체 지향의 추상화를 어떻게 지원하고 있을까?
A. class 키워드를 통하여
추상화 = 모델링 = 자바의 class 키워드
다음시간에는 추상화를 실습해 보도록 하자.
위 내용은 스프링 입문을 위한 자바 객체 지향의 원리와 이해 교재를 참고하여 작성되었습니다.