객체 지향 프로그래밍

임지원·2024년 4월 15일

객체 지향 프로그래밍(Object-Oriented Programming, OOP)

객체 지향 프로그래밍은 프로그램을 '객체'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 프로그래밍 방식입니다.

한 줄 정리

기능단위로 분리되어있어 블럭과 같아 새로운 기능을 만들 때는 새로운 블럭을 끼우면 되고, 수정을 할 때는 그 블럭만 바꾸면 된다.

장점

  • 재사용성이 높다.
  • 생산성이 좋다.
  • 자연스러운 구조.
  • 유지보수의 우수성.

핵심 요소

  1. 캡슐화(Encapsulation) = 정보 은닉
    • 같은 기능을 목적으로 하는 코드를 모아 다른 곳에 안보이게 숨김.
    • 내부 사용: private
    • 객체가 수행할 공개적 기능: public
  2. 상속(Inheritance) = 재사용 + 확장
    • 자식 클래스는 부모 클래스의 속성, 기능 사용 가능.
  3. 다형성(Polymorphism) = 사용 편의
    • 하나의 객체가 여러 형태를 가질 수 있음.
    • 오버라이딩: 자식에서 재정의하여 사용.
    • 오버로딩: 같은 이름의 다양한 기능(인자값의 종류, 개수 등이 다름).

SOLID 원칙

  1. 단일 책임 원칙 (Single Responsibility Principle, SRP)

    • 클래스는 단 하나의 책임만 가져야 한다.
    • 클래스는 변경의 이유가 하나여야 한다.
  2. 개방-폐쇄 원칙 (Open-Closed Principle, OCP)

    • 확장에는 열려 있어야 하고 변경에는 닫혀 있어야 한다.
    • 기존의 코드를 수정하지 않고도 새로운 기능을 추가할 수 있어야 한다.
  3. 리스코프 치환 원칙 (Liskov Substitution Principle, LSP)

    • 자식 클래스는 언제나 부모 클래스로 교체할 수 있어야 한다.
  4. 인터페이스 분리 원칙 (Interface Segregation Principle, ISP)

    • 클라이언트는 자신이 사용하지 않는 인터페이스에 의존하지 않아야 한다.
    • 클라이언트가 자신이 필요로 하는 기능만 있는 인터페이스를 사용할 수 있도록 인터페이스를 분리해야 한다.
  5. 의존 역전 원칙 (Dependency Inversion Principle, DIP)

    • 고수준 모듈은 저수준 모듈에 의존해서는 안 되며, 모두 추상화에 의존해야 한다.
    • 사용자가 상속관계로 이루어진 모듈을 사용할 때는 직접 인스턴스를 사용하지 않고 추상화에 의존해야 한다.
profile
백엔드 새싹

0개의 댓글