최종 팀프로젝트 TIL(22)

jxxn_a·2023년 11월 8일
1

팀프로젝트

목록 보기
26/33

🐱 With All My Animal 🐶

💡 [ 22일차 11/8일 ] 💡

📌 오늘의 기술면접 질문 Q&A

1) enum 은 무엇인가요?

🌻 Enum

enum class Direction {
      SOUTH, NORTH, WEST, EAST  
}
  • enumerated type의 줄임말로 열거형이라는 뜻을 가지고 있으며 서로 연관되거나 또는 관련이 있는 상수들의 집합을 의미한다.

  • Enum은 언제 사용하면 좋은가요?
    - 사용하는 인스턴스의 수가 정해져있고, 관련되어 처리할 수 있는 상수값이 여러 개 존재할 때 사용한다.
    ex) 로또 프로그램에서 1등부터 5등까지를 의미하는 등수와 각 등수가 만들어지는 조건, 그리고 각 등수에 해당하는 상금을 묶어 낼 필요가 있을 경우

enum LottoRank {
    FIRST(6, false, 2_000_000_000),
    SECOND(5, true, 30_000_000),
    THIRD(5, false, 1_500_000),
    FOURTH(4, false, 50_000),
    FIFTH(3, false, 5_000),
    NONE(0, false, 0);
}

2) Retrofit이란 무엇인가요?

🌻 Retrofit

  • Retrofit은 안드로이드 애플리케이션에서 통신 기능에 사용하는 코드를 사용하기 쉽게 만들어놓은 라이브러리이다.

  • 다양한 플랫폼에서 REST 웹 서비스와 API를 손쉽게 사용하기 위한 라이브러리이다.

  • HTTP 요청을 효율적으로 처리하고, JSON 또는 XML과 같은 데이터 형식을 처리하는데 도움을 주는 라이브러리다.

🌼 Retrofit 특징

1) REST API 통신

  • GET, POST, PUT, DELETE 등과 같은 다양한 HTTP 요청을 처리하는데 사용된다.
  • URL 경로 및 쿼리 매개변수를 쉽게 설정 할 수있다.

2) 자동 직렬화 및 역직렬화

  • JSON 또는 XML과 같은 데이터 형식을 자동으로 직렬화하여 요청 본문을 생성하고, 응답 데이터를 역직렬화하여 kotlin 객체로 변환 할 수있다.

3) 안전한 타입 지원

  • kotlin의 안전한 타입을 사용하여 API 응답을 파싱 할 수 있으므로 컴파일 시 타입 안정성을 보장한다.

4) 커스터마이징 가능

  • Retrofit을 사용하여 헤더, 인터셉터, 커스텀 컨버터 및 에러 핸들링과 같은 다양한 기능을 커스터 마이징을 할 수있다.

🌼 Retrofit 사용법

  • 라이브러리 추가 (gradle 파일)
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
  • API 인터페이스 정의
interface ApiService {
    @GET("users/{user}")
    suspend fun getUser(@Path("user") username: String): User
}
  • Retrofit 객체 생성
    - Retrofit 빌더를 사용하여 Retrofit 객체를 생성하고 API 서비스와 연결한다.
val retrofit = Retrofit.Builder()
    .baseUrl("https://api.example.com/")
    .addConverterFactory(GsonConverterFactory.create())
    .build()

val apiService = retrofit.create(ApiService::class.java)
  • 비동기 요청 수행
    - Retrofit은 코루틴을 사용하여 비동기적으로 HTTP 요청을 수행한다.
val user = apiService.getUser("Jxxn_a")

🌼 class랑 enum class의 차이

  • class
    - 일반적인 클래스를 나타낸다.
    - 객체지향 프로그래밍에서 사용되며, 데이터와 메서드를 포함하는 사용자 지정 타입을 정의할 때 주로 사용된다.
    - class는 필요에 따라 새로운 인스턴스를 생성하거나 기존 인스턴스의 속성과 메서드를 변경할 수있다.
class Person(val name : String, val age : Int)

val person = Person("Alice", 30)

  • enum class
    - 열거형 클래스를 나타낸다.
    - 관련된 상수 값을 그룹화하고 나타내는데 사용된다.
    - enum class의 각 요소는 해당 클래스의 유일한 인스턴스이며, 다른 객체와 비교할 때 일치 여부를 확인에 사용된다.
    - 각 enum class 요소는 컴파일 타임에 이미 정의되어 있으며, 요소를 추가하거나 변경 할 수없다.
    - enum class 요소에 대해 추가 메서드나 속성을 정의할 수 있다.
enum class Color {
    RED, GREEN, BLUE
}
val selectedColor = Color.RED

  • 차이점
    - class는 데이터와 메서드를 포함하는 사용자 지정 타입을 정의하는데 사용되며, enum class는 상수 값을 나타내고 제한된 인스턴스를 가지며 수정 할 수없는 열거형을 정의한다.

0개의 댓글