
JVM(Java Virtual Machine)의 존재와 역할을 아는 것이 자바 개발 환경을 이해하는 데 필수적이다.

객체 지향의 큰 그림세상의 모든 것은 "객체(Object)"다.

추상 메서드(Abstract Method)를 간단하게 설명하면 선언부는 있는데 구현부가 없는 메서드를 말한다.

객체 지향의 개념과 4대 특성앞의 3개의 장을 통해 객체 지향의 개념과 4대 특성을 학습했다. 이제 객체 지향 프로그램을 작성할 수 있는 도구를 획득한 것이다.

'객체지향의 4대 특성'은 객체지향을 잘 사용하기위한 '도구'이다. '객체지향의 5대 원칙'은 이러한 도구를 올바르게 사용하는 원칙으로 볼 수 있다. 그렇다면 디자인패턴은 무엇에 비유할 수 있을까? '디자인 패턴'은 레시피이다.

스프링을 이해하려면 POJO를 기반으로 스프링 삼각형이라는 애칭을 가진 IoC/DI, AOP, PSA라고 하는 스프링의 3대 프로그래밍 모델에 대해 이해가 필수다.

객체 지향 필수 도서 오브젝트를 읽고 내용을 정리합니다.

진정한 객체지향 패러다임으로의 전환은 클래스가 아닌 객체에 초점을 맞출 때에만 얻을 수 있다.

객체지향 패러다임의 관점에서 핵심은 역할(role), 책임(responsibility), 협력(collaboration)이다.

가장 중요한 것은 책임이다.

응집도, 결합도에 대해 이해하자.

자주 강조하지만 객체지향 애플리케이션의 가장 중요한 재료는 클래스가 아닌 객체들이 주고받는 메시지다.

현대적인 프로그래밍 언어를 특징 짓는 중요한 두 가지 추상화 메커니즘은 프로시저 추상화(procedure abstraction)와 데이터 추상화(data abstraction)다.

어떤 객체가 협력하기 위해 다른 객체를 필요로 할때 두 객체 사이에 의존성이 존재하게 된다.

소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다.여기서 키워드는 '확장'과 '수정'이다.

중복 코드는 변경을 방해한다. 이것이 중복 코드를 제거해야 하는 가장 큰 이유다.

상속 관계는 is-a 관계라고 부르고 합성 관계는 has-a 관계라고 부른다.상속은 부모 클래스 안에 구현된 코드 자체를 재사용 하지만 합성은 포함되는 객체의 퍼블릭 인터페이스를 재사용한다.

상속의 목적은 코드 재사용이 아니다.

상속의 첫 번째 용도는 타입 계층을 구현하는 것이다.

객체지향 설계의 목표는 적절한 책임을 수행하는 객체들의 협력을 기반으로 결합도가 낮고 재사용 가능한 코드 구조를 창조하는 것이다.
소프트웨어 악취를 제거하는 리팩토링을 읽으며 느낀 특징이 있다. 이 책에서는 '설계 악취(Design Smells)'를 해소하는 리팩토링을 중점으로 구성된 책이다. 여기서 설계 악취란 무엇일까?
기술 부채를 잘 드러내는 핵심 요인이 뭘까? 바로 형편없는 소프트웨어 품질이다.