Classe e objetos Kotlin (com exemplos)

Neste artigo, você será apresentado à programação orientada a objetos em Kotlin. Você aprenderá o que é uma classe, como criar objetos e usá-la em seu programa.

Kotlin oferece suporte a programação funcional e orientada a objetos.

Kotlin oferece suporte a recursos como funções de ordem superior, tipos de função e lambdas, o que o torna uma ótima escolha para trabalhar em estilo de programação funcional. Você aprenderá sobre esses conceitos em capítulos posteriores. Este artigo se concentrará no estilo de programação orientado a objetos em Kotlin.

Programação orientada a objetos (OOP)

No estilo de programação orientado a objetos, você pode dividir um problema complexo em conjuntos menores criando objetos.

Esses objetos compartilham duas características:

  • Estado
  • comportamento

Vamos dar alguns exemplos:

  1. Lâmpada é um objeto
    • Ele pode estar ligado ou desligado.
    • Você pode turn one turn offlâmpada (comportamento).
  2. Bicicleta é um objeto
    • Tem marcha atual, duas rodas, número de marchas etc. estados.
    • Tem comportamento de travagem, aceleração, mudança de marchas, etc.

Você aprenderá sobre os recursos detalhados de uma programação orientada a objetos, como: encapsulamento de dados, herança e polimorfismo à medida que avançamos. Este artigo se concentrará no básico para manter as coisas simples.

Leitura recomendada: O que é um objeto?

Aula Kotlin

Antes de criar objetos no Kotlin, você precisa definir uma classe.

Uma classe é um projeto para o objeto.

Podemos pensar em classe como um esboço (protótipo) de uma casa. Ele contém todos os detalhes sobre os pisos, portas, janelas, etc. Com base nessas descrições construímos a casa. A casa é o objeto.

Visto que muitas casas podem ser feitas a partir da mesma descrição, podemos criar muitos objetos de uma classe.

Como definir uma classe em Kotlin?

Para definir uma classe em Kotlin, a classpalavra-chave é usada:

 class ClassName (// propriedade // função de membro…) 

Aqui está um exemplo:

 classe Lamp (// propriedade (membro de dados) private var isOn: Boolean = false // função membro fun turnOn () (isOn = true) // função membro fun turnOff () (isOn = false))

Aqui, definimos uma classe chamada Lamp.

A classe tem uma propriedade isOn (definida da mesma maneira que a variável) e duas funções-membro turnOn()e turnOff().

Leitura recomendada: funções Kotlin

No Kotlin, a propriedade deve ser inicializada ou deve ser declarada abstract( Visite: Kotlin Abstract Class para saber mais). No exemplo acima, a propriedade isOn é inicializada para false.

Classes, objetos, propriedades, função de membro etc. podem ter modificadores de visibilidade. Por exemplo, a propriedade isOn é privada. Isso significa que a propriedade isOn pode ser alterada apenas de dentro da classe Lamp.

Outros modificadores de visibilidade são:

  • private - visível (pode ser acessado) somente de dentro da classe.
  • public - visível em todos os lugares.
  • protected - visível para a classe e sua subclasse.
  • internal - qualquer cliente dentro do módulo pode acessá-los.

Você aprenderá sobre protectede internalmodificadores posteriormente no artigo sobre modificadores de visibilidade do Kotlin.

Se você não especificar o modificador de visibilidade, será publicpor padrão.

No programa acima, turnOn()e as turnOff()funções de membro são public, enquanto a propriedade isOn é privada.

Objetos Kotlin

Quando a classe é definida, apenas a especificação do objeto é definida; nenhuma memória ou armazenamento é alocado.

Para acessar os membros definidos na classe, você precisa criar objetos. Vamos criar objetos da classe Lamp.

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class )

Este programa cria dois objetos l1 e l2 da classe Lamp. A propriedade isOn para ambas as lâmpadas l1 e l2 será false.

Como acessar membros?

Você pode acessar propriedades e funções de membro de uma classe usando .notação. Por exemplo,

 l1.turnOn ()

Esta instrução chama a função turnOn () para o objeto l1.

Vamos dar outro exemplo:

 l2.isOn = true

Here, we tried to assign true to isOn property of l2 object. Note that, isOn property is private, and if you try to access isOn from outside the class, an exception is thrown.

Example: Kotlin Class and Object

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus(lamp: String) ( if (isOn == true) println("$lamp lamp is on.") else println("$lamp lamp is off.") ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class l1.turnOn() l2.turnOff() l1.displayLightStatus("l1") l2.displayLightStatus("l2") )

When you run the program, the output will be:

 l1 Lamp is on. l2 Lamp is off.

In the above program,

  • Lamp class is created.
  • The class has a property isOn and three member functions turnOn(), turnOff() and displayLightStatus().
  • Two objects l1 and l2 of Lamp class are created in the main() function.
  • Here, turnOn() function is called using l1 object: l1.turnOn(). This method sets isOn instance variable of l1 object to true.
  • And, turnOff() function is called using l2 object: l1.turnOff(). This method sets isOff instance variable of l2 object to false.
  • Então, a displayLightStatus()função é chamada para os objetos l1 e l2 que imprime a mensagem apropriada dependendo se a propriedade isOn é verdadeira ou false.

Observe que a propriedade isOn é inicializada falsedentro da classe. Quando um objeto da classe é criado, a propriedade isOn do objeto é inicializada como falseautomaticamente. Portanto, não é necessário que o objeto l2 seja chamado turnOff()para definir a propriedade isOn como false.

Por exemplo:

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus() ( if (isOn == true) println("lamp is on.") else println("lamp is off.") ) ) fun main(args: Array) ( val lamp = Lamp() lamp.displayLightStatus() ) 

Quando você executa o programa, a saída será:

 a lâmpada está desligada.

Este artigo é apenas uma introdução à programação orientada a objetos em Kotlin. Verifique estes capítulos em sequência para saber mais:

  • Construtores e inicializadores Kotlin
  • Kotlin esta palavra-chave
  • Classe aninhada Kotlin

Artigos interessantes...