Dúvida, melhores prática de programação

6 respostas
Rocklee6544

[color=blue]Estou seguindo a apostila de curso chamada JavaStart
Ao fazer o último exercício do módulo 4 me veio algumas coisas na cabeça.

Sabe aquela idéia que vc deveria ter pensado desde o início ou pensou e ficou na dúvida, enfim acabou não fazendo.
Pois bem cheguei a solução abaixo.

Pode ser considerada boa creio eu.

logo no ex11 tivemos que criar uma classe Pessoa até ai tudo bem, eu fiz mas fiquei com uma pequena dúvida.
É melhor criar os métodos de manutenção do objeto em sua própria classe ou fora?

Como fiquei na dúvida fiz fora(porque pensei na situação alteração,exclusão,inserção e seleção), mas percebi agora no 17 que colocando o métodos dentro da classe o aproveitamento de código ficou muito melhor.[/color]

[color=red]fiz uma nova classe pessoa que inclui um método genérico chamado cadastrar, este serve para aluno e para qualquer outra classe que deriva de pessoa.a nova classe ficou assim:[/color]
package Modulo4JavaStart;

import java.util.Scanner;

public class Pessoa {
 private String nome;
 private double cpf;
 private int idade;
 private Endereco end;
 public Pessoa(String nome,int idade,double cpf){
	 this.nome=nome;
	 this.idade=idade;
	 this.cpf=cpf;
 }
 public Pessoa(){
	 
 }
 public void setNome(String nome){
	 this.nome=nome;
 }
 public String getNome(){
	 return this.nome;
 }
 public void setIdade(int idade){
	 this.idade=idade;
 }
 public int getIdade(){
	return this.idade;
 }
 public  void setCpf(double cpf){
	 this.cpf=cpf;
 }
 public double getCpf(){
	 return this.cpf;
 }
 public void setEnd(Endereco e){
	 this.end=e;	 
 }
 public void cadastro(){
	 char resp;
	 Scanner str=new Scanner(System.in);
	 System.out.println("Qual o nome");
	 setNome(str.nextLine());
	 System.out.println("Qual o idade");
	 setIdade(str.nextInt());
	 System.out.println("Qual o cpf");
	 setCpf(str.nextDouble());
	 System.out.println("Desejo cadastrar o endereço sim/não:");
	 resp=str.nextLine().toLowerCase().charAt(0); 
	if(resp=='s'){
			 Endereco end=new Endereco();
			 System.out.println("Qual o Estado");
			 end.setEstado(str.nextLine());
			 System.out.println("Qual a cidade");
			 end.setCid(str.nextLine());
			 System.out.println("Qual o bairro");
			 end.setBairro(str.nextLine());
			 System.out.println("Qual o rua");
			 end.setRua(str.nextLine());
			 System.out.println("Qual o cep");
			 end.setCep(str.nextDouble());
			 System.out.println("Qual o telefone");
			 end.setTel(str.nextDouble());
			 setEnd(end);
	}	
	
 }
}
[color=red]Posso considerar esta prática de colocar os métodos referente a manutenção do objeto dentro dele mesmo como uma boa prática de programação ou seria melhor ter feito uma classe cadastro genérica separada?[/color]

[color=blue]creio que para realizar a manutenção dos dados seja até melhor criar uma classe cadastrar.
Genérica o suficinete para poder cadastrar qualquer objeto derivado de pessoa.(cliente,funcionário,não importa sendo uma pessoa).
Acrescentando a opção de fisica o júridica, mas talvez isso seja melhor implementado nas classes filhas.
funcionario,cliente, estudante.

JAVA é uma linguagem muito legal e divertida que lhe proporciona n vantagens, mas o que realmente me fascina é questão da orientação.
Esse conceito que lhe permite propor soluções realmente inteligentes que jamais uma linguagem estruturada poderia proporcionar com tamanha versatilidade.
Enfim a herança ajuda a reduzir o código aproveitando classes genéricas.
O polimorfismo ajuda a deixar o código flexível o suficiente para que o mesmo se torne genérico o suficiente para ser reaproveitado.
Tudo isso junto maximiza o desempenho do programa e minimiza a demanda de tempo, tornando assim a criação de um software uma tarefa menos árdua.[/color]

6 Respostas

Sumerrew

deleção auhahuauhahua

muriloazs

Rocklee6544, não é uma boa prática de programação. sabe por que?

Raramente você irá utilizar esses métodos para ler dados. Imagine um sistema um pouco maior, os dados podem vir de um formulário, banco de dados, da internet, uma infinidade de lugares. Por isso não se deve misturar as coisas.

A leitura de dados é algo específico da aplicação e por isso deve ser tratada em outra classe.

Fazendo dessa maneira, amadurece o conceito de encapsulamento:

Rocklee6544

muriloazs , muito obrigado pela dica :smiley:

O certo seria eu ter mantido minha classe cadastro então e ter deixado ela mais genérica?
No caso o método cadastrar receberia um parâmetro do tipo pessoa.
Qualquer coisa se precisar de ajuda e eu souber :roll: pode contar comigo, valeu.

muriloazs

Exatamente, crie uma classe Form ou cadastro, o que achar melhor. Ela servirá apenas para manipular os dados.

Esse método cadastrar que você diz é da classe Pessoa?
Lembre-se que você deve utilizar essas classes apenas para guardar os dados, no caso, da Pessoa.

Aliás, aconselho que dê uma lida uma lida sobre Pojo.
http://pt.wikipedia.org/wiki/Plain_Old_Java_Object

Rocklee6544

muriloazs , então cara desculpa a demora tive que ir pro curso.
Valeu msm, o cadastro é da pessoa sim.

Mas esta é uma classe genérica no programa.

outras a extendem exemplo:aluno e funcionário.
Todos tem as caracteristica básica do primeiro.(pessoa)

O método cadastrar ,pensei em colocar o método recebendo um objeto do tipo pessoa, sendo assim posso receber qualquer objeto derivado da mesma.
(básicamente objetos que passarem no teste é um).

R

É só pensar que quem tem o interesse de fazer o cadastro de uma pessoa vai ser um usuário do sistema, e não quem criou a classe. Você, programador, criou esta classe para alguém utilizá-la, certo?

Por isso não faz sentido deixar o cadastro dentro da sua classe Pessoa. Se o usuário quisesse mudar alguma coisa no modo do cadastro (por exemplo, ele não precisa mais do telefone), ele precisaria entrar em contato com você só pra você mudar a forma com que ele cadastra as pessoas porque ele não tem o controle disso, sendo que o óbvio seria ele mesmo alterar o que quer na forma que ele precisa trabalhar.

Abraço!

Criado 19 de abril de 2010
Ultima resposta 19 de abr. de 2010
Respostas 6
Participantes 4