Me ajudem em um Programando em java

Bem, Montei esse código simples, com o apoio da internet :

Controle: Calculadora.java

/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package controle;

import javax.swing.JOptionPane;

/**
*

  • @author home
    */
    public class Calculadora {

    public float resultado; // variável “resultado” receberá o resultado da operação

    public float somar(float a, float b) { // somará os números “a” e “b” passados como parâmetros
    return this.resultado = a + b; // a propriedade resultado recebe a soma dos parâmetros “a” e “b”
    }

    public float subtrair(float a, float b) { // subtrairá o número “b” de “a” passados como parâmetros
    return this.resultado = a - b; // a propriedade resultado recebe a diferença do parâmetro “a” por “b”
    }

    public void mostrarResultado() {
    JOptionPane.showMessageDialog(null, "O resultado da Operação é " + this.resultado);
    }
    }


Dai a aplicação dele sem interface:

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package javaapplicationcalculadora;

import controle.Calculadora;
import javax.swing.JOptionPane;

/**
*

  • @author home
    */
    public class JavaApplicationCalculadora {

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) {

      // Cria um objeto Calculadora e a armazena na variável "calculadora"
      Calculadora calculadora = new Calculadora();

      float resultado; // Declaração da variável resultado

      // Solicita ao objeto calculadora somar 7 e 7 e atribuir à variável “resultado” declarada na "main"
      resultado = calculadora.somar(7, 7);
      // Utiliza a Classe “JOptionPane” para mostrar o resultado
      JOptionPane.showMessageDialog(null, "O resultado da soma é " + resultado);

    }
    }


Dai nisso me pediram para alterar algumas coisas no código:

Usou bem a programação básica envolvida com o conceito principal das classes, gerando a calculadora e usando ela no main.

Como sempre faz apenas dois cálculos, seria legal ter usado além do atributo resultado, mais dois atributos como sendo os números a e b e aplicar melhor o conceito de encapsulamento e proteção da informação.

O que ficou falando no código para usar melhor o encapsulamento?

O código acima temos como modificar e aplicar outros conceitos.

1- Coloque os dois atributos a e b para que possa receber os valores.

2- Gere um construtor para a entrada desses dados e mantenha os demais métodos criados.


Dai nisso eu não consigo mudar, pelo que vi é algo simples, alguém poderia me dizer apensar por qual caminho começar? desde já agradeço a atenção

Uma coisa que notei instantaneamente é que você criou um método mostrarResultado(), mas você usa o que esse método já faz mas de uma forma mais complicada.
Você também não precisa usar uma variável resultado externa, já que a classe calculadora já faz isso, portanto sem a necessidade de um retorno em cada método de expressão matemática, mas com um método getResult() ou alguma coisa assim.
Pelo que eu entendi do seu segundo ponto. você quer criar um construtor que receba os valores a e b, mas não entendi exatamente o que você quer fazer com esses valores (se não foi isso que quis dizer, saiba que eu tenho catorze anos e com a qualidade do ensino de hoje, esse tipo de interpretação específica não é o meu forte).

Poderia ser assim:

class Calculadora {
  private float a;
  private float b;

  public Calculadora(float a, float b) {
    this.a = a;
    this.b = b;
  }

  public float somar()    { return a + b; }
  public float subtrair() { return a - b; }
}

class App {  
  public static void main(String[] args) {
    Calculadora calc = new Calculadora(123, 456);
    JOptionPane.showMessageDialog( null, "A soma é " + calc.somar() );
    JOptionPane.showMessageDialog( null, "A subtração é " + calc.subtrair() );
  }
}

tipo o A e B vão ter os valores e dai vou pegar esses valores e fazer conta usando as funções soma e subtrai

Desse jeito ficou perfeito, bem simples como eu estava tentando fazer, poderia me explicar mais ou menos como ocorreu ? pq como eu disse eu tentei fazer assim, mas não criei a "public calculadora e puxei o a e b, poderia me explicar essa parte e etc. Mas já agradeço pq já me ajudou 100%

Então você poderia fazer uma classe Calculadora que tem uma lista de valores double e implementa uma interface funcional Calculus, ou alguma coisa assim, para cálculos mais complexos e outras operações, ou então poderia usar a mesma coisa que o @wldomiciano fez, que pega os valores para a e b e faz operações não-permanentes baseando-se nesses valores passados pelo construtor.

1 curtida

Não tem muito pra explicar, eu só fiz o que disseram que era pra fazer, criar os atributos a e b e um constructor que que inicializasse esses atributos.

Então vc tem uma Calculadora contendo 2 números. O que vc faz com esses números vc diz pra ele através dos métodos somar e substituir.