Exercício de POO

Método construtor(): Usado para cadastrar um medidor em uma unidade de consumo.

  • Deve possuir os seguintes parâmetros: id do medidor, número de série, tipo da unidade de consumo e a leitura atual do registrador por ocasião da instalação na unidade de consumo.
  • Inicializar a leitura anterior com o mesmo valor da leitura atual.
  • O consumo e valor da conta deve iniciar em zero.

Método registrarLeitura(): Método para informar a leitura do registrador de um medidor de energia e calcular o consumo.

  • Recebe uma leitura do registrador como parâmetro.
  • Atribuir a leitura atual para a leitura anterior.
  • Atribuir a leitura recebida para a leitura atual.
  • Calcular o consumo (leitura atual – leitura anterior).
  • Chamar o método calcularConta().
public class MedidorEnergiaEletrica {
  
  private int idMedidor;
  private String nrSerie;
  private char tipoUcInstalado;
  private int leituraAnterior;
  private int leituraAtual;
  private int consumo;
  private double valoConta;
  
  public MedidorEnergiaEletrica(int idMedidor, String nrSerie, char tipoUcInstalado, int leituraAtual) {
    this.idMedidor = idMedidor;
    this.nrSerie = nrSerie;
    this.tipoUcInstalado = tipoUcInstalado;
    this.leituraAnterior = leituraAtual;
  }
  
  public void registrarLeitura(int leitura) {
    this.leituraAnterior  = this.leituraAtual;
    this.leituraAtual = leitura;

Alguém poderia me dizer se essa lógica do registrarLeitura está correta?

O código está cortado? Até a linha que você postou, parece correto sim. Mas faltam essas partes:

  • Calcular o consumo (leitura atual – leitura anterior).
  • Chamar o método calcularConta().

Abraço.

Sim, sim. Eu cortei a parte do calcular consumo mas tá assim:

public void registrarLeitura(int leitura) {
		this.leituraAtual = this.leituraAnterior;
		leitura = this.leituraAtual;
		
		 this.consumo = leitura - this.leituraAnterior;
		 calcularConta();	
	}
	
	
	private void calcularConta() {
		
		if(tipoUcInstalado == 'C') {
			this.valorConta = this.consumo * 0.70;
		}
		else if(tipoUcInstalado == 'I') {
			this.valorConta = this.consumo * 0.50;
		}else {
			this.valorConta = this.consumo * 0.60;
		}

Esses valores foram dados na questão também: C - Comercial, R - Residencial e I - Industrial

public MedidorEnergiaEletrica(int idMedidor, String nrSerie, char tipoUcInstalado, int leituraAtual) {
		this.idMedidor = idMedidor;
		this.nrSerie = nrSerie;
		this.tipoUcInstalado = tipoUcInstalado;
		this.leituraAnterior = leituraAtual;
	}
	


	public void registrarLeitura(int leitura) {
		this.leituraAtual = this.leituraAnterior;
		leitura = this.leituraAtual;
		
		 this.consumo = this.leituraAtual - this.leituraAnterior;
		 this.calcularConta();	
	}
	
	
	private void calcularConta() {
		
		if(tipoUcInstalado == 'C') {
			this.valorConta = this.consumo * 0.70;
		}
		else if(tipoUcInstalado == 'I') {
			this.valorConta = this.consumo * 0.50;
		}else {
			this.valorConta = this.consumo * 0.60;
		}
		
	}

Quando eu coloco pra rodar o programa, a leituraAtual fica zerada, mesmo com a atribuição da this.leituraAtual = leituraAnterior; no método registrarLeitura(). Pode me ajudar nisso?

Essa linha está errada.
O correto é o this.leituraAtual receber o parâmetro leitura.

1 curtida