[코틀린기초] 32. 데이터 클래스

데이터 전달을 위한 객체 DTO (data tranfer object)

자바에서는 POJO라고 불리기도 함

구현 로직을 가지고 있지 않고 순수한 데이터 객체를 표현

데이터를 접근하는 게터/세터를 포함

toString, equals 등과 같은 데이터 표현 및 비교 메서드 포함

자바로 DTO를 표현하면 데이터 필드, 게터/세터, 데이터 표현 및 비교 메서드들을 모두 작성해야된다.

코틀린으로 DTO를 표현하면 프로퍼티만 신경써서 작성하면 나머지는 내부적으로 자동 생성이 된다!

자동 생성되는 메서드들은 다음과 같다

데이터 클래스의 선언

data 키워드를 사용해 정의한다

  data class Customer(var name:String, var email:String)

간단한 로직은 부 생성자(constructor)나 init 블록을 이용하여 넣을 수 있다.

데이터 클래스의 조건

객체 디스트럭처링

객체가 가지고 있는 프로퍼티를 개별 변수들로 분해

  val (name, email) = cus1
  println("name = $name, email = $email")

#### 특정 프로퍼티를 가져올 필요가 없는 경우

  val (_, email) = cus1

#### componentN() 메서드 이용

  val name2 = cus1.component1()
  val email2 = cus1.component2()

#### 객체 데이터가 많은 경우 for문의 활용

  val cus1 = Customer("Sean", "sean@mail.com")
  val cus2 ...
  ...
  
  val customers = listOf(cus1,cus2,...)   //  모든 객체를 컬렉션 list형태로 구성한다!
  
  for((name, email) in customers){  // 반복문으로 모든 객체의 프로퍼티를 디스트럭쳐링
    println("name = $name, email = $email")
  }
  

#### 람다식을 사용하는 경우

  val myLamde = {
    (nameLa, emailLa): Customer ->
    println(nameLa)
    println(emailLa)
  }
  
  myLamda(cus1)