CS/개발상식

[개발상식] OOP란?

ari0930 2025. 6. 19. 15:02

OOP란?

OOP(Object-Oriented Programming,객체지향 프로그) 은 프로그램을 객체 들의 상호작용으로 구성하는 프로그래밍 패러다임 이다.

현실 세계의 사물이나 개념을 객체로 보고 그 객체를 구현하는 방식

객체란?

속성(데이터) + 동작(메서드)로 구성된 것을 말하면

예를 들어 현실 세계에서 “자동차”라는 객체를 생각해보면:

  • 속성(필드): 색상, 브랜드, 속도, 연료량
  • 동작(메서드): 운전하다, 멈추다, 가속하다
class Car {
    String color;
    int speed;

    void drive() {
        System.out.println("차가 달립니다.");
    }

    void stop() {
        System.out.println("차가 멈춥니다.");
    }
}

특징

  1. 추상화(Abstraction):
    1. 복잡한 내용을 감추고 필요한 정보만 노출
    2. 객체에서 공통된 속성과 행위를 추출하여 구성
  2. 캡슐화(Encapsulation):
    1. 객체가 특정한 목적을 위해 필요한 변수나 메소드를 하나로 묶는것을 의
    2. 데이터 보호를 위해 외부 접근 제한
    3. 변수나 메서드를 사용자가 설정한 특정 메소드로만 접근 가
  3. 상속(Inheritance):
    1. 다른 객체의 속성과 동작을 물려받음
    2. 재사용으로 코드가 줄어듬
    3. 상속함으로써 상위 클래스의 변경이 어려워진다.
  4. 다형성(Polymorphism):
    1. 동일한 메시지로 다양한 동작 수행 가능
    2. 오버라이딩 : 상위 클래스가 가지고 있는 메소드를 하위 클래스에서 재정의
    3. 오버로딩 : 같은 이름의 메서드가 인자의 개수나 자료형에 따라 다른 기능 수

장점

  • 코드 재사용 증가 (상속)
  • 유지보수와 확장성 좋아짐
  • 캡슐화로 인한 보안성 증가
  • 다형성으로 유연한 코드 작성 가능
  • 현실 세계 모델링이 유용하다. (설계 자체가 사람의 사고 방식과 비슷)

단점

  • 초기에 설계 속도가 느리다
  • 처리속도가 느리다 (메서드 호출, 상속 구조등 속도나 메모리 사용량이 증가)
  • 작은 프로그램에서 비효율 적이다.

SOLID 원칙이란?

객체 지향 프로그래밍을 보다 효과적으로 수행하기 위한 지침

객체 지향 프로그래밍의 설계 원칙

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

하나의 클래스는 하나의 책임만 가져야한다.

O(Open-Closed Principle, 개방 폐쇠 원칙)

클래스는 확장에 열려 있고, 변경에는 닫혀 있어야 한다.

L(Liskov Substitution Principle, 리스코프 치환 원칙)

하위(자식) 클래스는 언제나 상위(부모) 클래스를 대체할 수 있어야 한다.

I(Interface Segregation Principle, 인터페이스 분리 원칙)

인터페이스는 사용하지 않는 메소드에 의존하지 않도록 인터페이스를 분리해야한다.

D(Dependency Inversion Principle, 의존 역전 법칙)

추상화에 의존해야하면, 구체화된 클래스에 의존해서는 안된다.

반응형

'CS > 개발상식' 카테고리의 다른 글

CSR vs SSR  (0) 2025.07.08
[개발상식]클린코드란?  (0) 2025.06.15
아키텍처  (0) 2025.05.13
리팩토링  (0) 2025.05.05