'스프링 입문을 위한 자바 객체 지향의 원리와 이해'를 읽고

2023. 10. 31. 11:32·📝 끄적끄적/후기 및 회고

 

[책 링크]

📌 목차
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 원칙 파트가 정말 재밌고, 센세이션 할 것이다.

앞에서 배운 객체 지향 개념들이 실제 설계 원칙으로 어떻게 이어지는지 이해할 수 있다.

 

이 책 읽으면서 정리한 포스팅!

더보기

로또 코드 예제로 이해해 보는 객체 지향 설계 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
'📝 끄적끄적/후기 및 회고' 카테고리의 다른 글
  • '자바의신1&2(3판)'를 읽고
  • 2023년 회고
  • 자바의 신 개정판이 출간되었다.
  • '스프링 부트와 AWS로 혼자 구현하는 웹 서비스'를 읽고
현주먹
현주먹
대구 불주먹 출신 현주먹의 개발.log
  • 현주먹
    현주먹의 개발로그
    현주먹
  • 전체
    오늘
    어제
    • 전체글 (176)
      • 👶🏻 CS (15)
        • Operating System (7)
        • DB (5)
        • Data Structure (2)
        • Software Engineering (1)
      • 💻 Dev (54)
        • Java & OOP (24)
        • Spring (4)
        • DB&JPA (6)
        • Test Code (1)
        • JSP & Servlet (13)
        • Etc (6)
      • 💡 Algorithm (25)
        • 인프런 (9)
        • 백준 (16)
      • 🛠 DevOps & Tool (11)
        • Linux (4)
        • AWS (1)
        • Git (2)
        • Etc (4)
      • 📝 끄적끄적 (71)
        • 후기 및 회고 (10)
        • TDD, 클린 코드 with Java 17기 (3)
        • F-Lab (23)
        • 🖥️ 자바의 정석 (11)
        • 📖 Clean Code (3)
        • 항해99 코테 스터디 (11)
        • 📖 가상 면접 사례로 배우는 대규모 시스템 설계 .. (9)
  • 블로그 메뉴

    • 🐈‍⬛ GitHub
    • TIL repository
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 태그

    개발자멘토링
    자바의신절판
    자바의정석
    에프랩
    코딩테스트준비
    TDD 클린 코드 with Java
    오블완
    에프랩 후기
    C
    NextSTEP
    코테스터디
    til
    99클럽
    ==와 equals()
    f-lab 후기
    JPA
    인프런 특정문자뒤집기
    개구리책
    항해99
    티스토리챌린지
    F-Lab
    jsp 2.3 웹 프로그래밍: 기초부터 중급까지
    2025스프링캠프
    개발자취업
    데브클럽
    객체지향
    오라클
    로또 미션
    백준
    jsp
  • hELLO· Designed By정상우.v4.10.2
현주먹
'스프링 입문을 위한 자바 객체 지향의 원리와 이해'를 읽고
상단으로

티스토리툴바