Atribuição do teclado

Olá pessoal, sou novo no fórum, ainda naum postei nenhum tópico, pórém estou com dificuldade em descobrir qual o erro em:

[code]//Classe Operações

package Calculadora;

public class Operacoes
{
protected int numero1;
protected int numero2;
protected int tipoOper;

public void setNumero1(int numero1)
{
    this.numero1 = numero1;
}
public void setNumero2(int numero2)
{
    this.numero2 = numero2;
}
public int getNumero1()
{
    return numero1;
}
public int getNumero2()
{
    return numero2;
}
public void setTipoOper(int tipoOper)
{
    this.tipoOper = tipoOper;
}
public int getTipoOper()
{
    return tipoOper;
}

}

/Classe Soma

package Calculadora;

public class Soma extends Operacoes
{
public void Somar()
{
float resul = (super.getNumero1() + super.getNumero2());
System.out.println(resul + “\n”);
}

}

/Classe Teste
package Calculadora;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Teste
{
public static void main(String argggg[]) throws IOException
{
Operacoes op = new Operacoes();
Soma s = new Soma();
BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
System.out.println(“Insira o primeiro valor :”);
op.setNumero1(Integer.parseInt(b.readLine()));
System.out.println(“Insira o segundo valor :”);
op.setNumero2(Integer.parseInt(b.readLine()));
System.out.println(“Selecione a operação: 1 = Soma, 2 = Subtraçaõ, 3 = Divisão, 4 = Multiplicação , 5 = Sair\n”);
op.setTipoOper(Integer.parseInt(b.readLine()));
switch(op.getTipoOper())
{
case 1:
s.Somar();
break;
case 5:
System.exit(0);
break;
default:
System.out.print(“Voce não inseriu nenhum dos itens de escolha”);
break;

    }
}

}[/code]

Ele imprime na tela sempre zero no resultado!!!Sei que ele não esta atribuindo Os valores recebidos de teclado para o lugar certo que seria a superclasse…
mas porque???
se alguem puder me ajudar!!
grato

Ué, vc está fazendo os sets no objeto op, mas está tentando obter a soma do objeto s.

Seu main deveria ser:

[code]/Classe Teste
package Calculadora;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Teste
{
public static void main(String argggg[]) throws IOException
{
Soma op = new Soma();
BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
System.out.println(“Insira o primeiro valor :”);
op.setNumero1(Integer.parseInt(b.readLine()));
System.out.println(“Insira o segundo valor :”);
op.setNumero2(Integer.parseInt(b.readLine()));
System.out.println(“Selecione a operação: 1 = Soma, 2 = Subtraçaõ, 3 = Divisão, 4 = Multiplicação , 5 = Sair\n”);
op.setTipoOper(Integer.parseInt(b.readLine()));
switch(op.getTipoOper())
{
case 1:
op.Somar();
break;
case 5:
System.exit(0);
break;
default:
System.out.print(“Voce não inseriu nenhum dos itens de escolha”);
break;

    }
}

}[/code]

Se quisesse usar polimorfismo, veja o exemplo da Wikipedia (que por sinal eu escrevi):

OPa funcionou…hehe…

Mas não entendi, voce criou um objeto de soma, mas os getters e setters estão na classe operações, e mesmo assim eles receberam!!??Por que???

Poderia me explicar
grato mais uma vez

Eu não havia terminado o codigo, tinha apenas feito a classe de soma, mas agora fiz a de subtração divisao e multiplicaçaõ, mas com aquele codigo á atribuido apenas para soma, e subtração e o restante continua com o mesmo problema de antes…

teria alguma forma de resolver esse problema???

grato mais uma vez

os atributos sao protected da classe operador/??? pq??? se protected só é acessado dentro da classe e suas subclasses quando é extendida!

poderia fazer um loop pra melhor esse codigo na hora de passar os valores ! ficaria mais pratico e facil entendimento ! sem muita poluição de codigo!
[quote]uma IDEIA!!! vlw!!![/quote]

Eu pus protected para que não sejam vistos de fora do pacote, pq estao todos no mesmi pacote, mas acho q naum eh isso q nao esta deixando funcionar certo???

como que poderia ser feito esse loop com while, for???
de q forma…

obrigado a todos vs pela atençao

[quote=Ronald_lima]OPa funcionou…hehe…

Mas não entendi, voce criou um objeto de soma, mas os getters e setters estão na classe operações, e mesmo assim eles receberam!!??Por que???

Poderia me explicar
grato mais uma vez[/quote]

Por causa da herança. Como a Soma extends Operacoes, soma terá todos os métodos e atributos que operações tem.

[quote=ViniGodoy][quote=Ronald_lima]OPa funcionou…hehe…

Mas não entendi, voce criou um objeto de soma, mas os getters e setters estão na classe operações, e mesmo assim eles receberam!!??Por que???

Poderia me explicar
grato mais uma vez[/quote]

Por causa da herança. Como a Soma extends Operacoes, soma terá todos os métodos e atributos que operações tem.[/quote]

Obrigado…foi esclarecedor, vi seu artigo postado sobre polimorfismo…muito bacana tbm…vlw a ajuda

Tomei a liberdade de implementar um codigo diferente e peço que vc melhore a a formatação para o que vc deseja:

Classe Operacoes:[code]package calculadora;

public class Operacoes {

    // metodo para somar.....
public float soma(int a, int b){
	return (a + b);
}

//metodo subtrair e por diante…
public float subtracao(int a, int b){

	return (a - b); 
}
public float multiplica(int a, int b ){
	return (a * b);
}

public float divide(int a, int b){
	return(a /b); 
}

}[/code]

classe Main ou principal

[code]
public class Main {

public static void main(String[] args) throws IOException {
	Scanner s = new Scanner(System.in);  
   	
   System.out.println("Digite um Numero........:");  
	 int a = (Integer)s.nextInt();
	System.out.println("Digite outro Numero....:"); 
	 int b = (Integer)s.nextInt();
	System.out.println("\tSelecione a operação:\t\n1 = Soma,\t\n 2 = Subtração,\t\n 3 = Multiplicação,\t\n 4 = Divisão,\t\n 5 = Sair\n"); 
	int opcao = (Integer)s.nextInt(); 
	 
	Operacoes op = new Operacoes();
	switch (opcao) {
	case 1:
		System.out.println(op.soma(a, b));
		break;
	case 2:
		op.subtracao(a, b);
		break;
	case 3:
		op.multiplica(a, b);
		break;
	case 4:
		op.divide(a, b);
		break;
	case 5:
		System.exit(0);
		break;
		
	default:
		System.out.println("Opção Invalida.............!");
		break;
	}
} 

}[/code]

Realmente não foi necessário nem de loop de acordo com a logica da calculadora ! Mas se precisasse continuar calculando ai precisaria!

você pode fazer uma melhora com um metodo recursivo! mas ai é contigo !! Espero ter ajudado na sua duvida! Afinal nesse caso não seria necessário o uso de get e set …

vlw

[quote=paulo.rogeriobr]Tomei a liberdade de implementar um codigo diferente e peço que vc melhore a a formatação para o que vc deseja:

Classe Operacoes:[code]package calculadora;

public class Operacoes {

    // metodo para somar.....
public float soma(int a, int b){
	return (a + b);
}

//metodo subtrair e por diante…
public float subtracao(int a, int b){

	return (a - b); 
}
public float multiplica(int a, int b ){
	return (a * b);
}

public float divide(int a, int b){
	return(a /b); 
}

}[/code]

classe Main ou principal

[code]
public class Main {

public static void main(String[] args) throws IOException {
	Scanner s = new Scanner(System.in);  
   	
   System.out.println("Digite um Numero........:");  
	 int a = (Integer)s.nextInt();
	System.out.println("Digite outro Numero....:"); 
	 int b = (Integer)s.nextInt();
	System.out.println("\tSelecione a operação:\t\n1 = Soma,\t\n 2 = Subtração,\t\n 3 = Multiplicação,\t\n 4 = Divisão,\t\n 5 = Sair\n"); 
	int opcao = (Integer)s.nextInt(); 
	 
	Operacoes op = new Operacoes();
	switch (opcao) {
	case 1:
		System.out.println(op.soma(a, b));
		break;
	case 2:
		op.subtracao(a, b);
		break;
	case 3:
		op.multiplica(a, b);
		break;
	case 4:
		op.divide(a, b);
		break;
	case 5:
		System.exit(0);
		break;
		
	default:
		System.out.println("Opção Invalida.............!");
		break;
	}
} 

}[/code]

Realmente não foi necessário nem de loop de acordo com a logica da calculadora ! Mas se precisasse continuar calculando ai precisaria!

você pode fazer uma melhora com um metodo recursivo! mas ai é contigo !! Espero ter ajudado na sua duvida! Afinal nesse caso não seria necessário o uso de get e set …

vlw

[/quote]

POxa vlw ai rogerio…vc ajudou e muito…obrigadao msm…