객체지향 프로그래밍(OOP)에 대해 설명해 주세요. 알고있는 원칙이나 키워드를 언급해주세요
객체지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그램을 객체들의 모임으로 바라보고, 객체 간의 상호작용을 통해 프로그래밍하는 방식입니다.
OOP의 핵심 특징
- 캡슐화(Encapsulation)
- 데이터와 메서드를 하나의 클래스 안에 묶어 캡슐화하고, 외부에서의 접근을 제한합니다. 이는 데이터를 보호하고, 더 나은 모듈화를 가능하게 하여 유지보수성을 향상시키는데 도움을 줍니다.
- 상속(Inheritance)
- 부모 클래스에서 정의된 속성과 메서드를 자식 클래스에서 상속받아 재사용할 수 있습니다. 이는 코드의 중복을 제거하고, 코드 재사용성을 높이는데 도움을 줍니다.
- 다형성(Polymorphism)
- 같은 이름의 메서드를 여러 객체에서 다르게 구현하거나, 객체의 타입에 따라 다르게 동작하도록 만들 수 있습니다. 이는 유연하고 확장성 있는 코드 작성을 가능하게 하여, 코드의 재사용성과 확장성을 높이는데 도움을 줍니다.
OOP에서 사용되는 다른 개념과 원칙
- 추상화(Abstraction): 객체의 복잡한 내부 구현을 숨기고, 핵심적인 특징만을 추출하여 표현하는 것입니다. 이는 개발자들이 핵심 개념에 집중하며, 복잡성을 낮추어 코드의 가독성을 향상시키는 데 도움을 줍니다.
- 인터페이스(Interface): 객체가 제공하는 메서드의 집합으로, 객체 간의 상호작용을 규정합니다. 이는 객체 간의 결합도를 낮추어 유연성을 높이는 데 도움을 줍니다.
- 삼각측량의 원리(Dependency Inversion Principle, DIP): 추상화와 인터페이스를 통해 객체 간의 결합도를 낮추어 유연성을 높이는 것을 말합니다. 이는 객체지향의 핵심 개념 중 하나로, 좋은 객체지향 설계의 핵심 원리 중 하나입니다.
- SOLID 원칙: 객체지향 설계에서의 좋은 원칙과 관행을 정리한 것
- SRP(Single Responsibility Principle) : 한 클래스는 하나의 책임만 가져야 한다.
- OCP(Open-Closed Principle) : 확장에는 열려있고, 수정에는 닫혀 있어야 한다.
- LSP(Liskov Substitution Principle) : 서브 타입은 언제나 자신의 기반 타입(base type)으로 교체할 수 있어야 한다.
- ISP(Interface Segregation Principle) : 클라이언트는 자신이 사용하지 않는 메서드에 의존 관계를 맺으면 안 된다.
- DIP(Dependency Inversion Principle) : 추상화는 구체적인 사항에 의존해서는 안 된다. 구체적인 사항은 추상화에 의존해야 한다.
REST API란 무엇인가요? 프로젝트에 REST API를 사용한 이유는(사용했을 시 추가 답변), REST API 말고 다른 비교할만한 것을 알고 있나요?
REST API란 Representational State Transfer API의 약자로, 웹상의 자원을 url로 구분하여 HTTP 프로토콜을 통해 전송하는 방식입니다. REST API는 일반적으로 네트워크를 통해 분산된 시스템 간에 데이터를 주고받을 때 사용됩니다. REST API는 클라이언트와 서버 사이의 인터페이스로써, 서버는 RESTful 방식으로 설계되어 있고 클라이언트는 HTTP 요청을 통해 자원에 접근하고 요청에 대한 응답을 받는 방식으로 동작합니다.
REST API 특징
- 클라이언트/서버 구조
- 무상태(Stateless)성
- 캐시 가능(Cacheable)
- 계층형 구조(Layered System)
REST API를 사용하는 이유
- HTTP 프로토콜을 기반으로 하기 때문에 네트워크 상에서 쉽게 사용할 수 있습니다.
- RESTful API는 URL을 통해 리소스에 대한 요청을 쉽게 이해할 수 있습니다.
- RESTful API는 다양한 클라이언트에서 호환성이 높습니다.
- RESTful API는 간결하고 가독성이 좋습니다.
다른 형식의 API
SOAP(Simple Object Access Protocol)
- SOAP은 HTTP, SMTP, FTP 등 다양한 프로토콜에서 사용 가능한 XML 기반의 메시지 교환 프로토콜입니다. REST API와 마찬가지로 다양한 클라이언트와 서버 간의 통신이 가능하지만, SOAP는 메시지의 복잡성과 오버헤드가 크다는 단점이 있습니다. 따라서 최근에는 REST API가 더욱 보편화되고 있습니다.
REST API와 다른 API를 비교할 때는 프로젝트의 요구사항과 환경에 따라 선택하면 됩니다.
REST는 HTTP 프로토콜의 장점을 최대한 활용하여 사용하기 때문에 다양한 클라이언트로부터 요청이 들어오더라도 쉽게 대응이 가능하며, 각 요청마다의 상태 정보를 유지하지 않기 때문에 서버의 부하가 줄어듭니다. 따라서 프로젝트에서 REST API를 사용하면 이점이 많기 때문에 이번 프로젝트에서는 선택하였습니다.
'스파르타 기술면접' 카테고리의 다른 글
| Filter / Interceptor / AOP (0) | 2023.04.11 |
|---|---|
| DI의 방식 중 필드 vs 생성자 주입 방식 (0) | 2023.04.11 |
| DI 방식, FIlter / Interceptor / AOP (0) | 2023.03.30 |
| MSA , 제네릭(3일차) (0) | 2023.03.30 |
| DI , DB에서의 인덱스 사용(2일차) (0) | 2023.03.30 |