utilitários marco antonio. enum como o nome sugere, é uma enumeração de opções para uma...
TRANSCRIPT
UtilitáriosMarco Antonio
Enum• Como o nome sugere, é uma enumeração
de opções para uma determinada situação• A principal vantagem é limitar as opções
para o programador em atributos que fazem parte de um domínio.– Ex. sexo só pode ser masculino ou feminino– Dias úteis são seg, ter, qua, qui, sex
Tipo de Pessoapackage com.javabasico.enumeracoes;
public enum TipoDePessoa {
FISICA, JURIDICA;
}
Pessoapublic class Pessoa {
private String nome;
private String endereco;
private String telefone;
private TipoDePessoa tipoDePessoa;
}
Testepackage net.javabasico.enumeracoes;
public class TesteDaPessoa { public TesteDaPessoa() { Pessoa p = new Pessoa();\ p.setNome("Marco"); p.setEndereco("Meu Endereço"); p.setTelefone("Meu Telefone"); p.setTipoDePessoa(TipoDePessoa.FISICA); System.out.println("Tipo: " + p.getTipoDePessoa()); }
public static void main(String[] args) { new TesteDaPessoa(); }}
Nova versão do tipo• Podemos informar valores personalizados
para as opções de um enum.
Tipopackage net.javabasico.enumeracoes;
public enum TipoDePessoa { FISICA("Pessoa Física"), JURIDICA("Pessoa Jurídica"); private final String tipo;
private TipoDePessoa(String tipo) { this.tipo = tipo; }
public String getTipo() { return tipo; }}
Novo teste• Agora podemos recuperar o valor
personalizado do nosso enum.
Novo testepackage net.javabasico.enumeracoes;
public class TesteDaPessoa { public TesteDaPessoa() { Pessoa p = new Pessoa(); p.setNome("Marco"); p.setEndereco("Meu Endereço"); p.setTelefone("Meu Telefone"); p.setTipoDePessoa(TipoDePessoa.FISICA); System.out.println("Tipo: " + p.getTipoDePessoa().getTipo()); }
public static void main(String[] args) { new TesteDaPessoa(); }}
Enum Sexo• Crie o enum Sexo e adicione esse atributo
na classe pessoa.
Enum DiaDaSemana• Vamos criar o enum DiaDaSemana.
DiaDaSemanapackage com.javabasico.enumeracoes;
public enum DiaDaSemana { SEGUNDA("Segunda"), TERCA("Terça"), QUARTA("Quarta"), QUINTA("Quinta"),
SEXTA( "Sexta"), SABADO("Sábado"), DOMINGO("Domingo"); private final String dia;
private DiaDaSemana(String dia) { this.dia = dia; }
public String getDia() { return dia; }}
Iterando entre os dias da semana• Podemos recuperar os valores do enum, por
exemplo, para montar uma combobox.
TesteDiasDaSemanapackage com.javabasico.enumeracoes;
public class TesteDiasDaSemana { public static void main(String[] args) { for (DiaDaSemana d : DiaDaSemana.values()) { System.out.println("Valor -> " + d.getDia()); System.out.println("Nome -> " + d.name()); System.out.println("Índice -> " + d.ordinal()); System.out.println("----------------"); } }}
Calendário• Crie a classe Calendario com os atributos
DiaDaSemana (que já existe), mês e dia do mês (esses dois últimos ainda devem ser criados).– Considere o mês comercial de 30 dias.
• Esse calendário deve ter um método imprimeData, com a data atual recuperada através dos enum’s.
Assertion• Mecanismo para tratar exceções em
situações específicas. • Um asserção é formada por uma condição
booleana que quando verdadeira indica um bug.
• As asserções não são identificadas pelo compilador, deve ser acionado explicitamente.
Fluxo• ContaCorrente conta = null; • // ... • // recupera a conta do banco • // ... • // verifique se o objeto está carregado
corretamente• assert conta != null;
Detalhamento• Na última linha, a conta não pode ser null.• Caso seja, indica um bug da aplicação.• Lembre-se: a aplicação funcionará
corretamente, pois por padrão o compilador não vê as asserções.
Teste public class TesteDaAssercao { public TesteDaAssercao() { assert testeFalso(); System.out.println("1"); assert testeVerdadeiro(); System.out.println("2"); }
private boolean testeVerdadeiro() { return true; }
private boolean testeFalso() { return false; }
public static void main(String[] args) { new TesteDaAssercao(); }}
Compilação
Execução normal
Execução com assertion enabled• Somente agora, depois de usar o parâmetro
–ea você pode verificar o erro da asserção