객체 지향 프로그래밍

Bzarre·2024년 10월 2일

TIL

목록 보기
7/8

객체 지향 프로그래밍이란 상태(데이터)와 해당 데이터를 조작하는 프로세스(메서드)가 같은 모듈 내부에 배치되는 프로그래밍 방식이다
데이터와 기능이 연결되어 있어 코드의 구조와 동작을 직관적으로 파악 가능하다

객체 지향 프로그래밍의 핵심 원칙

캡슐화(Encapsulation)

  • 중요 정보가 노출되지 않도록 객체 내부의 세부적인 사항을 감추는 것
    JS에서는 변수 앞에 (_)를 붙이는 방식으로 진행

상속(Inheritance)

  • 클래스가 지닌 함수, 변수 및 데이터를 다른 클래스가 물려받는 것
    중복을 제거하고 코드 재사용성을 높이는 등 구조 파악 및 일관성 유지에 용이

추상화(Abstraction)

  • 공통된 부분을 상위 개념으로 새로 정의하는 것
    불필요한 세부사항을 제거하여 공통된 특성 파악 및 구조를 이해하기 쉽게 도움

다형성(Polymorphism)

  • 하나의 객체가 다양한 방식으로 작동하는 것
    동일한 메서드 및 함수를 사용하더라도 클래스에 따라 작동 방식이 상이하여 서비스의 기능을 변경 및 추가에 용이

객체 지향 설계의 5원칙

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

  • 하나의 객체는 단 하나의 책임을 가져야 한다.

클래스 또는 모듈의 변경 요인이 하나만 존재해야한다는 원칙

개방-폐쇄 원칙 (Open-Closed Principle, OCP)

  • 소프트웨어 엔티티 또는 개체(클래스, 모듈, 함수 등)는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.

기존 코드에 영향을 주지 않고 새로운 기능 또는 구성 요소를 추가할 수 있어야한다는 원칙

리스코프 치환 원칙 (Liskov substitution principle, LSP)

  • 어플리케이션에서 객체는 프로그램의 동작에 영향을 주지 않으면서, 하위 타입의 객체로 바꿀 수 있어야 한다.

부모 클래스(Parents)와 자식 클래스(Child)가 있을 경우, 이 두가지의 클래스의 객체를 서로를 바꾸더라도 해당 프로그램에서 잘못된 결과를 도출하지 않아야하는 원칙

인터페이스 분리 원칙 (Interface segregation principle, ISP)

  • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.

필요없는 기능에 영향받지 않도록 인터페이스를 구체적으로 나눠 유지해야한다는 원칙

의존성 역전 원칙 (Dependency Inversion Principle, DIP)

  • 프로그래머는 추상화에 의존해야지, 구체화에 의존하면 안된다.

높은 계층의 모듈(도메인)이 저수준의 모듈(하부구조)에 직접 의존해서는 안된다는 원칙

0개의 댓글