Olá,
Sou iniciante em Java e estou estudando pelo livro do Deitel 8° edição.
Fiz o exercício 3.16 (Calculadora de frequência cardíaca) e fiquei com uma dúvida.
No enunciado pede para usar set / get.
Minha dúvida é: Sempre tenho que usar esta metodologia?
Percebi que poderia fazer tudo em um método public (sem ser void) que receberia os dados da classe de teste e retornaria um valor com o “return”.
Segue o exercício:
> // Exerc 3.16: HeartRates.java
> // classe HeartRates para informar idade, frequência cardíaca máxima e
> // intervalo de frequência cardíaca alvo.
> import java.util.Date;
> import java.text.SimpleDateFormat;
> import java.text.ParseException;
> public class HeartRates {
> private String userName; //nome para este HeartRates
> private String userSobrenome; //sobrenome para este HeartRates
> private String userDateNasc; // String data de nascimento
> private Date aniversario; // Date data de nascimento
> private int idade; // idade
> private int fcm;
>
> // setters
>
> // método para configurar o nome e sobrenome
> public void setUser ( String name, String sobrenome ) {
> userName = name; //armazena o nome
> userSobrenome = sobrenome; // armazena o sobrenome
> } // fim do método setUser
>
> // método para definir idade
> public void setNascimento( String dia, String mes, String ano) {
> SimpleDateFormat dt = new SimpleDateFormat( "dd/MM/yyyy" ); // cria formatação para data
> Date now = new Date(); // cria data atual
> userDateNasc = dia + "/" + mes + "/" + ano; // concatena data de nacimento do usuário
>
> try {
> aniversario = dt.parse( userDateNasc ); // transformada String para Date para cálculo da idade
> } catch (ParseException ex) {
> ex.printStackTrace();
> } // fim do catch
> userDateNasc = dt.format( aniversario ); // transforma Date para String para imprimir
>
> // Calcula idade
> idade = now.getYear() - aniversario.getYear() - 1;
> if (now.getMonth() > aniversario.getMonth())
> idade++;
> else if (now.getMonth() == aniversario.getMonth() && now.getDay() >= aniversario.getDay())
> idade++;
> } // fim do método setNascimento
>
> // getters
>
> // Método para recuperar o nome
> public String getUserName() {
> return userName;
> } // fim do método getUserName
>
> // Método para recuperar o sobrenome
> public String getUserSobrenome() {
> return userSobrenome;
> } // fim do método getUserSobrenome
>
> // Método para recuperar data
> public String getDataNasc() {
> return userDateNasc;
> } // fim do método getDataNasc
> // método para recuperar idade
> public int getIdade() {
> return idade;
> } // fim do método getIdade
>
> // método para recuperar frequência cardíaca máxima
> public int getFcm() {
> return 222 - getIdade();
> } // fim do método getFcm
>
> public void displayMessage() {
> // chama getUserName para obter o nome
> System.out.printf( "Nome: %s\n",
> getUserName() );
> // chama getUserSobrenome para obter o sobrenome
> System.out.printf( "Sobrenome: %s\n",
> getUserSobrenome() );
> // chama getDataNasc para obter data de nascimento
> System.out.printf( "Data de Nascimento: %s\n",
> getDataNasc() );
> // chama getIdade para obter a idade
> System.out.printf( "Idade: %d\n",
> getIdade() );
> // chama getFcm para obter a frequência cardíaca máxima
> System.out.printf( "Frequência Cardíaca Máxima: %d BPM\n",
> getFcm() );
> // chama getFcm para clacular intervalo de frequência cardíaca alvo, entre 50% e 85%
> // da frequeência cardíaca máxima
> System.out.printf( "intervalo de frequência cardíaca alvo: %.0f até %.0f BPM\n",
> getFcm() * 0.50, getFcm() * 0.85 );
> } // fim do método displayMessage
> } // fim da classe acount
Classe de teste:
// Exerc 3.16: HeartRatesTD.java
// criando um objeto HeartRates e passa as informações para
// o objeto heartRates
import javax.swing.JOptionPane; // importa classe JOptionPane
public class HeartRatesTD
{
// Método main inicia a execução do programa.
public static void main( String[] args )
{
HeartRates heartRates = new HeartRates(); // Cria um objeto HeartRates e o atribui a heartRates
// Pede para o usuário inserir seu nome
String setName = JOptionPane.showInputDialog( "Qual o seu Nome?" );
// Pede para o usuário inserir seu sobrenome
String setSobrenome = JOptionPane.showInputDialog( "Qual o seu Sobrenome?" );
// Pede para o usuário inserir seu sobrenome
String setDia = JOptionPane.showInputDialog( "Qual o seu dia de nascimento (dd)?" );
// Pede para o usuário inserir seu sobrenome
String setMes = JOptionPane.showInputDialog( "Qual o seu mês de nascimento (mm)?" );
// Pede para o usuário inserir seu sobrenome
String setAno = JOptionPane.showInputDialog( "Qual o seu ano de nascimento (aa)?" );
heartRates.setUser( setName, setSobrenome ); // configura nome e sobrenome
heartRates.setNascimento( setDia, setMes, setAno ); // configura data de nascimento
// Exibe informações do usuário e frequências cardíacas
heartRates.displayMessage();
} // fim do método main
} // fim da classe HeartRatesTD
Obrigado.