Menu
Coddy logo textTech

Definindo Classes

Parte da seção Programação Orientada a Objetos do Journey de Kotlin da Coddy. Lição 2 de 57.

Uma classe descreve um tipo de objeto: os dados que ele contém e o que pode fazer. class Dog { ... } declara o tipo, e Dog() cria um objeto desse tipo, uma instância. Kotlin não tem a palavra-chave new:

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

Dentro de main:

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

Saída:

Rex
3

As variáveis dentro de uma classe são suas propriedades. Cada instância tem sua própria cópia, que pode ser lida e alterada com um ponto:

class Dog {
    var name = "Rex"
}

Dentro de main:

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

Saída:

Rex
Bella

Uma função dentro de uma classe é um método (o Kotlin os chama de funções-membro). Um método pode ler e alterar as propriedades da instância na qual é chamado:

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())

Saída:

count is 2

Os nomes de classes usam UpperCamelCase (BankAccount); as propriedades e os métodos usam lowerCamelCase (balance, deposit()). Agrupar os dados com as funções que operam sobre eles é a ideia central da programação orientada a objetos: o código que usa um Counter chama increment() e nunca precisa saber como a contagem é armazenada.

class BankAccount {
    var balance = 0

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

Desafio

Fácil

Complete o método describe() da classe Pet. Ele retorna uma frase construída a partir das propriedades: um animal de estimação chamado Rex, da espécie dog, com idade 3, resulta em Rex is a 3 year old dog.

O código fornecido cria um Pet, define suas propriedades a partir da entrada (nome, espécie, idade) e imprime o resultado de describe().

Seu código deve estar em Pet.kt. Main.kt contém o código fornecido de entrada/saída e não pode ser editado.

Experimente você mesmo

fun main() {
    // Código de entrada/saída fornecido: mantenha-o 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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Playground de Kotlin