Problemas com contrutor e instanciação de classes

6 respostas
M
public class Utilitario extends Cliente{
	
	//Cliente cc = new Cliente();
	//classe apenas com metodos que retornam valores
	public void receberDados(){
             [code] new Cliente(super.entradaString("Nome do Cliente: "),super.entradaString("CEP: "),super.entradaString("Cidade: "),super.entradaString("Estado: "));	
	}
	
}

minha classe cliente

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Cliente{
	private String nome="";
	private String cep="";
	private String cidade="";
	private String estado="";
	
	//contrutor default
	public Cliente(){}
	
	//metodo construtor
	public Cliente(String nome,String cep,String cidade,String estado){
		this.nome=nome;
		this.cep=cep;
		this.cidade=cidade;
		this.estado=estado;
	}
	
    //metodos get e set	
	public String getNome(){
		return nome;
	}
	public void setNome(String nome){
		this.nome=nome;
	}
	public String getCep(){
		return cep;
	}
	public void setCep(String cep){
		this.cep=cep;
	}
	public String getCidade(){
		return cidade;
	}
	public void setCidade(String cidade){
		this.cidade=cidade;
	}
	public String getEstado(){
		return estado;
	}
	public void setEstado(String estado){
		this.estado=estado;
	}
		
	// metodo imprime estado
	public void imprimirCliente(){
		System.out.println("Nome...: "+getNome());
		System.out.println("Cep ...: "+getCep());
		System.out.println("Cidade.: "+getCidade());
		System.out.println("Estado.: "+getEstado());
	}
	
	public String entradaString(String label){
		String frase="";
		BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
		System.out.print(label);
		 try{
		   frase=entrada.readLine();	
		 }catch(IOException error){
		 	System.out.println("Error...");
		 }
		 return(frase);
	}
}
public class executaVenda{
	    public static void main(String args[]){
	    Cliente cp = new Cliente();
        Utilitario ult = new Utilitario();
        ult.receberDados();
        cp.imprimirCliente();  //ele imprime em Branco não imprime os dados do cliente
     
}
}

na hora de imprimir ele imprime errado, ele imprime sem os dados, qual será meu erro?

6 Respostas

mauqz

Já tentou “ult.imprimirCliente();”?
Seu cliente não está sendo usado, apenas a classe que extende dele.

M

mas como eu faria, tipow para receber os dados ne uma classa tipo na Ultilitario, e imprimir na classe Cliente, pois eu queria imprimir a partir da classe clienteeeee

peron

Caro,

que tal começarmos com um pouco de Orientação a Objetos?

Sua classe Utilitario extende a classe Cliente! Utilitário não e um cliente especializado, é?

Depois, acho que você trocou algumas coisas… sua entrada de dados nao deveria estar na classe UTILITARIO?

então, ficaria algo como:

public class Cliente{
	private String nome="";
	private String cep="";
	private String cidade="";
	private String estado="";
	
	//contrutor default
	public Cliente(){}
	
	//metodo construtor
	public Cliente(String nome,String cep,String cidade,String estado){
		this.nome=nome;
		this.cep=cep;
		this.cidade=cidade;
		this.estado=estado;
	}
	
    //metodos get e set	
	public String getNome(){
		return nome;
	}
	public void setNome(String nome){
		this.nome=nome;
	}
	public String getCep(){
		return cep;
	}
	public void setCep(String cep){
		this.cep=cep;
	}
	public String getCidade(){
		return cidade;
	}
	public void setCidade(String cidade){
		this.cidade=cidade;
	}
	public String getEstado(){
		return estado;
	}
	public void setEstado(String estado){
		this.estado=estado;
	}
		
	// metodo imprime estado
	public void imprimirCliente(){
		System.out.println("Nome...: "+getNome());
		System.out.println("Cep ...: "+getCep());
		System.out.println("Cidade.: "+getCidade());
		System.out.println("Estado.: "+getEstado());
	}
}

e sua classe utilitário:

public class Utilitario {
	
	public String entradaString(String label) {
		String frase="";
		BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
		System.out.print(label);
		 try{
		   frase=entrada.readLine();	
		 }catch(IOException error){
		 	System.out.println("Error...");
		 }
		 return(frase);
	}

	//Cliente cc = new Cliente();
	//classe apenas com metodos que retornam valores
	public Cliente criarCliente(){
             Cliente cc = new Cliente();
             cc.setNome(entradaString("Nome do Cliente: "));
             cc.setCEP(entradaString("CEP: "));
             //e por ai vai...
             return cc;
	}
}

e nossa classe de teste, seria:

public class App {

   public static void main(String args[]) {
           Utilitario util = new Utilitario();
           Cliente c = util.criarCliente();
           c.imprimirCliente();
   }
}

Muitas outras coisas poderiam ser feitas para melhorar isso, como implementar o toString da sua Classe cliente, mas se é essa a estrutura que vc queria, ta aí.

falou

potter

cara eu numca vi esse modo de vazer eu faço o seguinte (Se for no NetBeas < que tenhu certeza)

String nome;

String cep;

String cidade;

String estado;

Depois eu aperto o Botao direito > Refactor > Introduce Field > Marca todos os quadradinhos de set e gets e comfirma

sidney.tavares

Bom dia a todos,

Sou iniciante, é um dos meus primeiros posts aqui, e gostaria de esclarecer uma dúvida, como foi mencionado o netbeans, que eu também uso, queria saber se é a melhor maneira para se aprender usando este software, pois muita coisa ele faz sem que eu tenha que digitar nenhuma linha, o que é prático, mas acredito que seja para quem já conhece, para nós, iniciantes, é recomendado?

M
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;



public class Utilitario{
	ClientePF cpfi = new ClientePF();
	ClientePJ cpju = new ClientePJ();
	Utilitario util = new Utilitario();
	
	public void receberDadosPF(){
       new ClientePF(util.entradaString("Nome do Cliente: "),util.entradaString("CEP: "),util.entradaString("Cidade: "),util.entradaString("Estado: "),util.entradaString("CPF: "),5);	
    }
    public void receberDadosPJ(){
       new ClientePJ(util.entradaString("Nome do Cliente: "),util.entradaString("CEP: "),util.entradaString("Cidade: "),util.entradaString("Estado: "),util.entradaString("Cnpj: "));	
    }
    public boolean validarCpf(String cpfDigitado){
    	return(cpfDigitado.equals(cpfi.getCpf()));
    }
    public boolean validarCnpj(String cnpjDigitado){
    	return(cnpjDigitado.equals(cpju.getCnpj()));
    }
    public boolean validarEstado(String estadoDigitado){
    	if(estadoDigitado.length()==2){
    		return true;
    	}else{
    		return false;
    	}
    }
    
    public String entradaString(String label){
		String frase="";
		BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
		System.out.print(label);
		 try{
		   frase=entrada.readLine();	
		 }catch(IOException error){
		 	System.out.println("Error...");
		 }
		 return(frase);
	}
    public void menu(){
	    System.out.println("------Menu de opções-----");
	    System.out.println(" 1 - Cadastrar Cliente");
	    System.out.println(" 2 - Cadastrar Produto");
	    System.out.println(" 3 - Efetuar Venda");
	    System.out.println(" 4 - Exibir Relatórios");
	    System.out.println(" 5 - Sair");
    }
    public void subMenu(){
    	System.out.println("----Exibir Relatórios----");
    	System.out.println("1-Exibir lista de Clientes");
    	System.out.println("1-Exibir lista de Produtos");
    	System.out.println("1-Exibir lista de Vendas");
    	System.out.println("1-Exibir lista de clientes de um estado"); 	
    }
    
    public Cliente criarClientePF(){  
             cpfi.setNome(entradaString("Nome do Cliente: "));  
             cpfi.setCep(entradaString("CEP: "));
             cpfi.setCidade(entradaString("Cidade: "));
             cpfi.setEstado(entradaString("Estado: "));
             cpfi.setCpf(entradaString("Cpf: "));
             cpfi.setLimite(0);
             return cpfi;  
    }  
    public Cliente criarClientePJ(){  
             cpju.setNome(entradaString("Nome do Cliente: "));  
             cpju.setCep(entradaString("CEP: "));
             cpju.setCidade(entradaString("Cidade: "));
             cpju.setEstado(entradaString("Estado: "));
             cpju.setCnpj(entradaString("Cnpj: "));
             return cpju;  
    } 	
}
public class ClientePF extends Cliente{
	private String cpf="";
	private double limite=0;
	
	//contrutor ClientePF
	public ClientePF(){	}
	public ClientePF(String nome,String cep,String cidade,String estado,String cpf,double limite){
		super(nome,cep,cidade,estado);
		this.cpf=cpf;
		this.limite=0;
	}
	public String getCpf(){
		return cpf;
	}
	public void setCpf(String cpf){
		this.cpf=cpf;
	}
	public double getLimite(){
		return limite;
	}
	public void setLimite(double limite){
		this.limite=limite;
	}
	
	//imprimir clientePF	
	public void imprimirCliente(){
		super.imprimirCliente();
		System.out.println("CPF....: "+getCpf());
		System.out.println("Limite.: "+getLimite());
	}	
}
public class ClientePJ extends Cliente{
	private String cnpj="";
	
	//Construtor ClientePJ
	public ClientePJ(){
	}
	public ClientePJ(String nome,String cep,String cidade,String estado,String cnpj){
		super(nome,cep,cidade,estado);
		this.cnpj=cnpj;
	}
	public String getCnpj(){
		return cnpj;
	}
	public void setCnpj(String cnpj){
		this.cnpj=cnpj;
	}
	
	//imprimir clientePJ
	public void imprimirCliente(){
		super.imprimirCliente();
		System.out.println("CNPJ...: "+getCnpj());
	}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Cliente{  
	private String nome="";
	private String cep="";
	private String cidade="";
	private String estado="";
	
	//contrutor default
	public Cliente(){}
	
	//metodo construtor
	public Cliente(String nome,String cep,String cidade,String estado){
		this.nome=nome;
		this.cep=cep;
		this.cidade=cidade;
		this.estado=estado;
	}
	
    //metodos get e set	
	public String getNome(){
		return nome;
	}
	public void setNome(String nome){
		this.nome=nome;
	}
	public String getCep(){
		return cep;
	}
	public void setCep(String cep){
		this.cep=cep;
	}
	public String getCidade(){
		return cidade;
	}
	public void setCidade(String cidade){
		this.cidade=cidade;
	}
	public String getEstado(){
		return estado;
	}
	public void setEstado(String estado){
		this.estado=estado;
	}
		
	// metodo imprime estado
	public void imprimirCliente(){
		System.out.println("Nome...: "+getNome());
		System.out.println("Cep ...: "+getCep());
		System.out.println("Cidade.: "+getCidade());
		System.out.println("Estado.: "+getEstado());
	}
	

}
public class Teste{
	public static void main(String[]args){
		Utilitario util = new Utilitario();
		//criar cliente PF
		ClientePF cpfi = util.criarClientePF(); // aki ele nao cria o cliente	
		
	
	}
}

* O problema é que eu tenho 2 tipos de clientes (Pf e Pj) que herdam da classe cliente principal, eu gostaruia de sabr como faço uma so entrada de dados no ultilitario para os dois clientes
*Como faço para crir um cliente principal, pois do jeito que vc flaou nao deu, axo q nao estou acertando

Criado 24 de novembro de 2009
Ultima resposta 25 de nov. de 2009
Respostas 6
Participantes 5