---
# System prepended metadata

title: 2020-04-09 | Kotlin | Data Class
tags: [android, kotlin, gobelins]

---

# 2020-04-09 | Kotlin | Data Class

###### tags: `kotlin` `android` `gobelins`

## Exercice

### Enoncé
- Créer une data classe Etudiant avec les propriétés suivantes : Id, name, adresse, sexe
- Modifier la chaine de représentation pour retourner un json
- Créer un objet étudiant et copier son contenu pour créer un nouvel objet en incrémentant l’id pour chaque objet copié 
- Modifier la méthode de comparaison des objets; deux objets sont égaux s’ils ont le même nom, le même code et le même sexe

### Code

```kotlin
data class Etudiant (var name:String, var adresse:String, var sexe:String){

    var id:Int
    init {
        id = increment
        increment++
    }

    companion object{
        var increment =0
        fun lastId(): Int{
            return increment
        }
    }

    override fun toString(): String {
        val json = """
           { "id": $id
             "name": $name,
             "adresse": $adresse,
             "sexe": $sexe
           }"""
        return json
    }

    override fun equals(other: Any?): Boolean {
        if(other is Etudiant){
            if(this.name == other.name && this.id == other.id && this.sexe == other.sexe){
                return true
            } else {
                return false
            }
        } else {
            return false
        }
    }
}

val etudiant = Etudiant("Valentin","Morzine","Homme")
val etudiant2 = etudiant.copy()
val etudiant3 = etudiant2.copy()

println(etudiant)
println(etudiant2)
println(etudiant3)

println(Etudiant.lastId())

println(etudiant.equals(etudiant2))
println(etudiant.equals(etudiant3))

```