매일 매일, 차곡 차곡 쌓기



완벽하지 않은 것을 두려워 말며,
완성도를 높히는데 집중하자.

프로그래밍 패러다임

객체 지향 프로그래밍

blockbuddy93 2023. 11. 29. 02:41

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

현실 세계의 사물을 갤체라고 했을 때, 그 객체로 부터 애플리케이션 개발에 필요한 특징들을 추출하여 프로그래밍하는 것입니다. 이를 통해 재사용성이 좋고 유지보수가 용이한 프로그램을 만들 수 있습니다.

 

객체지향의 특징

1. 추상화

추상화는 사물의 공통적인 속성과 기능을 추출하여 추상 클래스로 정의하는 개념입니다. 실제적인 구현은 구현체에 맡기면서 상속된 클래스는 일관된 기능을 가지고, 확장과 유지보수가 용이한 객체를 만들 수 있습니다.

2. 상속

상속은 상위 클래스를 기반으로 새로운 하위 클래스를 만드는 개념입니다. 상속을 통해 클래스간 계층 구조를 형성하고, 상위 클래스의 메서드를 사용할 수 있기 때문에 코드 재사용성이 높아집니다. 하위 클래스는 상위 클래스의 메서드를 구현하거나, 하위 클래스에서 추가적인 특성을 확장할 수 있습니다.

3. 다형성

다형성은 상속을 통해 구현되며 객체의 속성이나 기능이 상황에 따라 여러 가지 형태와 동작을 가질 수 있는 개념입니다.

4. 캡슐화

캡슐화는 클래스 안에 연관된 속성과 기능을 하나의 캡슐로 묶어 외부로부터 보호하는 개념입니다. 외부로부터 클래스에 정의된 속성과 기능을 보호하고, 필요한 부분만 외부로 노출될 수 있도록 하여 각 객체 고유의 독립성과 책임영역을 지키고자 하는 목적을 가졌습니다.

 

객체지향 설계 방법 SOLID

  1. 단일 책임 원칙 (Single Responsibility): 클래스는 하나의 책임(역할 또는 관심사)를 가져야 합니다.
  2. 개방-폐쇄 원칙 (Open/Close): 소프트웨어 요소는 확장에는 열려 있고 변경에는 닫혀 있어야 합니다.
  3. 리스코프 치환 원칙 (Liskov Substitution): 하위 타입은 상위 타입을 대체할 수 있어야 합니다. 즉 클라이언트는 상위타입이 하위타입으로 변경되어도, 차이점을 인식하지 못한 채 상위타입 인터페이스를 통해 서브클래스를 사용할 수 있어야 합니다.
  4. 인터페이스 분리 원칙 (Interface Segregation): 클라이언트가 사용하지 않는 메서드에 의존하지 않아야 합니다.
  5. 의존 역전 원칙 (Dependency Inversion): 고수준 모듈은 저수준 모듈에 의존해서는 안 되며, 모두 추상화에 의존해야 합니다.

 

참고 자료

'프로그래밍 패러다임' 카테고리의 다른 글

함수형 프로그래밍  (1) 2023.12.03