Veja, compartilhe, discuta, ajude, mostre como você resolveu os exercícios deste módulo!
por cscj em Qua Mar 03, 2010 7:02 pm
Resolvi o exercício e aparentemente está a funcionar bem. Contudo tenho dúvidas se não existirá uma solução mais simples. Agradecia que analisassem o código. Os nomes das classes estão um pouco diferente para se adaptarem à realidade portuguesa mas os pressupostos são iguais.
- Código: Selecionar tudo
public class Funcionario {
//Atributos
private int codigoFuncionario;
private String nomeFuncionario;
private final float vencimentoBase = 500.00f;
private float comissao;
//Getters e Setters
public int getCodigoFuncionario() {
return codigoFuncionario;
}
public void setCodigoFuncionario(int codigoFuncionario) {
this.codigoFuncionario = codigoFuncionario;
}
public String getNomeFuncionario() {
return nomeFuncionario;
}
public void setNomeFuncionario(String nomeFuncionario) {
this.nomeFuncionario = nomeFuncionario;
}
public float getComissao(){
return comissao;
}
public void setComissao(float comissao){
this.comissao = comissao;
}
//Métodos
public float getVencimentoBase() {
return vencimentoBase;
}
public float calculaVencimento() {
return vencimentoBase + comissao;
}
}
- Código: Selecionar tudo
public class TerceiroCiclo extends Funcionario {
//Atributos
private String escola;
//Getters e Setters
public String getEscola() {
return escola;
}
public void setEscola(String escola) {
this.escola = escola;
}
//Métodos
public float getVencimentoBase() {
return (super.getVencimentoBase()+ super.getVencimentoBase() * 0.10f);
}
public float calculaVencimento() {
return this.getVencimentoBase() + super.getComissao();
}
}
- Código: Selecionar tudo
public class Secundario extends TerceiroCiclo {
//Métodos
public float getVencimentoBase() {
return (super.getVencimentoBase()+ super.getVencimentoBase() * 0.50f);
}
public float calculaVencimento() {
return this.getVencimentoBase() + super.getComissao();
}
}
- Código: Selecionar tudo
public class Superior extends Secundario {
//Atributos
private String universidade;
//Getters e Setters
public String getUniversidade() {
return universidade;
}
public void setUniversidade(String universidade) {
this.universidade = universidade;
}
//Métodos
public float getVencimentoBase() {
return (super.getVencimentoBase()+ super.getVencimentoBase());
}
public float calculaVencimento() {
return this.getVencimentoBase() + super.getComissao();
}
}
- Código: Selecionar tudo
import java.util.Scanner;
public class CalculaVencimento {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
/* Solicita ao utilizador a introdução das habilitações literárias do funcionario:
"sem estudos", "3 ciclo", "secundario" ou "superior" */
System.out.print("Insira as habilitações literárias: ");
String habilitacoesLiterarias = s.nextLine();
/* Solicita ao utilizador a introdução do cargo do funcionario:
"gerente", "supervisor" ou "vendedor" */
System.out.print("Insira o cargo: ");
String cargo = s.nextLine();
Funcionario funcionario;
Comissao comissao;
/* Compara as habilitações literárias inseridas pelo utilizador com
as subclasses de Funcionario e cria uma instância de uma delas */
if (habilitacoesLiterarias.equals("sem estudos"))
funcionario = new Funcionario();
else if (habilitacoesLiterarias.equals("3 ciclo"))
funcionario = new TerceiroCiclo();
else if (habilitacoesLiterarias.equals("secundario"))
funcionario = new Secundario();
else
funcionario = new Superior();
/* Compara o cargo inserido pelo utilizador com
as subclasses de Comissao e cria uma instância de uma delas */
if (cargo.equals("gerente"))
comissao = new Gerente();
else if (cargo.equals("supervisor"))
comissao = new Supervisor();
else
comissao = new Vendedor();
System.out.println("Vencimento sem comissão: "+funcionario.getVencimentoBase());
System.out.println("Comissao: "+comissao.getComissao());
funcionario.setComissao(comissao.getComissao());
System.out.println("Vencimento com comissão: "+funcionario.calculaVencimento());
}
}
- Código: Selecionar tudo
public class Comissao {
//Atributos
private float comissao;
//Getter
public float getComissao() {
return comissao;
}
}
- Código: Selecionar tudo
public class Gerente extends Comissao {
//Atributos
private final float comissao = 1500.00f;
//Getter
public float getComissao(){
return comissao;
}
}
- Código: Selecionar tudo
public class Supervisor extends Comissao {
//Atributos
private final float comissao = 600.00f;
//Getter
public float getComissao(){
return comissao;
}
}
- Código: Selecionar tudo
public class Vendedor extends Comissao {
//Atributos
private final float comissao = 250.00f;
//Getter
public float getComissao() {
return comissao;
}
}
-
cscj
-
- Mensagens: 1
- Data de registro: Ter Mar 02, 2010 5:03 pm
por JHS6544 em Qui Jun 10, 2010 11:23 am
Olá acabei de iniciar o módulo sete...
Na verdade terminei de ler, mas enfim.(dei uma olhada nos exercícios já).
Como sempre faço:leio tudo inclusivo os exercícios e já vo pensando na solução).
Velinho:A herança não funciona dessa forma que vc esta usando.
(Não faz sentido funcionários extenderem comissão).
Vc só extend aquilo que passar no teste é um
funciónario é uma comissão.(isso parece inlógico certo?).
Se parece inlógico então é por que não deve ser extendido.
funcionário contém comissão.(faz sentido)
Para saber se vc vai extender ou não use o teste é um e contem um.
O que faria sentido:é vc ter uma classe funcionário basica ou genérica(com atributos e comportamentos que todo funcionario têm).
Lembre-se dos exemplos de animal e veículo, a super classe era aquela que tinha todos os atributos e métodos encomum.
Criado classe funcionário vc poderia criar funcionariobasico,funcionariomedio, funcionariograduado
onde a segunda extenderia a primeira pois teóricamente o funcionário com uma escolaridade um pouco melhor seria capaz de realizar as mesmas atividas que alguém que não tem nenhuma e mais algumas coisas.
Assim sucessivamente.(Talvez os nomes das classes não sejam adequados, mas eu não sou muito criativo pra isso).
Por fim teriamos um método chamado setRenda sobreescrito para cada classe, invocando o setRenda da surper.- Código: Selecionar tudo
ex: public double setRenda(){
return 1.50*super.setRenda();(aqui chamamos setRenda da super que retorna o 1100 (1000+10%) e por último retorna 1100+50%.
}
Creio que a idéia do 8 deve ser a mesma.
Vendedor,supervisor e Gerente são todos funcionário.
Mas estou tratando como exercícios distintos já que não falaram para usar as classes desenvolvidas no 7.
-
JHS6544
-
- Mensagens: 106
- Data de registro: Qua Mar 24, 2010 10:47 am
por JHS6544 em Qui Jun 10, 2010 3:51 pm
-
JHS6544
-
- Mensagens: 106
- Data de registro: Qua Mar 24, 2010 10:47 am
Retornar para Exercícios - Módulo 07 - OO - Herança, Sobreescrita e Polimorfismo
Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante