Programa que demonstre encapsulamento, herança e polimorfismo

9 respostas
acbucard

Pelo amor de Deus, alguem sabe algum programa simples em que seja demonstrado as principais características da POO?
Pois eu estou no 1º ano de programação em JAVA e preciso disso pra amanhã.

Queria que o programa tivesse como base talvez 3 alunos…
Pelo amor de Deus, alguem me ajude!!

9 Respostas

peczenyj

Um aluno extende pessoa. vc pode utilizar um aluno no lugar de uma pessoa, pois é uma especialização. Eu começaria por ai.

acbucard

Como assim??
Não entendi!!

peczenyj

public class Piada{…}
public class PiadaDePortugues extends Piada {…}

o metodo abaixo
public void contar(Piada p);

aceita tando uma Piada quanto uma PiadaDePortugues :wink:

acbucard

A sim…
Obrigadinha!! ^^

jidlafe

Fica difícil ajudar você dessa maneira. Não esqueça que estamos aqui para ajudar você. Não fazer por você.
O que você têm em mente? Já pensaste em alguma coisa. Do conhecimento que você têm, mesmo que seja pouco
o que você acha que pode desenvolver usando Polimorfismo, Encapsulamento e Herança?

Aguardamos.

acbucard

Bem…
Eu não pedi pra fazer, ams pra dar a luz no fim do túnel!

Eu comecei criando uma classe para cada aluno, pq ainda não consigo vincular a um banco de dados!
A segui vem o começo:

package Conceitos;

public class Aluno {

    String Nome;
    double nota1;
    double nota2;
    double nota3;
    double nota4;
    double media;
    private int tel;  
}

Como eu faço pra definir o nome e o tel na classe aluno?
Depois pretendo fazer uma classe principal para colocar as notas, médias e fazer a média.
Se a média for menor que 4, pede a senha do diretor para acessar o telefone dos responsáveis.
Seria pelos métodos set e get?

allyssonluan

Hey...

Então uma dica rápida, mas tente entender isso pelo amor de Deus.

Observe a classe Pessoa:

Você vai ver que existem alguns modificadores nos atributos bem como private e aqueles métodos que começam com get e set certo?
Isso tudo faz parte do encapsulamento!
Existem outro métodos de acesso também, mas outras informações você pode procurar no google!

public class Pessoa {

    private String nome;
    private String cpf;
    private String rg;

    public Pessoa(String nome, String cpf, String rg) {
        this.nome = nome;
        this.cpf = cpf;
        this.rg = rg;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }
}

Observe a classe Funcionário:

public class Funcionario extends Pessoa {

    private String clt;

    public Funcionario(String nome, String cpf, String rg, String clt) {
        super(nome, cpf, rg);
        this.clt = clt;
    }

    public String getClt() {
        return clt;
    }

    public void setClt(String clt) {
        this.clt = clt;
    }
}

Observação:
Faça a seguinte pergunta a si mesmo: Funcionário é uma Pessoa ou um Animal?
É claro que é uma pessoa correto? Então ai você tem um exemplo de polimorfismo, onde o Funcionario é uma especialização de uma Pessoa!

Polimorfismo quer dizer várias formas, ou seja um Funcionário pode ser especializar mais ainda, bem, pode ser um Freelancer.
Conclusão:
Então Freelancer é um Funcionário, e um Funcionário é uma Pessoa!

Quanto mais superior a classe como no nosso caso a classe Pessoa, mais generica ela será, e ao contrário ela fica específica.

Entendeu mais ou menos a regra?

O necessário está ali em cima, qualquer dúvida da um toque, mas antes busque no google.

Abraço

allyssonluan

Dica para o Google:

Os modelos de classe ali em cima são chamadas geralmente de JavaBeans e Pojos!

jidlafe

Olá acbucard, desculpa a demora. Pois bem como pude notar a tua duvida se encontra na concepção das classes com seus
respectivos atributos e métodos. Bem, antes de tudo você precisa extrair um descritivo do problema apresentado.
De certeza que você já o assim o fez. Segundo passo, rabisca algum cenário de caso de uso. Para identificares as possíveis
entidades de tua aplicação. Mapeia que propriedades cada entidade possui e quais são as funcionalidades de cada uma.

Como exemplo a tua classe aluno:

class Aluno{ private int ID; private String nome; private int[] notas; }

Note que apenas define algumas propriedades. O estado ou seja os valores de cada variável só é conhecido internamente
na classe. Não usei nenhum método get ou set porque depende do que você realmente deseja fazer.

Para testar e manipular os dados desta classe e de outras, cria uma classe de Teste simples e manipula os teus objetos de acordo a tua necessidade.

Criado 12 de outubro de 2009
Ultima resposta 14 de out. de 2009
Respostas 9
Participantes 4