본문 바로가기
강의 실습/실무 자바 개발을 위한 OOP와 핵심 디자인 패턴

객체지향적으로 개발해야하는 이유

by jint 2026. 1. 17.

1. 왜 객체지향적으로 개발해야 하는가?
표면적으로는 많은 기업들과 개발자들이 객체지향적 프로그래밍 방식을 사용하기 때문
왜 많은 기업들과 개발자들은 객체지향적으로 개발할까? 강의 전반에 걸쳐 알아간다.

Q. 객체지향 프로그래밍이 뭔가요?
Q. 왜 객체지향적으로 개발해야 하나요?

답변이 쉽지 않다.
붕어빵과 붕어빵 틀 비유는 잘 못된 것
4대 특성 캡슐화, 상속, 추상화, 다형성과 SOLID 원칙은 괜찮지만, 키워드 외운 내용으로는 객체지향에 대해 이해했다고 보기 어려움

어떤 답변이 좋을까?
개발 과정에서 자주 발생하는 문제를 객체지향 프로그래밍 방식을 도입하여 해결한 예시
(결국 개발 과정에서 자주 발생하는 문제를 해결하기 위한 것)

1) 절차지향 프로그래밍이 주류일 때 문제점
#1 데이터와 그 데이터에 접근할 수 있는 함수 사이에 서로 연관 관계가 낮음
문법적으로 하나의 묶음처럼 다뤄지지 않음

캡슐화 예시)

class Product {
    // 접근제어자 private
    private String name;
    private Integer price;
    private Integer amount;

    // 접근제어자 public
    public Integer getTotalAmount() {
        return this.price * this.amount;
    }
}

class SomeClass {
    public void someMethod(Product product) {
        Integer totalAmount = product.getTotalAmount();

        // 어떤 로직들
    }

    public void anotherMethod(Product product) {
        // 어떤 로직들

        Integer totalAmount = product.getTotalAmount(); 

        // 어떤 로직들
    }
}


캡슐화 : Product 클래스는 데이터와 함수가 밀접하게 연관, 오직 메서드를 통해서만 필드 사용 가능
-> 중복 제거
-> 데이터와 메서드를 강하게 묵음 : 응집력이 높다

#2 테스트 용이성
WithInterfaceExampleMain 클래스에서는 스프링 프레임워크같은 OOP 프레임워크에서 의존성 주입 해줌

즉 핵심은, WithoutInterfaceExampleMain 클래스에서 호출하는 Client 클래스는 사용자가 직접 클래스를 바꿨지만,
WithInterfaceExampleMain 클래스에서 호출하는 Client 클래스는 인터페이스 사용으로 소스를 수정할 필요 없음

-> 의존주입 패턴
인터페이스를 활용해 외부로부터 구현체를 주입받는 방식으로, 어떠한 구현체에게 의존되지 않음

스프링 프레임워크를 사용한다고 객체지향적 프로그래밍 장점을 누릴 수 있는게 아니다.
객체지향적 코드를 작성한 상태에서 스프링 프레임워크같은 OOP 프레임워크를 활용했을 때, 객체지향적인 프로그래밍의 장점 누릴 수 있다.

2) 객체지향적으로 개발해야 하는 이유
객체지향 프로그래밍 : 절차지향적인 개발 방법에서 발생하던 여러가지 문제점들을 해결하기 위해 등장한 패러다임
문제점 개선 예시 - 캡슐화, 의존주입 패턴

3) 당부드리고 싶은 것
객체지향적인 코드가 항상 정답은 아니다.
프로그래밍의 재미를 붙이는게 중요


참고링크 : https://school.programmers.co.kr/learn/courses/17778/17778-%EC%8B%A4%EB%AC%B4-%EC%9E%90%EB%B0%94-%EA%B0%9C%EB%B0%9C%EC%9D%84-%EC%9C%84%ED%95%9C-oop%EC%99%80-%ED%95%B5%EC%8B%AC-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4

 

실무 자바 개발을 위한 OOP와 핵심 디자인 패턴

@media (max-width: 991px) { .content { width: 100%; } } #landingPage { width: 100%; max-width: 848px; padding: 0 20px; letter-spacing: -0.02em; overflow-wrap: break-word; word-break: keep-all; word-wrap: break-word; } @media (max-width: 991px) {

school.programmers.co.kr

'강의 실습 > 실무 자바 개발을 위한 OOP와 핵심 디자인 패턴' 카테고리의 다른 글

Object 클래스  (1) 2026.01.24
예외  (0) 2026.01.22
Enum  (0) 2026.01.21
추상 클래스와 인터페이스  (0) 2026.01.20
클래스와 상속  (1) 2026.01.19

댓글