객체 지향 프로그래밍 패러다임을 살펴보면, 중심은 컴퓨터에 있었다. 컴퓨터가 사고하는데 프로그래밈을 하는것이다. 하지만 객체 지향 프로그래밍이란 인간 중심적 프로그래밍 패러다임이라고 볼수 있다. 즉, 현실 세계에 존재하는 것을 프로그래밍으로 옮겨와 프로그래밍을 하는것을 말한다.
현실 세계의 사물들을 객체라고 보고 그 객체로 부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 하는 것이다. 이것을 추상화 라고 한다.
객체 지향 프로그래밍으로 코드를 작성하면 코드에 대한 재사용성이높다. 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있으며, 또한 예외 상황에 맞게 라이브러리를 만들어 두면 개발자가 실수를 하더라도 컴파일중 에러를 잡아낼수 있어서 버그의 발생률도 줄어든다.
또한 내부적으로 어떻게 동작하는지 몰라도 개발자는 라이브러리가 제공하는 기능들을 사용할 수 있기 때문에 생산성이 높아지게 된다. 객체 단위로 코드가 나눠져 작성되기 때문에 디버깅이 쉽고 유지보수에 용이하다. 또한 데이터 모델링을 할 때 객체와 매핑하는 것이 수월하기 때문에 요구사항을 보다 명확하게 파악하여 프로그래밍 할 수 있다.
객체 간의 정보 교환이 모두 메시지 교환을 통해 일어나므로 실행 시스템에 많은 overhead 가 발생하게 된다. 하지만 이것은 하드웨어의 발전으로 많은 부분 보완되었다. 객체 지향 프로그래밍의 치명적인 단점은 함수형 프로그래밍 패러다임의 등장 배경을 통해서 알 수 있다. 바로 객체가 상태를 갖는다는 것이다. 변수가 존재하고 이 변수를 통해 객체가 예측할 수 없는 상태를 갖게 되어 애플리케이션 내부에서 버그를 발생시킨다는 것이다. 이러한 이유로 함수형 패러다임이 주목받고 있다.
REST
란, REpresentational State Transfer 의 약자이다. 여기에 ~ful 이라는 형용사형 어미를 붙여 ~한 API 라는 표현으로 사용된다. 즉, REST 의 기본 원칙을 성실히 지킨 서비스 디자인은 'RESTful'하다라고 표현할 수 있다.
REST
가 디자인 패턴이다, 아키텍처다 많은 이야기가 존재하는데, 하나의 아키텍처로 볼 수 있다. 좀 더 정확한 표현으로 말하자면, REST 는 Resource Oriented Architecture
이다. API 설계의 중심에 자원(Resource)이 있고 HTTP Method 를 통해 자원을 처리하도록 설계하는 것이다.
URl
로 표현되는데 리소스가 가리키는 것은 명사
로 표현되어야 한다.HTTP Method
로 표현하고, GET(조회)
, POST(생성)
, PUT(기존 entity 전체 수정)
, PATCH(기존 entity 일부 수정)
, DELETE(삭제)
을 분명한 목적으로 사용한다.출처 : https://github.com/JaeYeopHan/Interview_Question_for_Beginner