본문 바로가기

Coding/2026년 GPT가 추천해준 커리큘럼

1. OOP (Object-Oriented Programming)

OOP란 무엇인가?

OOP는 객체 지향 프로그래밍이다. 개발자라면, 특히나 자바를 공부하는 개발자라면 항상 듣는 말이다. 하지만 실제로는 무엇을 의미할까? 

 

“객체를 중심으로 프로그램을 설계하는 사고 방식” 

 

다시 말하자면 역할을 나눠서 각자 책임을 지게 하는 방식이라고 이해하면 좋을 것 같다. 회사를 예로 들어보자.

인사팀은 채용을 담당하고, 회계팀은 돈을 관리한다. 개발팀은 제품 개발을 한다. 이렇게 각자의 역할을 나눠서 하는거라고 보면 된다. 만약 사장 혼자 다 한다면? 회사는 안돌아갈 것이다.

 

객체는 이게 핵심이다.

 - 상태를 가진다

 - 행동을 가진다

 - 서로 메시지를 주고 받는다

 

OOP는 이론적으로 캡슐화 / 추상화 / 상속 / 다형성 이렇게 4가지가 핵심이다. 

 

1. 캡슐화

 - 내부 구현은 숨기고 필요한 기능만 밖에 보여주는 것

 

내가 만약 어떤 특정 라이브러리를 만들어서 메서드를 제공했을때 외부(Ex, 사용자)가 사용은 할 수 있지만 건드리지 못하게 만드는걸 캡슐화라고 보면 된다.

 

* DTO에 있는 getter/setter는 캡슐화일까? 문법적으로는 맞음. 하지만 객체가 상태를 통제하지 못함. 껍데기 캡슐화.

 

2. 추상화

 - 핵심만 남기고 복잡한 건 숨기는 것

 

사용자 입장에서는 내가 만든 라이브러리 내 메서드를 사용할때 굳이 내부 코드를 몰라도 되고 해당 메서드를 사용하게 되는데 그 메서드 역할에 맞는 개념을 추상화라고 한다.

(Ex, 결제한다 -> void pay()를 인터페이스에서 선언)

 

* 추상화를 하고 (핵심 기능만 설계) 그걸 캡슐화로 보호한다 (구현을 숨긴다) 즉, 추상화는 무엇을 보여줄지 결정하고 캡슐화는 어떻게 숨길지 구현.

 

3. 상속

 - 기존 클래스를 확장해서 재사용하는 것

 - 부모의 특성을 물려받아 새로운 클래스를 만드는 것

 

Ex) Dog는 Animal을 상속받는다. Dog는 Animal이다(is-a 관계)

 

상속의 장점

 - 공통 코드 재사용

 - 논리적인 계층 구조 표현

 - 다형성과 함께 사용할 때 강력함

 

상속의 단점

 - 부모 클래스 수정 -> 자식들 전부 영향

 - 계층이 깊어질수록 구조가 복잡해짐

 - 유연하지 않음 (런타임에 변경 어려움)

 - 다중 상속 문제 (언어마다 제한)

이러한 이유들로 대규모 시스템, 유지보수 중심 개발에서는 상속이 오히려 독이 되는 경우가 많았음.

 

"Favor Composition Over Inheritance"

즉,  "is-a"보다는 "has-a"를 사용하자.

 

* 그래서 요즘에는 상속보다 합성(Composition)을 더 선호

 

4. 다형성

 - 같은 메시지, 다른 동작

interface Payment {
   void pay();
}

class CardPayment implements Payment {
   public void pay() {
      System.out.println("카드 결제");
   }
}

class CashPayment implements Payment {
   public void pay() {
      System.out.println("현금 결제");
   }
}
 

다형성이 중요한 이유

 - 코드가 유연해짐

 - 새로운 기능을 추가할 때 기존 코드를 수정하지 않아도 됨

 - 확장에 열려 있고 변경에는 닫혀 있는 구조를 만들 수 있다 (OCP)

 

* 상속은 기능을 물려받는 것이고 다형성은 같은 타입으로 다르게 행동하는 것

* 상속 없이도 다형성 가능

 

getter/setter의 역할

 - 값 조회

 - 직렬화 (JSON)
 - ORM 매핑

 - 데이터 전달

 

도메인

 - 프로그램이 해결하려는 "업무 세계"

 

도메인 객체

 - 실제 업무 개념을 표현한 객체 (User, Order, Accout, Payment 등)

 

DTO

 - 데이터를 전달하기 위한 객체 (API 요청, 응답, 화면 전달, 외부 시스템 통신), 즉 업무 로직 없음

 

'Coding > 2026년 GPT가 추천해준 커리큘럼' 카테고리의 다른 글

GPT가 추천해준 커리큘럼  (0) 2026.02.13