객체지향 프로그래밍

Min·2024년 7월 14일
0

CPP

목록 보기
1/14
post-thumbnail

OOP(Object Oriented Programing)

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

모든 개념을 객체라는 단위로 정의하고, 객체 간 상호작용을 중심으로 기술하는 프로그래밍 패러다임입니다.


객체 지향의 특징

1. 추상화

  • 여러가지 사물 또는 개념에서 공통적 특성을 추출하여 기능을 간추리는 것을 말합니다.
    추상화를 통해 구현한 객체의 복잡한 구조를 숨기고 단순한 인터페이스를 제공할 수 있습니다.

2. 상속

  • 큰 개념을 더 작은 개념으로 나누거나 구체적으로 기술하기 위한 기능입니다. C++의 class는 상속 기능을 지원합니다.

3. 다형성

  • 하나의 인터페이스를 통해 여러 동작을 수행할 수 있게 합니다. C++에서는 오버로딩, 오버라이딩, 업캐스팅, 다운캐스팅 등이 있습니다.

4. 캡슐화

  • 서로 관계가 있는 함수와 변수들을 묶어 하나의 구조로 만들 수 있습니다. C++에서는 class를 의미합니다. 클래스는 내부 구성요소를 외부로부터 보호하고 은닉하는 기능을 지원합니다. 은닉성이 깨지면 데이터의 유효성 검사를 하기 어렵고, 시스템 결합도가 증가합니다.

객체지향의 설계 원칙(SOLID원칙)

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

  • 구현된 클래스는 하나의 기능만을 가져야 하고, 클래스에 구현된 모든 method와 property는 해당 기능을 수행하는데 그 목적을 두고 있어야 한다는 원칙입니다.

2. Open Closed Principle (개방 폐쇄 원칙)

  • 기능의 확장에 대해서는 개방적이고, 수정에 대해서는 폐쇄적이어야 한다는 원칙입니다. 쉽게 말해서, 새로운 기능을 추가할 때 클래스를 직접 수정해야하는 설계 보다는 파생 클래스를 만들어 확장하거나, 새로운 컴포넌트를 만들어 확장하는 형태로 기능을 추가하는 설계여야 한다는 의미입니다.

3. Liskov Substitution Principle (리스코프 치환 원칙)

  • 파생클래스는 어떠한 경우에도 부모 클래스를 대체할 수 있어야 한다는 원칙입니다. 이를 지키기 않는 상속 관계에서는 파생클래스에서 사용하지 않는 부모의 기능이 발생하게 됩니다.

4. Interface Segregation Principle (인터페이스 분리 원칙)

  • 인터페이스 분리 원칙은 구현할 class에 무의미한 메소드 만들지 않는 것이 좋고, 그렇게 하기 위해 인터페이스를 작은 단위로 분리해야 한다는 원칙입니다. C++에서는 다중상속과 추상 클래스로 이를 구현할 수 있습니다.

5. Dependency Inversion Principle (의존 역전 원칙)

  • 저수준 모듈이 고수준 모듈에 의존해서 구현되면 안된다는 원칙입니다.
profile
티내는 청년

0개의 댓글