OOP 3요소와 5원칙

정안녕·2026년 1월 20일

Metaverse

목록 보기
12/16
post-thumbnail

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

프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 만들고 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법.

[장점]

  • 모듈화, 캡슐화로 인해 유지 보수에 용이.
  • 객체 자체가 하나의 프로그램이기에 재사용에 용이.

[단점]

  • 대부분의 객체 지향 프로그램은 속도가 상대적으로 느려지고 메모리를 많이 사용하는 경향이 있음.
  • 코드를 설계하고 작성하는데 많은 시간이 소요됨.

객체란 무엇인가?

프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간,
값을 저장할 변수와 수행할 메서드를 서로 연관된 것들끼리 묶어서 만들어짐.

<OOP의 4가지 특징>

  • 추상화
  • 캡슐화
  • 상속
  • 다형성

OOP의 3요소

  1. 캡슐화(Encapsulation) : 정보 은닉
  • 프로그램 내에서 같은 기능을 목적으로 작성된 코드를 모아서 다른 곳(클래스)에서 안 보이게 숨기는 것.
  • 클래스 내에서 사용할 속성을 숨기고(Private), 객체가 수행할 기능은 공개(Public)하는 것을 의미.
  1. 상속(Inheritance) : 재사용 + 확장
  • 클래스 사이에 부모와 자식 클래스가 존재할 수 있다는 뜻.
  • 자식 클래스는 상속받은 부모 클래스의 속성 및 기능을 사용할 수 있다.
  1. 다형성(Polymorphism) : 사용 편의
  • 하나의 객체가 여러 가지 형태를 가질 수 있는 것.
    • 오버라이딩(Overriding)
      -> 부모 클래스에 정의되어 있는 메서드를 자식 클래스에서
      재정의하여 사용하는 것.

    • 오버로딩(Overloading)
      -> 같은 이름을 가진 메서드를 인자값의 종류나 개수를 다르게 하여 다른 기능을 구현하도록 정의하는 것.

      OOP의 5원칙 (SOLID)

  • 1. 단일 책임 원칙** (Single Responsibility Principle)
    -> 모든 클래스는 각각 하나의 책임만 가져야 한다. 즉, 특수한 목적을 수행하도록 만든 클래스는 해당 목적 외에 다른 기능을 수행하면 안 된다.

  • 2. 개방 - 폐쇄 원칙 (Open Closed Principle)
    -> 클래스는 확장에 열려있고 수정에는 닫혀있어야 한다. 즉, 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계되어야 한다.

  • 3. 리스코프 치환 원칙 (Liskov Substitution Principle)
    -> 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있어야 한다. 즉, 자식 클래스는 부모 클래스의 책임을 무시하거나 재정의하지 않고 확장만 수행하도록 해야 한다.

  • 4. 인터페이스 분리 원칙 (Interface Segregation Principle)
    -> 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지
    말아야 한다. 하나의 일반적인 인터페이스보다 여러 개의
    구체적인 인터페이스가 낫다.

  • 5. 의존 관계 역전 원칙 (Dependency Inversion Principle)
    -> 의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것, 거의 변화가 없는 것에 의존해야 한다. 즉, 구체적인 클래스보다는 인터페이스나 추상 클래스와 관계를 맺어야 한다.

profile
죽순 디벨롭

0개의 댓글