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:
- Lâmpada é um objeto
- Ele pode estar ligado ou desligado.
- Você pode
turn on
eturn off
lâmpada (comportamento).
- 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 class
palavra-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 protected
e internal
modificadores posteriormente no artigo sobre modificadores de visibilidade do Kotlin.
Se você não especificar o modificador de visibilidade, será public
por 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()
anddisplayLightStatus()
. - 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 totrue
. - And,
turnOff()
function is called using l2 object:l1.turnOff()
. This method sets isOff instance variable of l2 object tofalse
. - Então, a
displayLightStatus()
função é chamada para os objetos l1 e l2 que imprime a mensagem apropriada dependendo se a propriedade isOn é verdadeira oufalse
.
Observe que a propriedade isOn é inicializada false
dentro da classe. Quando um objeto da classe é criado, a propriedade isOn do objeto é inicializada como false
automaticamente. 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