Como programar neste caso?

5 respostas
Filipe_A

Bom dia,

Estou desenvolvendo uma aplicação em Java :shock: … E me deparei com uma situção na qual não sei a melhor forma de ser realizada.

Como criar classes que possuem em seus atributos vários tipos, por exemplo:

Escolaridade(Analfabeto, Superior, 1°Grau Completo. 2°Grau Completo…etc)

ou, em um caso especifico também: Em uma cultura de Milho, onde se quer saber, Qtd. utilizado na propriedade, Qtd. para Vendas, etc…

ou, numero de pessoas que residem em uma casa dividindo-as em faixa etárias de idade. por exemplo, entre 0 e 14, 15 e 65…

Isto será feito pra Web…De inicio criei um atributo pra cada coisa, no caso da idade:

...
	int totalFamiliaResImovel;
	int numHomFam_14OuMenos;
	int numHomFam_14E65;
	int numHomFam_Mais65;
	int numMulFam_14OuMenos;
	int numMulFam_14E65;
	int numMulFam_Mais65;
...

Sigo desta forma mesmo, ou existe algo mais interessante a ser feito ?

Obrigado,
Filipe Santana.

5 Respostas

Carlos_ds_jar

Filipe A.:
Bom dia,

Estou desenvolvendo uma aplicação em Java :shock: … E me deparei com uma situção na qual não sei a melhor forma de ser realizada.

Como criar classes que possuem em seus atributos vários tipos, por exemplo:

Escolaridade(Analfabeto, Superior, 1°Grau Completo. 2°Grau Completo…etc)

ou, em um caso especifico também: Em uma cultura de Milho, onde se quer saber, Qtd. utilizado na propriedade, Qtd. para Vendas, etc…

ou, numero de pessoas que residem em uma casa dividindo-as em faixa etárias de idade. por exemplo, entre 0 e 14, 15 e 65…

Isto será feito pra Web…De inicio criei um atributo pra cada coisa, no caso da idade:

...
	int totalFamiliaResImovel;
	int numHomFam_14OuMenos;
	int numHomFam_14E65;
	int numHomFam_Mais65;
	int numMulFam_14OuMenos;
	int numMulFam_14E65;
	int numMulFam_Mais65;
...

Sigo desta forma mesmo, ou existe algo mais interessante a ser feito ?

Obrigado,
Filipe Santana.


Na sua situação eu faria um especificação de tipo, por exemplo:

public class Pessoa{}
public class PreAdolescente extends Pessoa{} //De 0 a 14
public class OutroTipo extends Pessoa{} //De 15 a 65

Era isso que queria saber?

cbs_sp

Uma alternativa é usar enum:

public enum Escolaridade {
	ANALFABETO, ENSINO_FUNDAMENTAL, ENSINO_MEDIO, GRADUACAO,
		POS_GRADUACAO, MESTRADO, DOUTORADO 
}
public class Funcionario {
	String nome;
	Escolaridade escolaridade;
	
	public Funcionario(String nome, Escolaridade escolaridade) {
		this.nome = nome;
		this.escolaridade = escolaridade;
	}

       //Gets & Sets
}
public class TesteEnum {
	
	static Funcionario meuFuncionario = new Funcionario("CARLOS", Escolaridade.MESTRADO);
	
	public static void main(String[] args) {
		System.out.println("Contratei o funcionário: "+meuFuncionario.nome+", escolaridade: "+meuFuncionario.escolaridade+".");
	}
}

Abs,

Filipe_A

Obrigado cbs_sp, tinha pensando nisto mesmo em usar Enum…

Obrigado Carlos… não era bem isso que eu precisava, mas valeu pela tentativa :smiley:

É acho que vai de Enum mesmo né, será que existe outra forma?

Mas já foi de grande ajuda…
Filipe Santana.

ViniGodoy
Filipe A.:
É acho que vai de Enum mesmo né, será que existe outra forma?

Enum é uma forma, e a melhor. Mas você vai encontrar no Java outra forma, mais antiga, menos segura.
Nada mais é do que criar uma variável int, e uma série de statics com os valores.

public static final int ANIMAL_CACHORRO = 1;
public static final int ANIMAL_GATO = 2;
public static final int ANIMAL_PERIQUITO = 3;
public static final int ANIMAL_PAPAGAIO = 4;

public int animal = ANIMAL_PAPAGAIO;

Note que é menos seguro pois o usuário poderia inserir um valor int fora da enumeração como parâmetro.

cbs_sp

Não há de que,

Abs,

Criado 6 de agosto de 2010
Ultima resposta 9 de ago. de 2010
Respostas 5
Participantes 4