Preciso de ajuda para um programa em Java, com certas dúvidas em Algoritmos

3 respostas
G

Então galera, o negócio é o seguinte. Tenho que implementar a Classe Funcionário, com a
classe Gerente, depois faz a extensão da classe Gerente com Funcionario, pra depois adicionar
o método de bonificação, invocar o método reescrito, implementar o super no bonificação,
pra ter um método de registro, com exemplos de funcionários. Pra depois criar a classe Conta
com atributo saldo, um getSaldo, com métodos deposita e saca, mais um método da classe Conta
com duas subclasses “Conta, ContaCorrente e ContaPoupanca” que sejam filhas da classe
Conta, para assim reescrever o método atualiza na classe ContaCorrente pra depois por na
ContaPoupanca, reescrevendo o metodo deposita para descontar a taxa bancaria de dez centavos
criando assim uma classe de Testes chamado “TestaContas”, com o resultado do getSaldo, mudando
o código anterior de uma outra maneira diferente, criando assim uma classe que seja responsável por fazer
a atualização de todas as contas
bancárias e gerar um relatório com o saldo anterior e saldo novo de cada uma das contas,
criando outras contas no main, usando a palavra super nos métodos atualiza, e se fosse ter
que criar uma classe ContaInvestimento com o método atualiza se fosse ter que ser necessário
mudar as classes Banco e AtualizadordeContas, com uma classe Banco que tenha um array de
Conta, com um método void adiciona(Conta c), método Conta pegaConta(int x) e outro
int pegaTotalDeContas(), e assim fazendo que o método main crie diversas contas, inserindo-as
no Banco para depois com um for percorrer todas as contas do Banco para passá-las como
argumento para o AtualizadorDeContas.

E aqui vai os códigos que tenho que implementar e mexer e mudar etc e tal…

Códigos relacionados a Funcionário…

class Funcionario {
String nome;
String cpf;
double salario;
// métodos devem vir aqui
}

class Gerente {
String nome;
String cpf;
double salario;
int senha;
public boolean autentica(int senha) {
if (this.senha == senha) {
System.out.println("Acesso Permitido!");
return true;
} else {
System.out.println("Acesso Negado!");
return false;
}
}
// outros métodos
}

class Gerente extends Funcionario {
int senha;
public boolean autentica(int senha) {
if (this.senha == senha) {
System.out.println("Acesso Permitido!");
return true;
} else {
System.out.println("Acesso Negado!");
return false;
}
}
}

class TestaGerente {
public static void main(String[] args) {
Gerente gerente = new Gerente();
gerente.setNome("João da Silva");
gerente.setSenha(4231);
}
}

class Funcionario {
protected String nome;
protected String cpf;
protected double salario;
// métodos devem vir aqui
}

class Funcionario {
protected String nome;
protected String cpf;
protected double salario;
public double getBonificacao() {
return this.salario * 0.10;
}
// métodos
}

Gerente gerente = new Gerente();
gerente.setSalario(5000.0);
System.out.println(gerente.getBonificacao());

class Gerente extends Funcionario {
int senha;
public double getBonificacao() {
return this.salario * 0.15;
}
// ...
}

Gerente gerente = new Gerente();
gerente.setSalario(5000.0);
System.out.println(gerente.getBonificacao());

class Gerente extends Funcionario {
int senha;
public double getBonificacao() {
return this.salario * 0.10 + 1000;
}
// ...
}

class Gerente extends Funcionario {
int senha;
public double getBonificacao() {
return super.getBonificacao() + 1000;
}
// ...
}

Gerente gerente = new Gerente();
Funcionario funcionario = gerente;
funcionario.setSalario(5000.0);

funcionario.getBonificacao();

class ControleDeBonificacoes {
private double totalDeBonificacoes = 0;
public void registra(Funcionario funcionario) {
this.totalDeBonificacoes += funcionario.getBonificacao();
}
public double getTotalDeBonificacoes() {
return this.totalDeBonificacoes;
}
}

ControleDeBonificacoes controle = new ControleDeBonificacoes();

Gerente funcionario1 = new Gerente();
funcionario1.setSalario(5000.0);
controle.registra(funcionario1);
Funcionario funcionario2 = new Funcionario();
funcionario2.setSalario(1000.0);
controle.registra(funcionario2);
System.out.println(controle.getTotalDeBonificacoes());

class EmpregadoDaFaculdade {
private String nome;
private double salario;
double getGastos() {
return this.salario;
}
String getInfo() {
return "nome: " + this.nome + " com salário " + this.salario;
}
// métodos de get, set e outros
}

class ProfessorDaFaculdade extends EmpregadoDaFaculdade {
private int horasDeAula;
double getGastos() {
return this.getSalario() + this.horasDeAula * 10;
}
String getInfo() {
String informacaoBasica = super.getInfo();
String informacao = informacaoBasica + " horas de aula: " + this.horasDeAula;
return informacao;
}
// métodos de get, set e outros
}

class GeradorDeRelatorio {
public void adiciona(EmpregadoDaFaculdade f) {
System.out.println(f.getInfo());
System.out.println(f.getGastos());
}
}

class Reitor extends ProfessorDaFaculdade {
// informações extras
String getInfo() {
return super.getInfo() + " e ele é um reitor";
}
// não sobreescrevemos o getGastos!!!
}

Códigos relacionados a Conta, etc…

class Conta {
}

class Conta {
private double saldo;
}

class Conta {
private double saldo;
void deposita(double valor) {
this.saldo += valor;
}
void saca(double valor) {
this.saldo -= valor;
}
double getSaldo() {
return this.saldo;
}
}

class Conta {
private double saldo;
// outros métodos aqui também ...
void atualiza(double taxa) {
this.saldo += this.saldo * taxa;
}
}

class ContaCorrente extends Conta {
}
class ContaPoupanca extends Conta {
}

class ContaCorrente extends Conta {
void atualiza(double taxa) {
this.saldo += this.saldo * taxa * 2;
}
}

class ContaPoupanca extends Conta {
void atualiza(double taxa) {
this.saldo += this.saldo * taxa * 3;
}
}

class ContaCorrente extends Conta {
void atualiza(double taxa) {
this.saldo += this.saldo * taxa * 2;
}
void deposita(double valor) {
this.saldo += valor - 0.10;
}
}

class TestaContas {
public static void main(String[] args) {
Conta c = new Conta();
ContaCorrente cc = new ContaCorrente();
ContaPoupanca cp = new ContaPoupanca();
c.deposita(1000);
cc.deposita(1000);
cp.deposita(1000);
c.atualiza(0.01);
cc.atualiza(0.01);
cp.atualiza(0.01);
System.out.println(c.getSaldo());
System.out.println(cc.getSaldo());
System.out.println(cp.getSaldo());
}
}

Conta c = new Conta();
Conta cc = new ContaCorrente();
Conta cp = new ContaPoupanca();

class AtualizadorDeContas {
private double saldoTotal = 0;
private double selic;
AtualizadorDeContas(double selic) {
this.selic = selic;
}
void roda(Conta c) {
// aqui voce imprime o saldo anterior, atualiza a conta,
// e depois imprime o saldo final
// lembrando de somar o saldo final ao atributo saldoTotal
}
// outros métodos, colocar o getter para saldoTotal!
}

class TestaAtualizadorDeContas {
public static void main(String[] args) {
Conta c = new Conta();
Conta cc = new ContaCorrente();
Conta cp = new ContaPoupanca();
c.deposita(1000);
cc.deposita(1000);
cp.deposita(1000);
AtualizadorDeContas adc = new AtualizadorDeContas(0.01);
adc.roda(c);
adc.roda(cc);
adc.roda(cp);
System.out.println("Saldo Total: " + adc.getSaldoTotal());
}
}

E baseado nisso tudo, os códigos e tudo mais, gostaria de pedir uma ajuda de como é que posso
organizar isso tudo pra deixar um código válido, seguindo esta minha idéia que eu estou
tendo de um programa (deu pra perceber pela minha escrita direta.)

Ficaria muito grato. Obrigado desde já!

3 Respostas

B

Por que tantas classes Gerente e Funcionario? Percebi um Professor lá no meio que não tem nada a ver o resto :confused:

Obs: Poste código usando entre as tags

G

É que eu tive esta idéia de por exemplos de Funcionários para por no Programa e que fosse exibido na tela (Sim estou pensando em fazer este programa de uma certa forma didático).

E pronto já editei meu tópico, desculpa o meu erro.

B

Ah, agora entendi. Gostei do teu código. :slight_smile:

Sobre como organizar, se você mantiver as classes sem public, dá pra mantê-las no mesmo arquivo .java, assim cada passo da evolução poderia estar em arquivos .java diferentes, como Passo1.java, Passo2.java, etc.

Outra opção é colocá-los em packages diferentes.

Criado 27 de novembro de 2008
Ultima resposta 27 de nov. de 2008
Respostas 3
Participantes 2