2026-02-18

객체지향 프로그래밍(OOP)

객체지향 프로그래밍(OOP)이란?

  • 현실 세계의 개념을 객체(Object) 단위로 모델링하여 프로그램을 구성하는 방식
  • 프로그래밍에서 필요한 데이터를 추상화시켜서 상태(속성, 어트리뷰트)와 행위(메서드)를 가진 객체로 만들고, 그 객체간의 상호 작용을 통해 로직을 구성하는 방법

객체지향 4대 특징 - 캡슐화 (Encapsulation)

데이터와 메서드를 하나로 묶고, 외부에서 직접 접근하지 못하도록 보호하는 것

  • 접근제어자 (private, protected, public)
  • 정보 은닉 (Information Hiding)

왜 중요한가?

  • 객체 내부 구현을 숨겨 변경에 유연함
  • 외부에서 잘못된 값 변경 방지
  • 유지보수성 향상
  • 객체의 무결성 보장

한줄 요약

캡슐화는 객체의 상태를 외부에서 직접 수정하지 못하도록 보호하여

객체의 무결성을 보장하고, 변경에 유연한 구조를 만들기 위한 개념입니다.

객체지향 4대 특징 - 추상화 (Abstraction)

불필요한 세부사항은 숨기고 핵심 기능만 노출하는 것

  • 인터페이스
  • 추상 클래스

왜 필요한가?

  • 복잡도 감소
  • 구현체 교체 용이
  • 확장성 증가

예시

interface Payment {
    void pay();
}

카카오페이, 카드결제, 네이버페이 등 구현체는 달라도 외부에서는 pay()만 사용

요약

추상화는 공통 기능을 인터페이스로 정의하여

구현을 분리함으로써 확장성과 유연성을 높이는 설계 방식입니다.

객체지향 4대 특징 - 상속 (Inheritance)

기존 클래스를 재사용하여 새로운 클래스를 만드는 것

장점

  • 코드 재사용
  • 중복 제거

단점

  • 결합도 증가
  • 잘못 사용하면 유지보수 어려움
  • 상속보다 합성(Composition)을 권장하는 경우 많음

요약

상속은 코드 재사용의 장점이 있지만,

강한 결합을 만들 수 있어 최근에는 합성을 더 선호합니다.

객체지향 4대 특징 - 다형성 (Polymorphism)

하나의 인터페이스로 여러 객체를 다룰 수 있는 성질

  • 오버로딩 (컴파일 타임 다형성)
  • 오버라이딩 (런타임 다형성)

핵심

  • 부모 타입으로 자식 객체 참조 가능
  • 동적 바인딩

예시

Payment payment = new KakaoPay();
payment.pay();

요약

다형성은 동일한 인터페이스를 통해 서로 다른 구현체를

유연하게 교체할 수 있도록 하는 객체지향의 핵심 개념입니다.

객체지향 장점/목적

  • 유지보수성 향상
  • 확장성 증가
  • 재사용성 증가
  • 변경에 강한 구조 설계

↔ 단점

  • 처리 속도가 상대적으로 느림
  • 객체가 많으면 용량 커짐
  • 설계 시 많은 노력과 시간 필요

객체지향 설계 원칙 (SOLID)

  • 단일 책임 원칙(Single Responsibility Principle): 한 클래스는 하나의 책임만을 가져야 한다.
  • 개방-폐쇄 원칙(Open/Closed Principle): 클래스는 확장에 대해서는 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다. (클래스를 수정하려면 상속/확장하여 수정)
  • 리스코프 치환 원칙(Liskov Substitution Principle): 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상 동작 해야 한다. (자식 클래스 사용중일때 부모 클래스로 치환해도 문제없어야함)
  • I: 인터페이스 분리 원칙(Interface Segregation Principle): 클라이언트는 자신이 사용하지 않는 메서드에 의존하지 않아야 한다.
  • D: 의존성 역전 원칙(Dependency Inversion Principle): 상위 클래스가 하위 클래스에 의존하면 안된다.

참고자료

  • https://velog.io/@wjj329/24.04.02-%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91-20.-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EC%A7%80-%EC%84%A4%EB%AA%85%ED%95%B4%EC%A3%BC%EC%84%B8%EC%9A%94
  • https://mjoo1106.tistory.com/23
  • https://jaehyuuk.tistory.com/197
  • https://www.codestates.com/blog/content/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%ED%8A%B9%EC%A7%95
  • https://dochistory.tistory.com/154

results matching ""

    No results matching ""