Poo java

32 respostas Resolvido
java
G

classe conta:

public class Conta  {
    private String dono;
    private float saldo;
    public String tipo;
    private boolean status;
    
    public void abrirconta(String t){
        this.setTipo(t);
        this.setStatus(true);
        this.setSaldo(100);     
    }
    
    public void tributa(float v){
        if (this.getTipo()== "CC") {
           v = this.getSaldo()- ( /100 * this.getSaldo());
        } else {
        }
    }

interface:

public interface Tributavel {
    
    public void taxa(int taxafixa);
    
}

conta corrente:

public class ContaCorrente extends Conta implements Tributavel {
    public int taxfix;
    
    @Override
    public void taxa(int taxafixa) {
     taxafixa= 1;
     this.taxfix= taxafixa;
    }

    public int getTaxfix() {
        return taxfix;
    }

    public void setTaxfix(int taxfix) {
        this.taxfix = taxfix;
    }
}

bom dia , não estou conseguido fazer o TAXFIX receber na classe CONTA.

32 Respostas

G

eu queria assim:

public void tributa(float v){
    if (this.getTipo()== "CC") {
       v = this.getSaldo()- (THIS.TAXFIX  /100 * this.getSaldo());     
    } else {
    }
}

mas não está dando certo
eu tentei de tudo nesse taxfix: this,get,set é nada

G

public class ContaCorrente extends Conta implements Tributavel {
public int taxfix;

@Override
public void taxa(int taxafixa) {
 this.taxfix =taxafixa;
   
}
L

Qual a ideia dessa propriedade taxfix? Cada tipo de conta terá o seu?

L

Não é bom que uma classe pai dependa de algo da classe filha. Esse é um dos grandes problema ao usar herança.

No seu caso, seria melhor que cada tipo de conta tenha a capacidade de tributar (mesmo que vc mantenha a lógica na classe pai). Uma forma de fazer isso é com sobrecarga de método.

G

a TAXFIX será o resultando do calculo, e irá para classe CONTA
: this.getSaldo()- (THIS.TAXFIX /100 * this.getSaldo()); // calculo da porcentagem

assim

G

não entendi direito como faz isso

G

public int taxfix;

@Override
public void taxa(int taxafixa) {
 this.taxfix =taxafixa;
   
}

public void desconto() {
    v = this.getSaldo() - (this.taxfix /100 * this.getSaldo());
    
}

meu amigo disse para igual assim
mas ele ainda não falou tudo então está imcompleto

L

Entendi. Mas e o método tributar?


Ah sim, saquei. Essa forma é como eu estava falando. Melhor deixar isso como responsabilidade da classe ContaCorrente.

G

seria o calculo

classe conta corrente: this.taxfix= 1;

classe conta: this.getSaldo() - (this.taxfix /100 * this.getSaldo());

meu primeiro teste seria assim. mas não aparecer o taxfix . quanto eu coloco this.

G

mas como faço isso. eu criei um método para calcular como mostra na minha ultima postagem

G

classe conta corrente

classe conta

L

Toda tipo de conta que existir no sistema será tributável?

G

só conta corrente e segurodevida

L

Então não seria bom ter o método tributar na classe Conta. Deixa apenas nas classes ContaCorrente e SeguroVida.

G

assim:

public class ContaCorrente extends Conta implements Tributavel {
    public int taxfix;
    
    @Override
    public void taxa(int taxafixa) {
     this.taxfix =taxafixa;
       
    }
 
      public void tributa(float v){
       
        if (this.getTipo()== "CC") {
              v= this.getSaldo() - (this.taxfix /100 * this.getSaldo());
        } else {
            System.out.println("error");
        }
    }
G

ou:

public class ContaCorrente extends Conta implements Tributavel {
    public int taxfix;
    
    @Override
    public void taxa(int taxafixa) {
     this.taxfix =taxafixa;
       
    }
 
      public void tributa(float v){
       this.taxfix= 1;
        if (this.getTipo()== "CC") {
              v= this.getSaldo() - (this.taxfix /100 * this.getSaldo());
        } else {
            System.out.println("error");
        }
    }
L

Qual a diferença nos dois jeitos que postou?

G

this.taxfix=1;

na segunda foto

G

precisa disso ou não?

L

Vc diz nessa parte?

Não precisa, pq vc está recebendo a taxafixa como parâmetro. Não faz sentido vc alterar o valor do parâmetro (na verdade nem é recomendado fazer isso em momento algum).

G

beleza:+1:
então como faz essa parte da foto

L
Solucao aceita

Não sei se entendi 100% a ideia, mas acho que seria algo assim:

classe Conta

public abstract class Conta {
	public static final String TIPO_CONTA_CORRENTE = "CC";

	private String tipo;
	private float saldo;
	private boolean status;

	protected Conta(String tipo, float saldo, boolean status) {
		this.tipo = tipo;
		this.saldo = saldo;
		this.status = status;
	}

	public static ContaCorrente abrirContaCorrente(float saldoInicial) {
		return new ContaCorrente(TIPO_CONTA_CORRENTE, saldoInicial, true);
	}

	public String getTipo() {
		return tipo;
	}

	public float getSaldo() {
		return saldo;
	}

	public boolean isStatus() {
		return status;
	}

	protected void atualizarSaldo(float novoSaldo) {
		this.saldo = novoSaldo;
	}
}

classe ContaCorrente

public class ContaCorrente extends Conta implements Tributavel {
	
	private int taxaFixa = 5;
	
	public ContaCorrente(String tipo, float saldo, boolean status) {
		super(tipo, saldo, status);
	}

	@Override
	public void tributar() {
		float novoSaldo = getSaldo() - (this.taxaFixa / 100.0f * getSaldo());
		atualizarSaldo(novoSaldo);
	}
}

interface Tributavel

public interface Tributavel {
	void tributar();
}

E o método main ficaria assim:

public class Main {

	public static void main(String[] args) throws Exception {
		ContaCorrente cc = Conta.abrirContaCorrente(100f);
		
		System.out.println("Saldo atual: " + cc.getSaldo()); // imprime 100.0
		cc.tributar();
		System.out.println("Saldo após tributação: " + cc.getSaldo()); // imprime 95.0
	}
}
G

O Ilha Bank precisa tributar dinheiro de alguns bens que nossos clientes possuem. Para isso, vamos criar um sistema para isso. De acordo com a imagem, alguns bens são tributáveis e outros não, ContaPoupanca não é tributável, já para ContaCorrente você precisa pagar 1% da conta e o SeguroDeVida tem uma taxa fixa de 42 reais

G

A pergunta

G

Estou fazendo essa desde 08:00

L

O exemplo que fiz resolve esse problema. Usa ele e tente implementar a classe SeguroVida seguindo a mesma ideia da classe ContaCorrente.

G

Mano Não estou conseguindo fazer de SEGURODEVIDA
EU FIZ ASSIM:

L

Assim como? (vc esqueceu de colocar o código)

G

L

Uai, parece que deu certo. O que vc não está conseguindo fazer?

evite mandar imagem do código. Sempre que puder, mande o código direto.

G

nada não, muito obrigado mesmo pela ajudar

L

O importante é ter entendido o código. Se tiver dúvida, soh criar um novo tópico. Flws!

Criado 27 de maio de 2021
Ultima resposta 27 de mai. de 2021
Respostas 32
Participantes 2