개발상식
개발상식 | 객체지향 프로그래밍이란
제로콜라먹는사람
2021. 11. 8. 03:11
반응형
OOP (Object Oriented Programming) : 객체지향 프로그래밍
객체지향 프로그래밍이란 컴퓨터가 사고하는 방식으로 프로그래밍을 진행하는 것이 아니라 인간 중심적 프로그래밍 패러다임이라고 할 수 있다.
현실에 존재하는 사물들을 객체 라고 이야기 하고 그 객체로부터 필요한 특징들을 가져와서 프로그래밍 하는 것이다. 이것을 추상화 라고한다.
객체 지향의 가장 기본은 객체가 내부적으로 어떤 데이터를 갖고 있는지가 아닌 어떤 기능을 제공하는 지 이다.
이러한 기능들은 오퍼레이션(operation) 이라고 불리며 즉, 객체는 오퍼레이션의 집합체 이다.
메세지
오퍼레이션(기능)의 집합은 인터페이스이다. 즈 오퍼레이션의 실행을 요청하는 것을 메시지를 보낸다라고 표현한다.
이러한 메세지는 OOP의 단점이 될 수 있다.
OOP의 장점
- 이미 작성한 코드에 대한 재사용성이 높다. 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있으며 그 신뢰성을 확보할 수 있다.
- 라이브러리를 각종 예외상황에 맞게 설계를 해두면 사소한 실수를 하더라도 그 에러를 컴파일 단계에서 잡아낼 수 있음으로 버그 발생이 줄어든다.
- 내부적으로 어떻게 작동하는지 자세히 모르더라도 그 로직들을 쉽게 사용할 수 있음으로 생산성이 높아진다..( 양날의 검인 것 같다.)
- 객체 단위로 코드가 나누어 지기 때문에 디버깅이 쉽고 유지보수에 용이하다.
OOP의 단점
- 객체간의 정보 교환이 모두 메시지 교환을 통해 일어나므로 실행 시스템에 많은 overhead가 발생한다. (하드웨어의 발전으로 많이 보완되어짐)
- 객체는 상태를 갖는다. 변수가 존재하고 이 변수를 통해 객체가 예측할 수 없는 상태를 갖게 되며 애플리케이션 내부에서 버그를 발생시킨다.
이러한 이유들 떄문에 함수형 프로그래밍 패러다임이 주목받고 있다.
객체 지향적 설계 원칙
- SRP(Single Responsibility Principle): 단일 책임 원칙
클래스는 단 하나의 책임만 가져야하며 클래스를 변경하는 이유 또한 단 하나여야 한다.
즉 하나의 객체는 하나의 기능만을 수행하여야 한다. 기능이 많아지게되면 데이터도 많아지고 이를 공유하는 과정에서 버그가 발생할 숭 있다. - OCP(Open-Closed Priciple) 개방-폐쇄 원칙
열려있는 확장과 닫혀있는 변경의 특성을 가져야 한다. - LSP(Liskov Substitution Principle): 리스코프 치환 원칙
상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다. - ISP(Interface Segregation Priciple): 인터페이스 분리 원칙
인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야 한다 - DIP(Dependency inversion Principle): 의존 역전 원칙
고수준의 모듈은 저수준 모듈의 구현에 의존해서는 안된다.
즉 객체끼리 서로 의존을 한다는 것은 객체에 의해 다른객체가 생성되거나 변경이 될 경우가 포함이 되며 이를 순환의존 이라고 한다.
객체지향 설계 과정
- 제공해야할 기능을 탐색, 그 기능을 알맞은 객체에 할당
- 1-1. 기능구현에 필요한 데이터를 객체에 추가
1-2. 객체내의 데이터를 이용하는 기능 추가
1-3 기능을 캡슐화하여 구현 - 객체간의 메시지 전달 방식을 결정
출처
반응형