Projeto Java OO

5 respostas
tgmarinho

Olá Pessoal!

Estou tentando fazer esse trabalho:

mas não esta fácil, faltei muitas aulas, e perdi algumas importantes que fala sobre abstração e interface!

lendo o enunciado, vcs entendem q devo fazer uma classe para cada profissão?

Pois eh isso q estou fazendo,

fiz a classe Contribuinte, q eh a superclasse

e fiz classe medico, taxista, professor, caminhoneiro extend Contrbuinte
fiz os metodos getter e setter para cada classe, construi para classes filhas super(nome, nrcontrib, movel, imove) da contribuinte.

como seria uma abstração para esse exercicio?

o método calcularTaxa() seria abstrato?

nao consigo entender tambem a respeito do bairroFiscal!

alguem poderia me explicar esse exercício?

Thiago Marinho


@tgmarinho

5 Respostas

marcelo.bellissimo

Pelo que eu entendi, existirão vários bairros fiscais, para cada Área… voce pode criar também uma classe abstrata BairroFiscal, e cada Área (com um determinado nome, creio eu) extendendo de BairroFiscal, logo herdando todos os seu métodos, como o solicitado “calcular imposto total” … essa classe deve ter uma lista de Contribuintes… é a mesma coisa que você fez entre Contribuinte e os respecitivos “filhos”…

Isso é abstração, generalizar ao máximo os objetos, como por exemplo, um Palio, um Golf, uma Ferrari, uma Kawasaki, uma Harlley-Davidson… independente da marca ou tipo (atributos), todos são Veiculos (abstração)…

Um taxista, um pedreido, um padeiro, um serial-killer ( o.O ), são ‘Pessoa’ … indepentende da sua “função”… :roll:

Era essa sua dúvida?

tgmarinho

Sim vc me ajudou bem! Obrigado!
entendi o que é abstração!

porém não entendi quando vc disse que BairroFiscal tem uma lista de contribuintes?

BairroFiscal extends Contribuintes extends Taxistas?

BairroFiscal seria a classe pai?

contribuintes Filho de BairroFiscal e Pai de Profissao(taxista, professor, medico) ?

não entendi isso! =(

mas obg pela força ^^

marcelo.bellissimo

Nã, não… veja bem, quando você escreve um ‘extends’ você pode interpretar esse ‘extends’ como um ‘é’… por exemplo a classe ArrayList, ela ‘extends’ a classe List, ou seja, ela ‘é’ um List…

No seu caso, as classes funcionario, taxista, padeiro, extendem a classe Contribuinte, ou seja, elas ‘são’ um Contribuinte…

No caso do BairroFiscal, pelo que eu entendi, ela vai extender de Area, pois um BairroFiscal ‘é’ uma Area… e nessas classes deve haver uma lista de Contribuinte… exemplo:

abstract class Area{ private List<Contribuinte> contribuintes; // metodos e etc... }
Essa List de Contribuinte pode receber uma lista de Pedreiro, Taxista, Padeiro, pois todos são Contribuinte…

O fato da Area/BairroFiscal possuir uma lista de Contribuinte é porque estava no enunciado:
“Um Bairro Fiscal tem uma lista de contribuintes…”

tgmarinho

ah sim Marcelo entendi =) perfeitamente!

como que faz para mostrar uma lista de Taxistas, Pedreiros??

tem q ser feito um static int numContrib?

jeff_uesc

Completando oq o colega marcelo disse, vc n so pode usar extends 1 vez... depois vc tem q criar uma interface e usar o implements... (me corrijam se estiver errado ... rs)

Vo postar uns códigos meus pra vc ter uma ideia, é be simples mas já é um ponto de partida...

package heranca;

/**
 * @author Jefferson Santana
 */
public class Pessoa {
    private String nomePessoa;
    private String identidade;
    private Data nascimento;
    private boolean sexo;

    Pessoa(){
        
    }
    
    Pessoa(String nome, String id, Data nasc, boolean sexo){
        nomePessoa = nome;
        identidade = id;
        nascimento = nasc;
        this.sexo = sexo;
    } //Fim do construtor

    public String getNome(){
        return this.nomePessoa;
    }

    public String getIdentidade(){
        return this.identidade;
    }

    @Override
    public String toString(){
        String sex = "";
        if(sexo){
            sex = "Masculino";
        }else{
            sex = "Feminino";
        }
        return nomePessoa + "\n"
             + identidade + "\n"
             + nascimento + "\n"
             + sex + "\n";
    }
}
package heranca;

/**
 * @author Jefferson Santana
 */
public class Funcionario extends Pessoa{
    private Data admissao;
    private double salario;

    Funcionario(String nome, String identidade,
            Data nascimento, boolean sexo, Data adm, double sal){
        super(nome,identidade,nascimento, sexo);
        admissao = adm;
        salario = sal;
    }

    public double qualSalario(){
        return this.salario;
    }
    
    public String toString(){
        String str = super.toString();
        str += admissao + "\n";
        str += salario + "\n";
        return str;
    }
}
package heranca;

/**
 * @author Jefferson Santana
 */
public class ChefeDeDepartamento extends Pessoa{
    private String departamento;
    private Data promocaoAChefe;

    ChefeDeDepartamento(String nome, String identidade,
            Data nascimento, boolean sexo, String dpt, Data promo){
        
        super(nome,identidade,nascimento, sexo);
        departamento = dpt;
        promocaoAChefe = promo;
       }

    public String qualDepartamento(){
        return this.departamento;
    }

    public String toString(){
        String str = super.toString();
        str += departamento + "\n";
        str += promocaoAChefe + "\n";
        return str;
    }
}
Criado 9 de junho de 2010
Ultima resposta 11 de jun. de 2010
Respostas 5
Participantes 3