6. Lógica da Aplicação

6.2. Atributos da classe

Boas práticas de programação indicam que a criação de todos os atributos em uma classe deve ocorrer na parte superior do arquivo. Nessa seção, devem ser declaradas todas as variáveis e constantes que serão utilizadas pela aplicação.

Para este projeto, vamos criar duas constantes: currencyFormat e percentFormat. Ambas são instâncias da classe NumberFormat e serão responsáveis pela formatação da moeda e porcentagem, respectivamente. A especificação do tipo de formatação que será usada é obtida por meio da invocação dos métodos getCurrencyInstance() e getPercentInstance(), respectivamente. A classe NumberFormat será responsável por determinar o formato da moeda a ser usado, o qual depende das configurações locais do dispositivo Android. Isso significa que a formatação da moeda pode ser em reais (R$) ou dólares (U$), dependendo das configurações do dispositivo.

Além das constantes de formatação, declaramos duas variáveis para atender aos requisitos da aplicação:

    • billAmount: representa o valor inserido pelo usuário e é inicializado com 0.
    • percent: representa a taxa de serviço e é inicializado com 0.15.

Essas variáveis serão modificadas à medida que o usuário interage com as views da tela e serão usadas nos cálculos.

No início da classe, também declaramos variáveis para servir como referência aos componentes gráficos que serão manipulados na aplicação. Neste projeto, é necessário obter referências para as views amountTextView, percentTextView, tipTextView e totalTextView.

package ...

import android.content.Context
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.util.Log
import android.widget.EditText
import android.widget.SeekBar
import android.widget.TextView
import java.text.NumberFormat

class MainActivity : AppCompatActivity() {
//objetos para formatação nos padrões de MOEDA e PORCENTAGEM
private val currencyFormat: NumberFormat = NumberFormat.getCurrencyInstance()
private val percentFormat: NumberFormat = NumberFormat.getPercentInstance()

//variáveis para a lógica da aplicação
private var billAmount = 0.0 // R$ 0,00
private var percent = 0.15 // 15 %

//variáveis com referências aos elementos da UI
private var amountTextView: TextView? = null
private var amountEditText: EditText? = null
private var percentTextView: TextView? = null
private var percentSeekBar: SeekBar? = null
private var tipTextView: TextView? = null
private var totalTextView: TextView? = null