Alteração de Classe SmartTV
TÓPICO:
Dominando a Linguagem Java
MÓDULO
Aprendendo a Sintaxe Java
AULA: Métodos - 3
Turma, alterei a classe SmartTV. Comentei algumas linhas. Na dúvida é só chamar.
Dica de quando utilizar variáveis static: "Sempre usem variáveis de classe static quando as variáveis precisar transitar entres os métodos"
O professor não utilizou variáveis static para não deixar o aluno bugado. Eu já venho estudando por conta já um tempo.
Forte abraços e bons estudos. Qualquer dúvida favor chamar respondendo o presente tópico.
Classe Driver:
package dio.me.modulo02.dominando_a_linguagem_de_programacao_java._aprendendo_a_sintaxe_do_java.metodos;
//Classe alterada por Kleiton Aparecido
//https://www.linkedin.com/in/kleiton-aparecido/
public class Usuario {
public static void main(String[] args) {
SmartTv tv = new SmartTv();
System.out.println("Valores padrão dos estados da SmarTV:");
System.out.println("tv.estaLigada: " + tv.estaLigada());
System.out.println("tv.canal: " + tv.getCanal());
System.out.println("tv.volume: " + tv.getVolume());
tv.trocarCanal(120);
System.out.println("tv.trocarCanal(120): " + tv.getCanal());
System.out.println();
tv.trocarCanal(50);
System.out.println("tv.trocarCanal(100): " + tv.getCanal());
System.out.println();
System.out.printf("%n%n%s%n", "Girando o botão volume 150 vezes para provar"
+ " que o método de validação não deixa ultrapassar do volume máximo de 100");
for (int volume = 1; volume <= 150; volume++) {
tv.aumentarVolume();
}
System.out.println("Botão volume girado 150 vezes mas com valor máximo de 100 respeitado");
System.out.println("FOR executado 150 vezes --> tv.aumentarVolume()");
System.out.println();
System.out.println("Validando limite de canais até canal de número 100");
System.out.printf("%s%n", "Apertando o botão de canais 150 vezes para provar"
+ " que o método de validação não deixa ultrapassar o canal de número máximo de 100");
for (int canal = 1; canal <= 100; canal++) {
tv.aumentarCanal();
}
System.out.println("Botão canal pressionado 150 vezes mas com valor máximo respeitado de até 100 canais");
System.out.println("FOR executado 150 vezes --> tv.aumentarCanal(): " + tv.getVolume());
}
}
Classe do objeto SmartTV
package dio.me.modulo02.dominando_a_linguagem_de_programacao_java._aprendendo_a_sintaxe_do_java.metodos;
// Classe alterada por Kleiton Aparecido
// https://www.linkedin.com/in/kleiton-aparecido/
public class SmartTv {
private boolean ligada = false;
private static int canal = 1;
private static int volume = 25;
// uso modificador de acesso static para utilizar em todos os métodos da classe
private static int aumentaOuBaixaVolume;
private static int proximoCanalOuAnterior;
public void ligar() {
ligada = true;
}
public boolean estaLigada() {
return ligada;
}
public void desligar() {
ligada = false;
}
public int getCanal() {
return canal;
}
public int getVolume() {
return canal;
}
// sobrecarga de método
private void validarCanal(int canal) {
if (canal >= 0 && canal <= 100) {
SmartTv.canal = canal;
}
}
// sobrecarga de método
private void validarCanal() {
if (proximoCanalOuAnterior >= 1 && proximoCanalOuAnterior <= 100) {
canal = proximoCanalOuAnterior;
exibeCanalOuVolume(canal);
}
}
public void trocarCanal(int novoCanal) {
validarCanal(novoCanal);
}
public void aumentarCanal() {
/* variável static proximoCanalOuAnterior para aplicar lógica de não precisar passar o valor por parâmetro
tornando o método mais coeso */
proximoCanalOuAnterior = canal;
proximoCanalOuAnterior++;
validarCanal();
}
private void exibeCanalOuVolume(int valorExibicao) {
System.out.println(valorExibicao);
}
public void diminuirCanal() {
// variável static proximoCanalOuAnterior para aplicar lógica de não precisar passar o valor por parâmetro
proximoCanalOuAnterior = canal;
proximoCanalOuAnterior--;
validarCanal();
}
// método criado pensando na reutilização de código, seguindos boas práticas de Programação Orientada a Objetos
private void validarVolume() {
if (aumentaOuBaixaVolume >= 0 && aumentaOuBaixaVolume <= 100) {
volume = aumentaOuBaixaVolume;
exibeCanalOuVolume(volume);
}
}
public void aumentarVolume() {
aumentaOuBaixaVolume = volume;
aumentaOuBaixaVolume++;
validarVolume();
}
public void diminuirVolume() {
aumentaOuBaixaVolume = volume;
aumentaOuBaixaVolume--;
validarVolume();
}
}