📌 목차
1장: 사람을 사랑한 기술
2장: 자바와 절차적/ 구조적 프로그래밍
3장: 자바와 객체 지향
04장: 자바가 확장한 객체 지향
5장: 객체 지향 설계 5원칙 - SOLID
6장: 스프링이 사랑한 디자인 패턴
7장: 스프링 삼각형과 설정 정보
부록 A: 스프링 MVC를 이용한 게시판 구축
부록 B: 자바 8 람다와 인터페이스 스펙 변화
객체 지향이라는 말이 너무 추상적으로 느껴졌다면
이 책을 읽기 전까지는 객체 지향이라는 말이 추상적이었다.
그냥 “현실 세계를 모방한다”는 말로는 이해가 되지 않았고, 그냥 자바가 객체 지향 언어라는 것만 아는 정도였다. 😅
그런데 책을 통해 객체 지향이라는 메커니즘이 어떻게 자바 안에서 구조화되고, 스프링에서는 그것이 어떻게 실현되는지 구체적으로 이해할 수 있었다.
객체 지향은 인간을 위한 언어다
책 초반에서부터 강렬하게 와닿은 문장이 있다.
“객체 지향은 인간을 위한 패러다임이다.”
기계어 → 어셈블리어 → C언어 → 자바로의 흐름이 단순한 언어 진화가 아니라 인간이 프로그래밍을 좀 더 편하게 하기 위한 과정이었다는 사실이 인상 깊었다.
인간 중심의 언어가 바로 객체 지향이라는 설명은 ‘왜 객체 지향을 써야 하는가’에 대한 질문의 답이 될 수 있다.
"클래스는 붕어빵 틀, 객체는 붕어빵"은 틀렸다
“클래스는 붕어빵 틀, 객체는 붕어빵”이라는 설명은 나도 익숙하게 들어왔고 남에게 설명할 때도 써본 적 있다.
그런데 책에서는 이 비유가 틀렸다고 한다.
붕어빵은 틀에서 만들어지는 것이지, 틀의 인스턴스는 아니다.
결국 클래스는 `객체를 생성하는 공장(팩토리)`일 뿐이라는 관점이
객체 생성 흐름(new → 힙 할당 → 참조 연결)을 명확하게 이해하게 만들었다.
다음 문제들의 답을 생각해 보자.
- 사람은 클래스인가? 객체인가?
- 김연아는클래스인가?객체인가?
- 뽀로로는 클래스인가? 객체인가?
- 펭권은 클래스인가? 객체인가?
이 질문으로 클래스와 객체의 차이를 설명한 부분이 정말 인상 깊었다.
- 사람의나이는몇살인가?
- 김연아의 나이는 몇 살인가?
- 뽀로로의 나아는 몇 살인가?
- 펭귄의 나이는 몇 살인가?
사람은 분류 개념이라서 나이를 알 수 없고, 김연아는 실체(객체)라서 나이를 알 수 있다.
"즉, 클래스는 분류에 대한 개념이지 실체가 아니다. 객체는 실체다"
T 메모리를 이해하면 JVM이 보인다
JVM의 T 메모리 구조를 기반으로 자바의 실행 원리를 설명해 주는 챕터는 JVM 입문자에게 진짜 바이블이다.
- main() 메서드 실행 전에 static 영역에 java.lang 패키지를 올리고
- main() 실행과 함께 스택 프레임이 생기고
- 지역 변수는 스택에, 인스턴스 변수는 힙에, 클래스 변수는 static에 저장되고
- 메서드 실행이 끝나면 스택 프레임은 제거되고 힙의 객체는 GC의 대상이 되는 흐름까지
실제 코드를 하나하나 실행하면서 실행 흐름과 메모리 구조를 ‘눈으로 따라가듯’ 정말 자세하게 설명해 준다.
자바를 공부하려면 이 구조를 무조건 이해해야 어떤 책이든 이해할 수 있겠다고 생각했다.
SOLID 원칙이 진짜 재밌어진다
이전에는 객상추다, SOLID.. 응응... 그런 거 있지 정도였다.
근데 1~4장의 내용을 이해한다면 5장의 SOLID 원칙 파트가 정말 재밌고, 센세이션 할 것이다.
앞에서 배운 객체 지향 개념들이 실제 설계 원칙으로 어떻게 이어지는지 이해할 수 있다.
이 책 읽으면서 정리한 포스팅!
👀 추천하고 싶은 사람
- 자바는 쓰는데 객체 지향이 뭔지 모호했던 사람
- 상속, 다형성, 캡슐화 같은 개념이 머릿속에서만 맴돌았던 사람
- 스프링이 어떻게 DI와 AOP를 구현하는지 알고 싶은 사람
- 설계 원칙을 그냥 외우는 게 아니라 '이해하고 싶은' 사람
- 그리고... “클래스는 뭐고 객체는 뭘까요?”라는 질문에 명확한 답을 못 하겠는 사람
'📝 끄적끄적 > 후기 및 회고' 카테고리의 다른 글
'JSP 2.3 웹 프로그래밍: 기초부터 중급까지'를 읽고 (0) | 2025.04.08 |
---|---|
'자바의신1&2(3판)'를 읽고 (0) | 2024.12.07 |
2023년 회고 (0) | 2024.01.03 |
자바의 신 개정판이 출간되었다. (0) | 2023.10.19 |
'스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고 (0) | 2023.10.13 |
`자바 ORM 표준 JPA 프로그래밍 - 기본편`을 보고 (1) | 2023.06.15 |