객체지향 프로그래밍은
객체의 상태와 동작을 코드화 시키고, 코드의 재사용성과 중복 제거가 가장 큰 목적인 프로그래밍입니다.
객체지향의 특징으로는
- 추상화
- 객체의 속성과 기능을 추출하는 것입니다. 객체들을 프로그램으로 만들기 위해 공통 특성을 파악하고 필요없는 특성을 제거하는 과정입니다.
- 캡슐화
- 클래스 내부 변수와 메소드를 하나로 패키징하는 것입니다.
정보 은닉 : 객체의 내부 구현을 숨김으로써 객체가 반드시 정해진 메소드에서 상호작용을 하도록 유도하는 것.
- 상속
- 상속 관계에 있는 두 클래스에 대해, 상위 클래스가 하위 클래스에게 속성을 물려주는 것입니다.
- 다형성
- 상속과 연관있는 개념으로 상속을 받은 객체가 상속으로 받은 기능을 오버라이딩 또는 오버로딩을 통해 기능을 확장하거나 재구성하여 코드의 재사용과 유지보수가 용이하도록 도와주는 개념입니다.
오버로딩 : 메소드의 이름은 같고 매개변수의 개수나 타입이 다른 함수를 정의하는 것입니다.
오버라이딩 : 상위 클래스의 메소드를 하위 클래스가 재정의 하는 것을 의미합니다.이 있습니다.
객체지향의 SOLID원칙으로는
- 단일 책임 원칙
- 하나의 객체는 반드시 하나의 동작만의 책임을 가지고 있어야 합니다라는 원칙입니다.
- 개방 폐쇄 원칙
- 객체의 확장은 개방적으로, 객체의 수정은 폐쇄적으로 대하는 원칙입니다.
- 리스코프 치환 원칙
- 부모 객체와 이를 상속한 자식 객체가 있을 때 부모 객체를 호출하는 동작에서 자식 객체가 부모 객체를 완전히 대체할 수 있다.
- 인터페이스 분리 원칙
- 객체는 자신이 호출하지 않는 메소드에 의존하지 않아야한다는 원칙입니다.
- 의존관계 역전 원칙
- 가급적 객체의 상속은 인터페이스를 통해 이루어져야 한다라는 원칙입니다. 의존성 주입은 이 원칙을 따르는 방법 중 하나입니다.
DI는 Dependency Injection의 약자로 뜻 그대로 의존성을 주입해주는 것이다. DI를 통하여 코드를 단순화하고, 재사용성이 높고, 결합도를 낮출 수 있습니다. DI의 방법으로는 필드 주입, 생성자 주입, Setter 주입이 있습니다.
이 있습니다.
REST API는 URI를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE, PATCH 등)를 통해 해당 자원(HTTP URI)에 대한 행위(HTTP Method)를 적용하는 것으로 이런 REST원리를 따르는 API입니다.
프로젝트에 REST API를 사용한 이유는
프로젝트가 서버- 클라이언트 구조로 기획을 하였고, 팀원 간에도 협업 시 용이하다고 판단해서 사용하였습니다.
REST의 5가지 특징은
- 서버-클라이언트 구조
- 자원이 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트가 된다. 서버는 API를 제공하고 비즈니스 로직 처리 및 저장을 책임집니다.
- 무상태성
- HTTP 프로토콜은 기본적으로 무상태입니다. REST 역시 HTTP를 기본으로 하기 때문에 무상태이다. 여기서 무상태란 클라이언트의 상태를 서버에 저장하지 않는다는 뜻입니다.
HTTP 프로토콜 : HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜.
- 캐시 처리 가능
- HTTP의 캐싱 기능을 적용할 수 있습니다. 즉, 대량의 요청을 효율적으로 처리하기 위한 캐시를 사용할 수 있다. 캐시 사용을 통해 응답 시간이 빨라지고 성능, 서버의 자원 이용률을 향상시킬 수 있다.
캐시 : 데이터나 값을 미리 복사해 놓는 임시 장소.
- 계층화
- 클라이언트는 REST API 서버만 호출한다. REST 서버는 다중 계층으로 구성될 수 있습니다.
- 인터페이스 일관성
- URI로 지정한 자원에 대한 조작을 통일되고 한정적인 인터페이스로 수행합니다.
URI : 인터넷에 있는 자원을 나타내는 유일한 주소.
이 있습니다.
REST API 외에도 비교 가능한 API로는 SOAP API가 있습니다.
SOAP API는 XML 기반으로 데이터 포맷을 정의하고, WSDL를 이용하여 서비스를 기술합니다. REST API는 경량화되어 있고, HTTP 프로토콜을 이용하여 간편하게 사용할 수 있으며, JSON, XML 등 다양한 데이터 포맷을 지원합니다. 반면 SOAP API는 보안성이 높고, 네트워크에 대한 오버헤드가 적지만 구현이 복잡하고, 성능이 떨어질 수 있습니다.
XML : 웹 사이트, 데이터베이스 및 타사 애플리케이션과 같은 컴퓨터 시스템 간의 정보 교환을 지원.
JSON : 카-값 쌍으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷.
오버헤드 : 처리 시간 및 메모리 등이 추가적으로 사용되는 현상