Construtor

[list]Boa noite galera. Estou tentando fazer um dever de casa (tarefa :)) e queria tirar uma dúvida quanto ao exercício:

Proposta

Criar uma calculadora que fara apenas a operação de
soma e subtração, para isso crie uma classe chamada
Calculadora.java;

Ela deve ser capaz de receber através de um construtor dois
valores inteiros;

Ela deve possuir dois métodos: somar e subtrair;

Teste sua calculadora instanciando-a no método main da
classe, utilize dois objetos calculadora, uma para somar e outro
para subtrair.

Galera, eu não entendi o final “utilize dois objetos”, não sei como utilizar dois objetos? Utilizar é instanciar? Fiz da forma que entendi, mas nessa parte fiquei enrolado.

Desde já agradeço atenção.[/list]

[code]
public class MaisCalculadora {

	int val;
	int vall;

	public MaisCalculadora() {
		this.val = 20;
		this.vall = 5;		
	}
		
	public int some(int a, int b){		
		int result = a + b;
		return result;
	}
	
	public int subtrai(int c, int d){		
		int result = c - d;
		return result;	
	}
	
	public static void main(String[] args) {
		MaisCalculadora c = new MaisCalculadora();
		int respSom = c.some(c.val, c.vall);
		int respSub = c.subtrai(c.val, c.vall);		
		System.out.println("\n" + "Valor da soma = " + respSom + ".");
		System.out.println("Valor da subtração = " + respSub + ".");	
	}

}[/code]

[list]Também fiz dessa forma, com construtor recebendo uma entrada.[/list]

[code]public class Calculadora {
int valorA;
int valorB;

public Calculadora() {
	Scanner calc = new Scanner (System.in);
	System.out.println("Digite um valor: ");
	this.valorA = calc.nextInt();
	System.out.println("Digite outro valor: ");
	this.valorB = calc.nextInt();		
}
	
public int somar(int a, int b){		
	int resultadoSoma = a + b;
	return resultadoSoma;
}

public int subtrair(int c, int d){		
	int resultadoSubtração = c - d;
	return resultadoSubtração;	
}

public static void main(String[] args) {
	Calculadora c = new Calculadora();
	int respSoma = c.somar(c.valorA, c.valorB);
	int respSubtração = c.subtrair(c.valorA, c.valorB);		
	System.out.println("\n" + "Valor da soma = " + respSoma + ".");
	System.out.println("Valor da subtração = " + respSubtração + ".");	
}

}[/code]

Bom dia, pelo q entendi, está dizendo para utilizar duas instâncias da classe calculadora, então vc deve criar uma instância (new) para soma e uma para subtração. Outra coisa, no enunciado diz que a classe Calculadora deve receber os valores no construtor, vc colocou os valores fixos, vc deve colocar os valores como parâmetros no construtor, estou enviando exemplos abaixo:

Construtor:

        public MaisCalculadora(int val1, int val2) {  
            this.val = val1;  
            this.vall = val2;        
        }  

Método main:

       public static void main(String[] args) {  
            // Valores passados para o construtor
            MaisCalculadora c = new Calculadora(20, 5);  
            int respSom = c.some(c.val, c.vall);  
            System.out.println("\n" + "Valor da soma = " + respSom + ".");              

            // Segunda instância de Calculadora() criada
            c = new Calculadora(20, 5);
            int respSub = c.subtrai(c.val, c.vall);       
            System.out.println("Valor da subtração = " + respSub + ".");      
        }

Neste caso os valores não deveriam ser depois passados para o método novamente.

Deveria ser simplesmente:

Calculadora c = new Calculadora(20, 5);  
int respSom = c.somar();
int respSubtração = c.subtrair();       
System.out.println("Valor da soma = " + respSoma + ".");  
System.out.println("Valor da subtração = " + respSubtração + ".");   

[quote=pmlm][quote=fabiocortolan]

            MaisCalculadora c = new Calculadora(20, 5);  
            int respSom = c.some(c.val, c.vall);  
          

[/quote]
Neste caso os valores não deveriam ser depois passados para o método novamente.

Deveria ser simplesmente:

Calculadora c = new Calculadora(20, 5); int respSom = c.somar(); int respSubtração = c.subtrair(); System.out.println("Valor da soma = " + respSoma + "."); System.out.println("Valor da subtração = " + respSubtração + "."); [/quote]

Realmente, esqueci d mudar essa parte. Valeu!

[list]Irmao, vc testou esta sugestão de código? Eu testei e não rodou. Vou colocar o código da forma que escrevi.[/list]

[code]public class Calculadora {

	int val;
	int vall;

	public Calculadora(int valA, int valB) {
		this.val = valA;
		this.vall = valB;		
	}
		
	public int some(int a, int b){		
		return a + b;
	}
	
	public int subtrai(int c, int d){		
		return c - d;	
	}
	
	public static void main(String[] args) {
		Calculadora c = new Calculadora(100, 50);
		int respSom = c.some();
		int respSub = c.subtrai();		
		System.out.println("\n" + "Valor da soma = " + respSom + ".");
		System.out.println("Valor da subtração = " + respSub + ".");	
	}

}[/code]
[list]Console[/list]
[list]Exception in thread “main” java.lang.Error: Unresolved compilation problems:
The method some(int, int) in the type Calculadora is not applicable for the arguments ()
The method subtrai(int, int) in the type Calculadora is not applicable for the arguments ()

at Calculadora.main(Calculadora.java:22)[/list]

seu metodo some() e subtrai() pede 2 argumentos cada, se vc quer somar / subtrair os numeros passados pelo construtor tira esses argumentos da assinatura do metodo…

[list]Poderia utilizar a classe Scanner no construtor, conforme minha primeira postagem, em vez de utilizar os valores fixos do outro exemplo, para que usuário entre com os valores?[/list]

[list]Yuri, porque só compila asssim:[/list]

[code]public class Calculadora {

	int val;
	int vall;

	public Calculadora(int valA, int valB) {
		this.val = valA;
		this.vall = valB;		
	}
		
	public int some(int a, int b){		
		return a + b;
	}
	
	public int subtrai(int c, int d){		
		return c - d;	
	}
	
	public static void main(String[] args) {
		Calculadora c = new Calculadora(100, 50);
		int respSom = c.some(c.val, c.vall);
		int respSub = c.subtrai(c.val, c.vall);		
		System.out.println("\n" + "Valor da soma = " + respSom + ".");
		System.out.println("Valor da subtração = " + respSub + ".");	
	}

}[/code]

Os teus métodos some e subtrai não devem receber so dois int a e b como argumento. Devem utilizar os valores já definidos no construtor.

public class Calculadora {  
              
        int valA;  
        int valB;  
      
        public Calculadora(int valA, int valB) {  
            this.valA = valA;  
            this.valB = valB;         
        }  
              
        public int some(){        
            return this.valA + this.valB;  
        }  
          
        public int subtrai(){         
            return this.valA - this.valB;     
        }  
          
        public static void main(String[] args) {  
            int valorTeste1 = 100; // aqui podes ler do Scanner em vez de ter valor fixo
            int valorTeste2 = 50; // aqui podes ler do Scanner em vez de ter valor fixo
            Calculadora c = new Calculadora(valorTeste1, valorTeste2);  
            int respSom = c.some();  
            int respSub = c.subtrai();       
            System.out.println("\n" + "Valor da soma = " + respSom + ".");  
            System.out.println("Valor da subtração = " + respSub + ".");      
        }  
          
} 

http://www.fatene.edu.br/inicio

Faculdade de Tecnologia do Nordeste
Recredenciada pelo MEC - Portaria No 259
Rua Matos Vasconcelos, 1626 - Bairro Damas
CEP: 60426-110 / Fortaleza - Ceará - Brasil