Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gremio10

OOP java

Recommended Posts

Boa noite, estou estudando java na faculdade e tenho um projeto de venda de carros e cadastro de clientes e funcionários.

 

Eu criei a base para o trabalho, mas tenho dúvidas de como prosseguir, já que desenvolvo em PHP, e a lógica para inserir valores em arrays e BD são diferentes.

 

Minha maior dúvida é: Como faço para cadastrar os clientes e mante-los em uma hierarquia de classes, por exemplo:

 

Pessoa

|

Cliente

| |

ClienteCPF ClienteCNPJ

Devo criar um ArrayList em cada uma das classes filhas (ClienteCPF, ClienteCNPJ) para armazenar os valores vindos da Main?

Ou devo fazer isso direto na Main? Mas se tiver que ser na Main, qual seria a necessidade das classes filhas?

 

Aonde devo salvar as informações que eu informar no console na minha Main?

 

Segue abaixo o que eu tenho pronto:

 

Pessoa:

public class Pessoa
{
	protected String name, address, email, phone;
	
	/**
	 * Construtor que pega os valores em comum
	 * das outras classes
	 * 
	 * @param name String nome da pessoa
	 */
	public Pessoa( String name, String address, String email, String phone )
	{
		this.name = name;
		this.address = address;
		this.email = email;
		this.phone = phone;
	}
	
	/**
	 * Retorna o nome da pessoa
	 * 
	 * @return retorna o valor do name
	 */
	public String getName()
	{
		return this.name;
	}
	
	public String getAddress() {
		return address;
	}

	public String getEmail() {
		return email;
	}

	public String getPhone() {
		return phone;
	}

	public String toString()
	{
		return "Nome: " + this.getName() + "\n" +
			   "Endereço: " + this.getAddress()  + "\n" +
			   "E-mail: " + this.getEmail() + "\n" +
			   "Telefone: " + this.getPhone() + "\n"
			   ;
	}
}
Cliente:

import java.util.Date;

public class Cliente extends Pessoa
{
	protected Date newRegister;
	
	public Cliente( String name, String address, String email, String phone )
	{
		super( name, address, email, phone );
	}
}
ClienteCpf:

import java.util.Date;

public class ClienteCpf extends Cliente
{
	protected int cpf, rg;
	
	/**
	 * Construtor para cadastrar novo cliente Fisico
	 * 
	 * @param name String nome do cliente
	 * @param address String endereço do cliente
	 * @param email String email do cliente
	 * @param phone String telefone do cliente
	 * @param cpf int CPF do cliente
	 * @param rg int RG do cliente
	 */
	public ClienteCpf( String name, String address, String email, String phone, int cpf, int rg )
	{
		// chama o construtor da classe mãe
		super( name, address, email, phone );
		
		this.cpf = cpf;
		this.rg = rg;
		
		// data atual para colocar como data de cadastro do cliente
		Date _newRegister = new Date();
		this.newRegister = _newRegister;
	}
	
	/**
	 * Retorna o valor do CPF
	 * 
	 * @return retorna valor int
	 */
	public int getCpf()
	{
		return this.cpf;
	}
	
	/**
	 * Retorna o valor do RG
	 * 
	 * @return retorna valor int
	 */
	public int getRg()
	{
		return this.rg;
	}
	
	@Override
	public String toString()
	{
		return super.toString() + "\n" +
			   "CPF: " + this.getCpf() + "\n" +
			   "RG: " + this.getRg();
	}
}
ClienteCnpj:

import java.util.Date;

public class ClienteCnpj extends Cliente
{
	protected int cnpj;
	
	/**
	 * Construtor para cadastrar novo cliente Juridico
	 * 
	 * @param name String nome do cliente
	 * @param address String endereço do cliente
	 * @param email String email do cliente
	 * @param phone String telefone do cliente
	 * @param cnpj int CNPJ do cliente
	 */
	public ClienteCnpj( String name, String address, String email, String phone, int cnpj )
	{
		// chama o construtor da classe mãe
		super( name, address, email, phone );
		
		this.cnpj = cnpj;
		
		// data atual para colocar como data de cadastro do cliente
		Date _newRegister = new Date();
		this.newRegister = _newRegister;
	}
	
	/**
	 * Retorna o valor do CNPJ
	 * 
	 * @return retorna valor int
	 */
	public int getCnpj()
	{
		return this.cnpj;
	}
		
	@Override
	public String toString()
	{
		return super.toString() + "\n" +
			   "CNPJ: " + this.getCnpj();
	}
}
Funcionario:

public class Funcionario extends Pessoa
{
	protected double salary;
	protected String password;
	protected int id, cpf, rg;
	
	/**
	 * 
	 * 
	 * @param name String nome do funcionario
	 * @param address String endereço do funcionario
	 * @param email String email do funcionario
	 * @param phone String telefone do funcionario
	 * @param salary Double salario do funcionario
	 * @param password String senha do funcionario
	 * @param id int ID do funcionario no sistema
	 * @param cpf int CPF do funcionario
	 * @param rg int RG do funcionario
	 */
	public Funcionario( String name, String address, String email, String phone, String password, double salary, int id, int cpf, int rg )
	{
		super( name, address, email, phone );
		
		this.salary = salary;
		this.password = password;
		this.id = id;
	}
	
	public double getSalary()
	{
		return this.salary;
	}
	
	// sobrecarga
	public double addBonnificationInSalary( int addTo )
	{
		return this.getSalary() * addTo;
	}
	
	public double addBonnificationInSalary( double addTo )
	{
		return this.getSalary() * addTo;
	}
}
Vendedor:

public class Vendedor extends Funcionario
{	
	public Vendedor( String name, String address, String email, String phone, String password, double salary, int id, int cpf, int rg )
	{
		super( name, address, email, phone, password, salary, id, cpf, rg );
	}
}
Gerente:

public class Gerente extends Funcionario
{	
	public Gerente( String name, String address, String email, String phone, String password, double salary, int id, int cpf, int rg )
	{
		super( name, address, email, phone, password, salary, id, cpf, rg );
	}
}
Muito obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro... achei meio confusa sua hierarquia de classes.

Defina melhor o que você quer.

 

Os atributos são herdados, desde que não sejam declarados como private.

Então não precisa usar os valores da Main use da sua classe concreta.

 

Creio que Pessoa e Cliente são fortes candidatas a serem classes abstratas.

 

Você está usando herança somente para passar pra frente os atributos. Não vejo muita vantagem nisso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.