Ainda nao ta completo fiz agora; e to com sono. o superbowl foi até tarde ontem,. mas ta ai;
package com.funcionarios;
public class Funcionario {
private String nome;
private Long ri;
private Double salario;
public Funcionario(String nome, Long ri, Double salario) {
this.nome = nome;
this.ri = ri;
this.salario = salario;
}
public String getNome() {
return nome;
}
public Long getRi() {
return ri;
}
public Double getSalario() {
return salario;
}
}
package com.funcionarios;
public class Gerente extends Funcionario {
private String setor;
public Gerente(String nome, Long ri, Double salario, String setor) {
super(nome, ri, salario);
this.setor = setor;
}
public String getSetor() {
return setor;
}
}
package com.funcionarios;
import br.com.caelum.stella.validation.CPFValidator;
import br.com.caelum.stella.validation.InvalidStateException;
import com.cliente.Cliente;
public class Atendente {
private Gerente gerente;
public Atendente(Gerente gerente) {
this.gerente = gerente;
}
public Gerente getGerente() {
return gerente;
}
public boolean aceitaCliente(Cliente c) {
CPFValidator valida = new CPFValidator();
try {
valida.assertValid(c.getCpf());
} catch (InvalidStateException e) {
System.out.println(e.getInvalidMessages());
System.err.println("CPF Invalido");
return false;
}
if (c.getDataNascimento() >= 18) {
System.out.println("Cliente Aceito com Sucesso");
return true;
} else {
System.out.println("Cliente ainda não é maior de 18 anos; nao pode abrir conta");
return false;
}
}
}
package com.conta;
import com.cliente.Cliente;
public abstract class Conta {
private Integer numero;
private String titular;
protected Double saldo;
public Conta(Cliente c) {
this.titular = c.getNome();
this.numero = (int) (Math.random() * 100);
}
public Double getSaldo() {
return saldo;
}
public Integer getNumero() {
return numero;
}
public String getTitular() {
return titular;
}
public void deposita(double valor) {
if(valor > 0) {
this.saldo += valor;
}
}
public abstract void saca(double valor);
}
package com.conta;
import com.cliente.Cliente;
public class ContaEspecial extends Conta {
public ContaEspecial(Cliente c) {
super(c);
}
public void saca(double valor) {
if(saldo > 0) {
this.saldo -= valor;
}
}
}
package com.conta;
import com.cliente.Cliente;
public class ContaSimples extends Conta {
public ContaSimples(Cliente c) {
super(c);
}
public void saca(double valor) {
if(saldo > 0) {
this.saldo -= valor;
} else if(saldo - valor < 0) {
System.out.println("Contas Simples nao podem ter 'Cheque Especial' ");
}
}
}
package com.cliente;
public class Cliente {
private String nome;
private String rg;
private String cpf;
private Integer dataNascimento;
private Long rc;
public Cliente(String nome, String rg, String cpf, Integer dataNascimento, Long rc) {
this.nome = nome;
this.rg = rg;
this.cpf = cpf;
this.dataNascimento = dataNascimento;
this.rc = rc;
}
public String getNome() {
return nome;
}
public String getRg() {
return rg;
}
public String getCpf() {
return cpf;
}
public Integer getDataNascimento() {
return dataNascimento;
}
public Long getRc() {
return rc;
}
}
package com.mains;
import com.cliente.Cliente;
import com.conta.Conta;
import com.conta.ContaSimples;
import com.funcionarios.Atendente;
import com.funcionarios.Gerente;
public class Start {
public static void main(String[] args) {
Cliente c1 = new Cliente("Jeferson Lesbão de Siqueira", "48.774.823-2", "420.276.098-06", 17, (long) 001);
Gerente g1 = new Gerente("Pedro", (long) 002, (double) 1241.12, "Chefia");
Atendente at = new Atendente(g1);
if(at.aceitaCliente(c1)){
Conta conta = new ContaSimples(c1);
}
}
}