본문 바로가기

기술면접 대비

객체지향 프로그래밍(OOP), REST API

  • 객체지향 프로그래밍(OOP)에 대해 설명해주세요. 알고있는 원칙이나 키워드를 언급해주세요

객체지향 프로그래밍에서는 데이터와 함수를 하나의 개념인 "객체"로 묶어서 관리합니다. 이러한 객체들은 상속, 다형성, 캡슐화, 추상화 라는 개념을 통해 관계를 형성하며, 이를 통해 유지보수와 확장성이 좋은 프로그램을 만들 수 있습니다.

 

1.캡슐화

캡슐화는 하나의 객체에 대해 그 객체가 특정한 목적을 위한 필요한 변수나 메소드를 하나로 묶는 것을 의미합니다.

캡슐화를 하는 목적은 정보은닉에 있습니다.

자바에서는 필드를 private로 선언해서 정보 은닉을 시킬 수 있는데, 어떤 객체를 이용할때, 그 객체의 내부 정보를 알 필요도 없거니와,  객체의 정보를 함부로 변경하는 것을 막기위해 정보은닉을 할 수 있습니다.

때문에 감추고, 보호하고자 하는 정보는 private, 사용하기 위해 필요한 정보는 public으로 선언하여 이용할 수 있습니다.

 

2.추상화

추상화는 클래스들의 공통적인 요소를 뽑아서 상위 클래스를 만들어내는 것입니다.

추상화는 공통적인 속성과 기능을 정의함으로써 코드의 중복을 줄이고, 클래스 간 관계를 효과적으로 설정하고, 유지보수를 용이하게 하는 것입니다.

자바에서는 추상 클래스와 인터페이스를 통해 추상화를 구현할 수 있습니다.

추상클래스와 인터페이스의 차이는

추상클래스는 그 추상클래스를 상속받아 기능을 이용하고, 확장시키기 위해 사용하고
인터페이스는 해당 인터페이스를 구현한 객체들에 대해서 동일한 동작을 약속하기 위해서 사용한다는 차이점이 있습니다.

 

3.다형성

다형성은 동일한 이름의 메서드 또는 연산자가 다른 기능을 수행할 수 있도록 하는 기능을 말합니다.

다형성은 다양한 상황에서 같은 이름의 메서드를 호출할 수 있도록 하여 코드의 재사용성을 높이고 유연성을 확보하는 데 큰 도움을 줍니다.

다형성은 오버로딩(Overloading)과 오버라이딩(Overriding)의 두 가지 형태로 구현됩니다.

오버로딩(Overloading)은 동일한 이름의 메서드를 매개변수의 수나 타입을 다르게 하여 여러 개의 메서드를 정의하는 것을 말하고, 오버라이딩(Overriding)은 상속 관계에 있는 클래스에서 부모 클래스가 가지고 있는 메서드를 자식 클래스에서 재정의하는 것을 말합니다.

 

4.상속

상속은 기존에 정의된 클래스의 모든 속성과 메서드를 새로운 클래스에서 그대로 물려받아 사용하는 것을 말합니다.

새로운 클래스를 만들때, 상속을 통해 이미 정의된 기능을 그대로 사용할 수 있으며, 중복된 코드의 양을 줄일 수 있습니다. 또한, 상속 관계를 통해 클래스 간의 계층 구조를 만들어 각 클래스의 역할과 관계를 명확히 할 수 있습니다.

 

  • REST API란 무엇인가요? (모두가 답변) 프로젝트에 REST API를 사용한 이유가 무엇인가요? (프로젝트에 REST API를 사용하셨을 경우에만 추가 답변), REST API 말고 다른 비교할만한 것을 알고 있나요?

REST API란 웹 기반 시스템에서 사용하는 API 설계 규칙 중 하나로, HTTP 프로토콜을 이용하여 클라이언트와 서버 간의 통신 방식을 정의합니다.

REST API는 상태를 관리하지 않는(Stateless) 클라이언트-서버 구조, 캐시 처리 가능(Cacheable), 계층화(Layered System) 구조 등의 특징을 가지고 있습니다.

 

REST API를 사용하면, 클라이언트와 서버 간의 인터페이스가 일관적이고 유연해지므로, 다양한 클라이언트와 서버 간의 상호작용이 가능해지기 때문에 REST API를 사용하였습니다.

 

REST API 말고도 SOAP(Simple Object Access Protocol)와 XML-RPC(Extensible Markup Language Remote Procedure Call) 등의 웹 서비스 기술이 있습니다.