반응형
반응형

코틀린은 다양한 Class를 사용해서 가독성 높게 개발할 수 있습니다.

오늘은 데이터(Data)를 쉽게 사용할 수 있는 데이터 클래스(Data Class)를 알아보겠습니다.

서버에서 사용하는 데이터를 가져와서 저장하기 위해서 많이 사용되는 클래스입니다.

데이터 클래스(Data Class)는 애플리케이션 데이터 모델의 주요 구성요소입니다.

코틀린(Kotlin)에서는 클래스에 사용되는 속성에 게터, 세터가 지정됩니다.

var을 선언할 경우 읽기 쓰기 속성이기 때문에, 게터, 세터 모두 정의됩니다.

val을 선언할 경우는 읽기 속성만 있는 게터만 적용됩니다.

코틀린 데이터 클래스(Data Class)

데이터 클래스(Data Class)는 데이터의 무결성을 유지하기 위해서 val을 많이 사용합니다.

구조는 "data class"로 되어 있습니다.

class name을 지정하고 기본 인자를 선언하면 됩니다.

data class Book(val title:String, val price:Int, val type:Int)

Book 데이터 클래스는 val로 모두 선언되어 있어 직접 변경이 불가능합니다.

Book 데이터 클래스를 사용하기 위해서 다양한 함수를 적용했습니다.

fun books(){

        val book = Book("Kotlin", 20000, 1)

        Log.d(TAG, book.toString())

        val secondBook = Book("C#", 15000, 3)
        val thirdBook = Book("JAVA", 25000, 4)

        Log.d(TAG, book.hashCode().toString())
        Log.d(TAG, secondBook.hashCode().toString())
        Log.d(TAG, thirdBook.hashCode().toString())

        Log.d(TAG, book.copy().toString())
        Log.d(TAG,book.copy("Kotlin copy second").toString())
        Log.d(TAG,book.copy(price = 40000).toString())

        Log.d(TAG, secondBook.component1())
        Log.d(TAG, secondBook.component2().toString())
        Log.d(TAG, secondBook.component3().toString())

    }

클래스 선언은 JAVA와 다르게 new 없이 바로 선언하면 됩니다.

BOOK 클래스 타입을 확인하기 위해서. toString() 함수를 사용하면 모든 인수를 확인할 수 있습니다.

데이터 클래스는 두 인스턴스의 구조적 동등성을 비교하기 위해서 hashCode() 함수를 사용합니다.

hashCode() 함수를 사용할 경우 클래스 형식을 확인할 수 있습니다.

코틀린(Kotlin) 데이터 클래스(Data Class)는 직접 인수를 변경할 수 없기 때문에 copy() 함수를 사용해서 각 인수를 변경할 수 있습니다.

함수를 사용하기 위해서 MainActivity에 books() 함수를 호출했습니다.

데이터 클래스(Data Class) 인수를 확인하기 위해서는 component+번호() 함수를 사용할 수 있습니다.

데이터 클래스(Data Class) 인수에 따라서 함수가 순차적으로 변경됩니다.

함수 뒤에 자료형도 확인이 가능합니다.

모든 자료형은 .toString() 함수를 출력이 가능합니다.

Log View에서 출력된 데이터 클래스(Data Class) 정보를 확인할 수 있습니다.

.toString() 함수를 사용해서 인스턴스를 바로 확인할 수 있습니다.

HashCode() 함수를 사용하면 데이터 클래스의 Hash 값을 확인할 수 있습니다.

copy() 함수를 사용하면 인수를 변경할 수 있습니다.

코틀린(Kotlin) 데이터 클래스(Data Class)는 데이터 자료형을 프로그램에서 편리하게 사용할 수 있게 도와주는 매우 좋은 클래스입니다.

코틀린 파일을 따로 생성해서 데이터 클래스를 정의하면 더욱더 편리하게 사용할 수 있습니다.

감사합니다.

play.kotlinlang.org/byExample/03_special_classes/01_Data%20classes

 

Kotlin Playground: Edit, Run, Share Kotlin Code Online

 

play.kotlinlang.org

 

반응형

+ Recent posts