Adicionando Funções para Invoices
Como exemplo para uma função explícita, nós podemos criar um significado para identificar o seu estado. Vamos chamar essa função getState(). Podemos fazer assim:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class Invoice([parâmetros do construtor]){ val compradorNomeCompleto: String val precoTotal: Double init{[inicializar código]} fun getState(): String{ return “Nome : ${nome}\n” + “Sobrenome: ${sobrenome}\n” + “Nome Completo: ${compradorNomeCompleto}\n” + “Data: ${data}\n” + “Produto: ${nomeProduto}\n” + “Quantidade: ${quantidade}\n” + “Preço por Item: ${precoPorItem}\n” + “Preço Total: ${precoTotal}\n” } } |
Onde a :String in fun getState(): String indica que a função retorna uma string, e o retorno…realmente executa a ação de retorno. O ${alguma coisa} é uma string que substitui um valor, e o \n representa a quebra de linha.
Nota: Desenvolvedores utilizam o termo implementação muitas vezes para descrever a transição de uma ideia para um código em execução.
A invocação de uma função fora da classe, apenas utilize o objeto nome e a função nome e escreva.
objectNome.functionNome(parâmetro1, parâmetro2 ,…)
Por não termos nenhum parâmetro para getState() podemos fazer assim:
val primeiroInvoice = Invoice(“Michel”, “Medeiros”, “1978-12-06”, “Ervilhas”, 5, 2.99)
val state:String = primeiroNome.getState()
Se, contudo, já estivermos dentro da classe, digamos dentro de um init{} ou dentro de outra função da classe, para chamar a função basta utilizar o próprio nome:
…
//nós estamos dentro da classe Invoice
val state:String = getState()
Uma função pode ter uma lista de parâmetros. Por exemplo, um método para classe Invoice calcula a taxa como a taxa de imposto como um parâmetro:
fun taxa(taxaImposto:Double):Double{
return taxaImposto * quantidade * precoPorItem
}
O Double depois da lista de parâmetros declara que o método retorna um número de ponto flutuante, o qual é o retorno da função. Para uma lista de parâmetros com mais de um elemento utiliza-se a vírgula (,) como um separador. O asterisco(*) é utilizado para multiplicação.
A invocação do método taxa, pode ser feito assim:
…
val primeiroInvoice = Invoice(“Michel”, “Medeiros”, “1978-12-06”, “Ervilhas”, 5, 2.99)
val taxa:Double = primeiroInvoice.taxa(0.11)
A Classe Invoice Completa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
class Invoice(val primeiroNomeComprador:String, val sobrenomeComprador:String, val date:String, val produto:String, val quantidade:Int, val precoPorItem:Double){ val nomeComprador:String val precoTotal:Double init{ nomeComprador = primeiroNomeComprador + “ “ + sobrenomeComprador precoTotal = quantidade * precoPorItem } fun getState():String{ return “Primeiro nome: ${compradorPrimeiroNome}\n” + “Sobrenome: ${sobrenomeComprador}\n” + “Nome: ${nome}\n” + “Data: ${date}\n” + “Produto: #{produto}\n” + “Quantidade: ${quantidade}\n” + “Preço por item: ${precoPorItem}\n” + “Preço total: ${precoTotal}” } fun taxa(taxaImposto:Double):Double{ return taxaImposto * quantidade * precoPorItem } } fun main(args:Array<String>){ val primeiroInvoice = Invoice(“Michel”, “Medeiros”, “1978-12-06”, “Ervilhas”, 5, 2.99) val state:String = primeiroInvoice.getState() val taxa:Double = primeiroInvoice.taxa(0.11) //faz mais coisas } |
Isso funciona para uma aplicação no estilo de invocação que é encontrado em classes para desktop ou aplicações para servidores. Isso não funcionaria para o Android, porque há procedimentos para começar a aplicação e comunicar-se com o hardware que se diferenciam pelo método main().
Fonte: Learn Kotlin for Android Development: The Next Generation Language for Modern Android Apps Programming
Deixe um comentário