Resumo
Kotlin é uma linguagem de programação de propósito geral criada pela JetBrains para ser executada na JVM. Um dos principais objetivos da empresa ao criar a Kotlin foi desenvolver uma linguagem de programação mais moderna e com capacidade de ser interoperável com o Java. Em 2017 a Google anunciou o suporte ao Kotlin como linguagem first-class no desenvolvimento Android, o que impulsionou a sua popularidade entre os desenvolvedores e que vem aumentando o interesse no seu aprendizado [1].
Este artigo tem o objetivo de
apresentar o desenvolvimento de uma calculadora simples utilizando o Kotlin,
exibindo os conceitos básicos desta linguagem programação.
Introdução
O Kotlin é uma linguagem de programação que está sendo muito utilizada por desenvolvedores Android[2]. Suas principais características são: Expressividade e concisão, Segurança contra nulidade, Interoperabilidade e Simultaneidade estruturada. Sendo assim, o Kotlin permite que o desenvolvedor expresse suas ideias com uma quantidade menor de código boilerplate, tenha mais segurança evitando erros como exceções de ponteiro nulo, produza código interoperável com código Java existente e que consiga um gerenciamento mais simples de tarefas em segundo plano[3].
O código
desenvolvido neste artigo apresentará a utilização prática dos conceitos
introdutórios do Kotlin possibilitando que o leitor possa se familiarizar com
essa linguagem através de um projeto simples e didático. O artigo foi dividido em
2 capítulos. O capítulo 1 é a apresentação do projeto da calculadora juntamente
com a explicação dos seus componentes. O capítulo 2 é a conclusão do artigo.
1.
Projeto Calculadora
a.
Estrutura do Projeto
O projeto foi desenvolvido com a criação de três classes: Calculadora, Menu, RetornoFuncConsole. A classe Calculadora contém todos os métodos para realizar os cálculos do programa – soma, subtração, multiplicação, divisão, resto e fatorial. A classe Menu tem a responsabilidade de apresentar e ler os dados dos usuários através do terminal. A classe RetornoFuncConsole é uma data class, um tipo de classe criada apenas para armazenar dados, ou seja, é o tipo equivalente ao POJO(Plain Old Java Object).[4] [5]
A função main é
responsável por ser o ponto inicial de execução do programa. Ela ficou isolada
no arquivo AppMain.kt.
a.
Classe RetornoFuncConsole
A classe RetornoFuncConsole tem
como objetivo armazenar todos os dados que serão digitados pelo usuário. Esta
classe tem a função de garantir a transferência de dados estruturada entre as
classes Menu e Calculadora como será exibido mais adiante. O seu código
consiste na seguinte definição:
data class RetornoFuncConsole (val n1: Int, val n2: Int?)
Para a definição da classe RetornoFuncConsole
foi utilizada a palavra reservada data para indicar que está
sendo definida uma classe de dados. O construtor da classe RetornoFuncConsole
está indicando a existência de dois atributos: n1 e n2. Os dois são do
tipo inteiro e apenas de leitura conforme a utilização da palavra reservada val.
Isso indica que estes atributos uma vez que tenham recebido um valor não poderão
ser alterados. No atributo n2 existe a peculiaridade de poder receber o
valor null conforme a definição Int? .
a.
Classe Calculadora
A classe Calculadora será
responsável por realizar todas as
operações matemáticas. Através da definição da classe é possível perceber que a
palavra reservada class define o nome da classe e fun define
os métodos da mesma. As operações de soma, subtração, multiplicação e divisão são
semelhantes em termos de estrutura e se diferenciam por conta da operação. Já o
método fatorial é recursivo.
class Calculadora {
public fun soma(a: Int , b:Int):Int {
return (a + b)
}
public fun subtracao(a: Int , b:Int):Int {
return (a - b)
}
public fun multiplicacao(a: Int , b:Int):Int {
return (a * b)
}
public fun divisao(a: Int , b:Int):Int {
return (a / b)
}
public fun resto(a: Int , b:Int):Int {
return (a % b)
}
public fun fatorial(n:Int):Int {
if (n == 1){
return 1;
}
return n*fatorial(n-1)
}
}
b.
Classe Menu
A classe Menu
será responsável pela interação com o usuário.
Apresentando as opções de operação e realizando a captura dos dados fornecidos
pelos usuários da aplicação.
package com.pasta.inicial
public class Menu(private val calculadora: Calculadora) {
private fun interacaoMenuDoisInteiros() : RetornoFuncConsole{
var n1: Int = 0
var n2: Int = 0
println()
println("Digite o primeiro numero:
")
n1 = Integer.valueOf(readLine())
println("Digite o segundo numero: ")
n2 = Integer.valueOf(readLine())
var retorno = RetornoFuncConsole(n1,n2)
return retorno
}
private fun interacaoMenuUmInteiro() : RetornoFuncConsole{
var n1: Int = 0
println()
println("Digite o numero: ")
n1 = Integer.valueOf(readLine())
var retorno = RetornoFuncConsole(n1,null)
return retorno
}
fun executaOperacao(n: String?) {
when (n) {
"1" -> {
val (n1, n2) =
interacaoMenuDoisInteiros()
var resultado = calculadora.soma(n1,n2 ?: 0)
imprimirResultado(resultado)
}
"2" -> {
val (n1, n2:Int?) =
interacaoMenuDoisInteiros()
var resultado = calculadora.subtracao(n1,n2 ?: 0)
imprimirResultado(resultado)
}
"3" -> {
val (n1, n2) =
interacaoMenuDoisInteiros()
var resultado = calculadora.multiplicacao(n1,n2 ?: 0)
imprimirResultado(resultado)
}
"4" -> {
val (n1, n2) =
interacaoMenuDoisInteiros()
var resultado = calculadora.divisao(n1,n2 ?: 0)
imprimirResultado(resultado)
}
"5" -> {
val (n1, n2) =
interacaoMenuDoisInteiros()
var resultado = calculadora.resto(n1,n2 ?: 0)
imprimirResultado(resultado)
}
"6" -> {
val (n1) = interacaoMenuUmInteiro()
var resultado = calculadora.fatorial(n1)
imprimirResultado(resultado)
}
else -> { // Note the block
print("Fim")
}
}
}
fun imprimirResultado(resultado:Int){
println("")
println("Resutado: $resultado" )
println("")
}
fun menu() {
var escolha: String? = ""
do {
println("Escolha a operação:")
println("");
println("[1] - Soma")
println("[2] - Subtração")
println("[3] - Multiplicação")
println("[4] - Divisão")
println("[5] - Resto")
println("[6] - Fatorial")
println("[7] - Sair")
println("");
println("Digite a opção: ")
escolha = readLine()
executaOperacao(escolha)
} while (escolha != "7")
}
}
A classe menu possui os métodos interacaoMenuDoisInteiros,
InteracaoMenuUmInteiro, executaOperacao, imprimirResultado
e menu. Os métodos interacaoMenuDoisInteiros
e InteracaoMenuUmInteiro retornam a data class RetornoFuncConsole.
Através deste retorno os valores digitados pelos usuários são salvos nas
variáveis n1 e n2. O método InteracaoMenuUmInteiro solicita apenas um número
que será utilizado para o cálculo do
fatorial. Para poder permitir o retorno de apenas um número inteiro através da
classe RetornoFuncConsole a mesma foi definida permitida que no construtor
o parâmetro n2 fosse null. Desta forma não foi criado uma segunda classe
para capturar os dados do usuário quando a operação permitir apenas um número
para realização dos cálculos. O método executaOperacao possui a
estrutura de seleção When. Ela determinará as operações necessárias
para efetuar os cálculos de acordo com as escolhas do usuário estabelecidas
através do menu. O método imprimirResultado formata os
retornos dos cálculos que serão apresentados para o usuário. O método menu
oferece as opções visuais para que o usuário selecione os cálculos
oferecidos pelo programa.
a.
A função main()
A função main() é o
ponto de entrada de execução do
programa. Nela é criada uma instância da classe Calculadora que é
passada para o construtor da classe Menu, permitindo que toda a funcionalidade
do programa seja exposta a para o usuário final através do método menu()
fun main() {
var calculadora: Calculadora
calculadora = Calculadora()
var m: Menu
m = Menu(calculadora)
m.menu()
}
2.
Conclusão
A linguagem Kotlin vem se tornando
muito popular nos últimos anos. Parte de desta popularidade se deve à sua
adoção como linguagem para desenvolvimento de aplicativos android. Este artigo
teve o objetivo de apresentar a construção de uma Calculadora para demostrar a
utilização das estruturas básicas da linguagem de uma maneira prática. Permitindo
que o leitor tenha uma estrutura básica de código para testar e aplicar os
conceitos da linguagem.
OBS: Código disponível no github
https://github.com/santanna106/CalculadoraKotlin.git
3.
Referências
[1] - https://curitibati.com.br/Blog/Post/Kotlin-crescimento-popularidade-da-linguagem
[2] - https://developer.android.com/kotlin/learn
[3] - https://developer.android.com/kotlin/first
[4] - https://kotlinlang.org/docs/data-classes.html
[5] - https://kotlinlang.org/
Comentários
Postar um comentário