Iniciante - Definir um objeto como tipo de classe

8 respostas
bustamante

Olá Pessoal, estou começando no Java SE OO.
Tenho uma dúvida básica, como faço pra definir que um objeto é do tipo de uma classe ?
Detalhes:

Segue abaixo o diagrama de classes.
[img]http://img812.imageshack.us/img812/3990/capt1t.png[/img]

Observamos que temos uma superclasse pessoa, e que vendedor e cliente são heranças (extens atributos e métoidos).

A minha dúvida é como eu faço pra definir que pessoa1 é um vendedor, e pessoa2 é um cliente ?
E também se a pessoa for vendedor e/ou cliente apenas executar seus métodos.

Veja os código (detalhe sou iniciante se tiver alguma coisa errada, avisa-me)

SuperMercado.java - Principal
package supermercado;

public class SuperMercado {
    public static void main(String[] args) {
           //Como eu faço pra criar um objeto Pessoa e seu tipo()vendedor ou cliente  ? 
    }
}
Pessoa.java
package supermercado;

public class Pessoa {
    public String NomeCompleto,Nacionalidade,UF,Sexo,DocumentoIdentidade,Profissao,Endereco,Cidade,Estado,Email;
    public int DataNascimento,CPF,Numero,CEP,Telefone;
}
Vendedor.java
package supermercado;

public class Vendedor extends Pessoa{
    private int idVendedor;
    private String Setor;
    void Vendedor (){
        System.out.println("\nVendedor !");//Coloquei esse método apenas pra testar na Principal.java se a Pessoa X é um Vendedor();
    }
}
Cliente.java
package supermercado;

public class Cliente extends Pessoa{
    private int idCliente;
    private String Compras;
    void Cliente (){
        System.out.println("\nCliente ! "); //Coloquei esse método apenas pra testar na Principal.java se a Pessoa X é um Cliente();
    }
}

--
OK É isso, obrigado a todos! :wink:

8 Respostas

nel
Cliente cliente = new Cliente();

Temos um cliente ! :slight_smile:
A diferença é que como ele é filho da classe Pessoa, terá acesso aos recursos que lhe são acessíveis por herança, obviamente (private, por exemplo, não é acessível a ninguém fora da classe).

Era isso?

douglaskd

exemplo:

void inserirPessoa(Pessoa pessoa){

if(pessoa instance of Vendedor){
//é um vendedor...
}
else if(pessoa instance of Cliente){
//é um cliente
}

}

na hora de criar Cliente ou Vendedor você faz assim:

Pessoa Vendedor = new Vendedor();
Pessoa Cliente = new Cliente();

você usa o instance of para saber qual a classe do objeto

era essa sua dúvida ?

bustamante

nel:
Cliente cliente = new Cliente();

Temos um cliente ! :slight_smile:
A diferença é que como ele é filho da classe Pessoa, terá acesso aos recursos que lhe são acessíveis por herança, obviamente (private, por exemplo, não é acessível a ninguém fora da classe).

Era isso?


Obrigado amigo !

bustamante
douglaskd:
exemplo:
void inserirPessoa(Pessoa pessoa){

if(pessoa instance of Vendedor){
//é um vendedor...
}
else if(pessoa instance of Cliente){
//é um cliente
}

}

na hora de criar Cliente ou Vendedor você faz assim:

Pessoa Vendedor = new Vendedor();
Pessoa Cliente = new Cliente();

você usa o instance of para saber qual a classe do objeto

era essa sua dúvida ?


Também funcionou amigo !
Obrigado ! Abraço :D

wanborpes

@bustamante

Voce pode fazer assim usando Get e Set.

package Supermercado;

public class SuperMercado {

	public static void main(String[] args) {
	
		//Declarando meu objeto Pessoa1
		Vendedor pessoa1 = new Vendedor();
		
		//Atribuindo os valores para a classe Vendedor extends Pessoa
		pessoa1.setIdVendedor(999);
		pessoa1.setSetor("Departamento de Vendas");
		
		//Atribuindo os valores para a classe Pessoa
		pessoa1.setNomeCompleto("João das Couves");
		pessoa1.setNacionalidade("Brasileira");
		pessoa1.setUf("DF");
		
		
		//Declarando meu objeto Pessoa2
		Cliente pessoa2 = new Cliente();
				
		//Atribuindo os valores para a classe Cliente extends Pessoa
		pessoa2.setIdCliente(45455);
		pessoa2.setCompras("151225");
				
		//Atribuindo os valores para a classe Pessoa
		pessoa2.setNomeCompleto("João das Couves");
		pessoa2.setNacionalidade("Brasileira");
		pessoa2.setUf("DF");	

	}

}
bustamante

wanborpes:
@bustamante

Voce pode fazer assim usando Get e Set.

package Supermercado;

public class SuperMercado {

	public static void main(String[] args) {
	
		//Declarando meu objeto Pessoa1
		Vendedor pessoa1 = new Vendedor();
		
		//Atribuindo os valores para a classe Vendedor extends Pessoa
		pessoa1.setIdVendedor(999);
		pessoa1.setSetor("Departamento de Vendas");
		
		//Atribuindo os valores para a classe Pessoa
		pessoa1.setNomeCompleto("João das Couves");
		pessoa1.setNacionalidade("Brasileira");
		pessoa1.setUf("DF");
		
		
		//Declarando meu objeto Pessoa2
		Cliente pessoa2 = new Cliente();
				
		//Atribuindo os valores para a classe Cliente extends Pessoa
		pessoa2.setIdCliente(45455);
		pessoa2.setCompras("151225");
				
		//Atribuindo os valores para a classe Pessoa
		pessoa2.setNomeCompleto("João das Couves");
		pessoa2.setNacionalidade("Brasileira");
		pessoa2.setUf("DF");	

	}

}

Tudo bem amigo esse é uma boa !
obrigado!

SierraEx

Só uma dúvida.

Você criou void Cliente() e void Vendedor() como métodos ou como construtores?

Porque se criou com a intenção de serem construtores, eles não vão ser, pois construtores não possuem retorno, e void é um tipo de retorno.

Caso queria criar construtores, utilize(ou não) um modificador de acesso (public, private, protected, ou nenhum para indicar default/package) seguido pelo nome da classe

public Cliente() {
//código
}

se fizer

public void Cliente() {
//código
}

Você, na verdade, está definindo um método com o mesmo nome da classe, e não um construtor

bustamante

Eu fiz na maneira correta usando pra ser um construtor
mesmo assim, obrigado abraço!

Criado 5 de setembro de 2012
Ultima resposta 6 de set. de 2012
Respostas 8
Participantes 5