본문 바로가기

앱, 어플리케이션 만드는 법 - [Kotlin] 데이터 클래스(Data Class) 개념

I-ri 발행일 : 2023-05-16
728x90
반응형

#주의#

이 글은 강의 글이 아닙니다.

틀린 부분, 깔끔하지 못한 부분 있을 수 있습니다.

지적해 주시면 저도 공부가 되고, 앞으로 이 글을 보실 분들에게도 도움이 될 거라 생각합니다.


728x90

개요

데이터 클래스는 데이터를 표현하고 조작하는 간결하고 효율적인 방법을 제공하는 Kotlin 프로그래밍 언어의 필수 기능입니다. Kotlin에서 데이터 클래스는 데이터를 보유하고 상용구 코드가 필요하지 않도록 특별히 설계되었습니다. Kotlin의 데이터 클래스 개념과 장점을 살펴보고 사용법을 설명하는 몇 가지 예를 제공합니다.

데이터 클래스(Data Class)란?

Kotlin에서 데이터 클래스는 광범위한 기능을 제공하기보다 주로 데이터 보유에 중점을 둔 클래스를 정의하는 편리한 방법입니다. 데이터 클래스의 주요 목적은 일반적으로 사용되는 함수를 자동으로 생성하여 상용구 코드를 줄이는 것입니다.

데이터 클래스는 데이터를 저장하기 위한 클래스를 간단하게 작성할 수 있도록 도와줍니다. Kotlin에서는 data 키워드를 사용하여 데이터 클래스를 정의합니다.

이러한 함수에는 데이터 객체로 작업할 때 필수적인 equals(), hashCode(), toString()  copy()가 포함됩니다.

반응형

데이터 클래스의 장점

Kotlin에서 데이터 클래스를 사용하면 데이터 표현을 위한 강력한 도구가 되는 몇 가지 이점이 있습니다. 다음은 몇 가지 주요 이점입니다.

  1. 가독성: 데이터 클래스는 속성에 의미 있는 이름을 제공하여 코드 가독성을 향상해 보다 표현력 있고 자명한 코드를 생성합니다.
  2. 간결성: 데이터 클래스를 사용하면 단 몇 줄의 코드로 클래스를 정의할 수 있어 장황함을 줄이고 상용구를 제거할 수 있습니다.
  3. 자동 함수 생성: Kotlin은 데이터 클래스에 대한 equals(), hashCode(), toString() 및 copy()와 같은 유용한 함수를 자동으로 생성하여 개발 시간과 노력을 절약합니다.
  4. 기본적으로 불변성: 데이터 클래스 속성은 일반적으로 기본적으로 val(읽기 전용)로 선언되어 불변성을 장려하고 원하지 않는 수정의 위험을 줄입니다.
  5. 상호 운용성: 데이터 클래스는 구조 분해 선언과 같은 다른 Kotlin 기능과 원활하게 통합되어 다양한 프로그래밍 시나리오에 다용도로 사용할 수 있습니다.

구문 및 사용법

Kotlin에서 데이터 클래스를 정의하려면 class 키워드 앞에 data 한정자를 사용해야 합니다. 다음은 Person이라는 간단한 데이터 클래스의 예입니다.

data class Person(val name: String, val age: Int)

위의 예에서 Person 데이터 클래스에는 String 유형의 name Int 유형의 age라는 두 가지 속성이 있습니다. Kotlin은 이 데이터 클래스에 대해 equals(), hashCode(), toString()  copy() 함수를 자동으로 생성합니다.

데이터 클래스 사용자 지정

Kotlin은 데이터 클래스에 대한 함수를 자동으로 생성하지만 요구 사항에 따라 이러한 함수를 사용자 지정할 수 있습니다. 예를 들어 toString() 함수를 재정의하여 개체의 다른 문자열 표현을 제공하거나 copy() 함수를 수정하여 추가 논리를 포함할 수 있습니다.

데이터 클래스의 예

Kotlin에서 데이터 클래스를 사용하는 방법을 보여주는 몇 가지 예를 살펴보겠습니다.

equals() 함수

Kotlin에서 Data Class는 equals() 함수를 자동으로 생성합니다. equals() 함수는 객체의 내용이 같은지 비교하는 함수입니다.

val person1 = Person("Alice", 25)
val person2 = Person("Alice", 25)
println(person1 == person2) // true

위와 같이 두 개의 Person 객체를 생성하고, equals() 함수를 사용하여 비교할 수 있습니다.

hashCode() 함수

Kotlin에서 Data Class는 hashCode() 함수를 자동으로 생성합니다. hashCode() 함수는 객체의 해시 코드를 반환하는 함수입니다.

val person = Person("Alice", 25)
println(person.hashCode())

위와 같이 Person 객체의 해시 코드를 출력할 수 있습니다.

copy() 함수

Kotlin에서 Data Class는 copy() 함수를 자동으로 생성합니다. copy() 함수는 객체를 복제하는 함수입니다.

val person = Person("Alice", 25)
val personCopy = person.copy()
println(personCopy) // Person(name=Alice, age=25)

위와 같이 Person 객체를 복제하고, 복제된 객체를 출력할 수 있습니다.

toString() 함수

Kotlin에서 Data Class는 toString() 함수를 자동으로 생성합니다. toString() 함수는 객체를 문자열로 변환하는 함수입니다.

val person = Person("Alice", 25)
println(person.toString()) // Person(name=Alice, age=25)

위와 같이 Person 객체를 문자열로 변환하여 출력할 수 있습니다.

Component 함수

Kotlin에서 Data Class는 Component 함수를 자동으로 생성합니다. Component 함수는 객체를 분해하는 함수입니다.

val person = Person("Alice", 25)
val (name, age) = person
println("$name, $age") // Alice, 25

위와 같이 Person 객체를 분해하여 name과 age 변수에 저장할 수 있습니다.

이렇게 Kotlin에서 Data Class는 데이터를 쉽게 저장하고 관리할 수 있도록 다양한 기능을 제공합니다.

결론

Kotlin의 데이터 클래스는 데이터를 표현하고 조작하는 간소화된 방법을 제공하여 상용구 코드를 없애고 코드 가독성을 향상합니다. 데이터 클래스는 자동 함수 생성을 제공하며 기본적으로 불변성을 지원합니다. 데이터 클래스를 활용하면 개발자는 코드의 로직과 기능에 더 집중할 수 있고, 데이터 조작과 관련된 반복적인 작업은 Kotlin이 처리합니다.

    728x90
    반응형

    댓글