Olá
Sou iniciante em java, descobri este forum pelo google e tem me ajudando bastante, no entanto estou com uma grande duvida, que suponho que seja bastante facil, no entanto não estou a conseguir concluir.
Ora tenho um exercicio Em que tenho que criar a Super Classe Pessoa, as sub classes Fornecedor, Empregado, Cliente e por final a classe teste.
Refere também que tenho que definir os metodos toString, clone e equals em cada classe.
Na super classe Pessoa tenho que criar as variaveis nome, contribuinte e idade, e tenho o feito desta forma.
public class Pessoa {
private String nome;
private long contribuinte;
private byte idade;
public Pessoa(String nome, long contribuinte, byte idade){
this.nome=nome;
this.contribuinte=contribuinte;
this.idade=idade;
}
public String getNome(){
return this.nome;
}
public long getContribuinte(){
return this.contribuinte;
}
public byte getIdade(){
return this.idade;
}
public void setNome(String n){
this.nome=nome;
}
public void setContribuinte(long c){
this.contribuinte=contribuinte;
}
public void setIdade(byte i){
this.idade=idade;
}
}
Depois na classe fornecedor as variaveis plafons e valorEmDivida e a instruçao obterSaldo(que nao estou a compreender muito bem)
public class Fornecedor extends Pessoa {
private float plafond;
private float valorEmDivida;
public Fornecedor(String nome, long contribuinte, byte idade, float plafond, float valorEmDivida){
super(nome, contribuinte, idade);
this.plafond=plafond;
this.valorEmDivida=valorEmDivida;
}
public float getPlafond(){
return this.plafond;
}
public float getValorEmDivida(){
return this.valorEmDivida;
}
public void setPlafond(float p){
this.plafond=plafond;
}
public void setValorEmDivida(float ved){
this.valorEmDivida=valorEmDivida;
}
public float obterSaldo(float saldof){
return saldof=(plafond-valorEmDivida);
}
public boolean equals(Fornecedor f){
return f.getNome()== super.getNome()&&f.getContribuinte()==super.getContribuinte()&& f.getIdade()==super.getIdade()&&f.getPlafond()==this.getPlafond()&&f.getValorEmDivida()==this.getValorEmDivida();
}
public Fornecedor Clone(){
return new Fornecedor(super.getNome(),super.getContribuinte(),super.getIdade(),this.getPlafond(),this.getValorEmDivida());
}
public String toString(){
StringBuilder f = new StringBuilder();
f.append("#########################Fornecedor########################## \n");
f.append("O Nome do Fornecedor é " +super.getNome()+"\n");
f.append("O Contribuinte do Fornecedor é " +super.getContribuinte()+"\n");
f.append("A idade do Fornecedor é " +super.getIdade()+"\n");
f.append("O plafond é " +this.getPlafond()+"\n");
f.append("O Valor em divida é " +this.getValorEmDivida()+"\n");
f.append("########################FIM############################" +"\n");
return f.toString();
}
}
Na classe Empregado variaveis numeroSeccao, salarioBase, IRS e a instrução calcularSalario.
public class Empregado extends Pessoa{
private int numeroSeccao;
private float salarioBase;
private float IRS;
public Empregado(String nome, long contribuinte, byte idade, int numeroSeccao, float salarioBase, float IRS){
super(nome, contribuinte, idade);
this.numeroSeccao=numeroSeccao;
this.salarioBase=salarioBase;
this.IRS=IRS;
}
public int getNumeroSeccao(){
return this.numeroSeccao;
}
public float getSalarioBase(){
return this.salarioBase;
}
public float getIRS(){
return this.IRS;
}
public void setNumeroSeccao(int n){
this.numeroSeccao=numeroSeccao;
}
public void setSalarioBase(float c){
this.salarioBase=salarioBase;
}
public void setIRS(float i){
this.IRS=IRS;
}
public float calcularSalario(float salario){
return salario=(salarioBase-IRS);
}
public boolean equals(Empregado E){
return E.getNome()== super.getNome()&&E.getContribuinte()==super.getContribuinte()&& E.getIdade()==super.getIdade()&&E.getNumeroSeccao()==this.getNumeroSeccao()&&E.getSalarioBase()==this.getSalarioBase()&&E.getIRS()==this.getIRS();
}
public Empregado Clone(){
return new Empregado(super.getNome(),super.getContribuinte(),super.getIdade(),this.getNumeroSeccao(),this.getSalarioBase(),this.getIRS());
}
public String toString(){
StringBuilder e = new StringBuilder();
e.append("#########################Empregado########################## \n");
e.append("O Nome do Empregado é " +super.getNome()+"\n");
e.append("O Contribuinte do Empregado é " +super.getContribuinte()+"\n");
e.append("A idade do Empregado é " +super.getIdade()+"\n");
e.append("O Numero de secção é " +this.getNumeroSeccao()+"\n");
e.append("O Salario base é " +this.getSalarioBase()+"\n");
e.append("O IRS é " +this.getSalarioBase()+"\n");
e.append("########################FIM############################" +"\n");
return e.toString();
}
}
E por final a classe cliente que é igual a fornecedor.
public class Cliente extends Pessoa {
private float plafond;
private float valorEmDivida;
public Cliente(String nome, long contribuinte, byte idade, float plafond, float valorEmDivida){
super(nome, contribuinte, idade);
this.plafond=plafond;
this.valorEmDivida=valorEmDivida;
}
public float getPlafond(){
return this.plafond;
}
public float getValorEmDivida(){
return this.valorEmDivida;
}
public void setPlafond(float p){
this.plafond=plafond;
}
public void setValorEmDivida(float ved){
this.valorEmDivida=valorEmDivida;
}
public float obterSaldo(float saldoc){
return saldoc = (plafond-valorEmDivida);
}
public boolean equals(Cliente c){
return c.getNome()== super.getNome()&&c.getContribuinte()==super.getContribuinte()&& c.getIdade()==super.getIdade()&&c.getPlafond()==this.getPlafond()&&c.getValorEmDivida()==this.getValorEmDivida();
}
public Cliente Clone(){
return new Cliente(super.getNome(),super.getContribuinte(),super.getIdade(),this.getPlafond(),this.getValorEmDivida());
}
public String toString(){
StringBuilder c = new StringBuilder();
c.append("#########################Cliente########################## \n");
c.append("O Nome do Cliente é " +super.getNome()+"\n");
c.append("O Contribuinte do Cliente é " +super.getContribuinte()+"\n");
c.append("A idade do Cliente é " +super.getIdade()+"\n");
c.append("O plafond é " +this.getPlafond()+"\n");
c.append("O Valor em divida é " +this.getValorEmDivida()+"\n");
c.append("########################FIM############################" +"\n");
return c.toString();
}
}
Tentei na classe teste, fazer apenas um pequeno teste para ver se funcionava e encontra.se assim:
public class TestePessoa {
public static void main(String[]args){
Cliente c1;
c1= new Cliente("Miguel",24356313,30,500.3,350.2);
System.out.println(c1.toString());
}
}
Sei que ainda falta muita coisa no entanto era apenas para experimentar.
Se me poderem indicar quais os erros e o que tenho que modificar/alterar agradecia.