Menu
Coddy logo textTech

Definir clases

Parte de la sección Programación orientada a objetos del Journey de Kotlin de Coddy. Lección 2 de 57.

Una clase describe un tipo de objeto: los datos que contiene y lo que puede hacer. class Dog { ... } declara el tipo, y Dog() crea un objeto de ese tipo, una instancia. Kotlin no tiene la palabra clave new:

class Dog {
    var name = "Rex"
    var age = 3
}

Dentro de main:

val dog = Dog()
println(dog.name)
println(dog.age)

Salida:

Rex
3

Las variables dentro de una clase son sus propiedades. Cada instancia tiene su propia copia, que se lee y modifica con un punto:

class Dog {
    var name = "Rex"
}

Dentro de main:

val first = Dog()
val second = Dog()
second.name = "Bella"
println(first.name)
println(second.name)

Salida:

Rex
Bella

Una función dentro de una clase es un método (Kotlin los llama funciones miembro). Un método puede leer y cambiar las propiedades de la instancia sobre la que se llama:

class Counter {
    var count = 0

    fun increment() {
        count++
    }

    fun report() = "count is $count"
}

Dentro de main:

val clicks = Counter()
clicks.increment()
clicks.increment()
println(clicks.report())

Salida:

count is 2

Los nombres de las clases usan UpperCamelCase (BankAccount); las propiedades y los métodos usan lowerCamelCase (balance, deposit()). Agrupar los datos con las funciones que operan sobre ellos es la idea central de la programación orientada a objetos: el código que usa un Counter llama a increment() y nunca necesita saber cómo se almacena el recuento.

class BankAccount {
    var balance = 0

    fun deposit(amount: Int) {
        balance += amount
    }
}
challenge icon

Desafío

Fácil

Completa el método describe() de la clase Pet. Devuelve una oración formada a partir de las propiedades: una mascota llamada Rex, de especie dog y edad 3 da como resultado Rex is a 3 year old dog.

El código proporcionado crea una Pet, establece sus propiedades a partir de la entrada (nombre, especie, edad) e imprime el resultado de describe().

Tu código debe estar en Pet.kt. Main.kt contiene el código proporcionado de entrada/salida y no se puede editar.

Pruébalo tú mismo

fun main() {
    // Código de entrada/salida suministrado: déjalo como está
    val input = generateSequence(::readLine).toList()
    val pet = Pet()
    pet.name = input[0]
    pet.species = input[1]
    pet.age = input[2].toInt()
    println(pet.describe())
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Programación orientada a objetos

Practica por tu cuenta: Playground de Kotlin