Iniciante - Orientação a objetos

5 respostas
F

Prezados Colegas,

Eu sou iniciante em Java e como sou autodidata, não tenho outras pessoas pra perguntar a não ser aqui no fórum. Eu gostaria de saber se eu estou no caminho certo em OO.

Primeiro eu fiz este programa(Sem OO):

import javax.swing.JOptionPane;

public class Exemplo3b{
    public static void main(String args[]){
        int numero[]=new int[3];
        int soma;
        
        numero[0]=Integer.parseInt(JOptionPane.showInputDialog("Primeiro número:"));
        numero[1]=Integer.parseInt(JOptionPane.showInputDialog("Segundo número:"));
        numero[2]=Integer.parseInt(JOptionPane.showInputDialog("Terceiro número:"));
        
        soma=numero[0]+numero[1]+numero[2];
        
        JOptionPane.showMessageDialog(null,"A soma dos números " + numero[0] + ", " + numero[1] + ", " + numero[2] + " é: " + soma + ".","Resultado",JOptionPane.INFORMATION_MESSAGE);
        System.exit(0);
    }
}

Depois o refiz utilizando os conceitos de OO:

import javax.swing.JOptionPane;

class Exemplo{
    private int numero[]=new int[3];
    private int soma;
    
    Exemplo(){
        numero[0]=0;
        numero[1]=0;
        numero[2]=0;
        soma=0;
    }
    
    public void setprimeironumero(){
        numero[0]=Integer.parseInt(JOptionPane.showInputDialog("Primeiro número:"));
    }
    
    public void setsegundonumero(){
        numero[1]=Integer.parseInt(JOptionPane.showInputDialog("Segundo número:"));
    }
    
    public void setterceironumero(){
        numero[2]=Integer.parseInt(JOptionPane.showInputDialog("Terceiro número:"));
    }
    
    public void getsoma(){
        soma=numero[0]+numero[1]+numero[2];
        JOptionPane.showMessageDialog(null,"A soma dos números " + numero[0] + ", " + numero[1] + ", " + numero[2] + " é: " + soma + ".","Resultado",JOptionPane.INFORMATION_MESSAGE);
        System.exit(0);
    }
}

public class Exemplo3c{
    public static void main(String args[]){
        Exemplo novasoma = new Exemplo();
        
        novasoma.setprimeironumero();
        novasoma.setsegundonumero();
        novasoma.setterceironumero();
        novasoma.getsoma();
    }
}

Como eu já havia dito no começo eu gostaria de saber se eu estou no caminho certo, se eu estou pensando certo.

Obrigado pela atenção e qualquer comentário e dica serão bem-vindos.

Filipe dos Santos
Vitória/ES

5 Respostas

J

O problema ao meu ver, é que você criou uma classe grande e gorda, que faz tudo…

O ideal é deixar a classe “Exemplo” só pra fazer os calculos, a parte de interface grafica seria responsabilidade de outra classe.

F

Prezado Jair,

Muito obrigado pela atenção e dica.

Gostaria de saber se agora melhorou:

import javax.swing.JOptionPane;

class Exemplo{
    private int numero[]=new int[3];
    private int soma;
    
    Exemplo(){
        numero[0]=0;
        numero[1]=0;
        numero[2]=0;
        soma=0;
    }
    
    public void setprimeironumero(int num){
        numero[0]=num;
    }
    
    public void setsegundonumero(int num){
        numero[1]=num;
    }
    
    public void setterceironumero(int num){
        numero[2]=num;
    }
    
    public int getsoma(){
        soma=numero[0]+numero[1]+numero[2];
        return soma;
    }
}

public class Exemplo3d{
    public static void main(String args[]){
        Exemplo novasoma = new Exemplo();
        
        novasoma.setprimeironumero(Integer.parseInt(JOptionPane.showInputDialog("Primeiro número:")));
        novasoma.setsegundonumero(Integer.parseInt(JOptionPane.showInputDialog("Segundo número:")));
        novasoma.setterceironumero(Integer.parseInt(JOptionPane.showInputDialog("Terceiro número:")));
        JOptionPane.showMessageDialog(null,"A soma dos três números é: " + novasoma.getsoma(),"Resultado",JOptionPane.INFORMATION_MESSAGE);
        System.exit(0);
    }
}

Foi bom a sua dica eu esqueci que devemos separar a interface da regra do negócio.

Obrigado novamente pela atenção.

Filipe dos Santos
Vit

C

Em vez de criar tres metodos de Sets, seria melhor criar um soh metodo assim :

...

private int posicao = 0;

...


public void setNumeto(int num){ 
        numero[posicao]=num; 
        posicao++;
}

Agora, acho q nao eh preciso de colocar System.exit(0); neste codigo.

F

Prezado c0m4nch3,

O código ficou assim agora:

import javax.swing.JOptionPane;

class Exemplo{
    private int numero[]=new int[3];
    private int soma;
    private int posicao=0;
    
    Exemplo(){
        numero[0]=0;
        numero[1]=0;
        numero[2]=0;
        soma=0;
    }
    
    public void setnumero(int num){
        numero[posicao]=num;
        posicao++;
    }
      
    public int getsoma(){
        soma=numero[0]+numero[1]+numero[2];
        return soma;
    }
}

public class Exemplo3e{
    public static void main(String args[]){
        Exemplo novasoma = new Exemplo();
        
        novasoma.setnumero(Integer.parseInt(JOptionPane.showInputDialog("Primeiro número:")));
        novasoma.setnumero(Integer.parseInt(JOptionPane.showInputDialog("Segundo número:")));
        novasoma.setnumero(Integer.parseInt(JOptionPane.showInputDialog("Terceiro número:")));
        JOptionPane.showMessageDialog(null,"A soma dos três números é: " + novasoma.getsoma(),"Resultado",JOptionPane.INFORMATION_MESSAGE);
    }
}

Obrigado pela dica. Diminuiu código e acabou com a redundância.

Filipe dos Santos
Vitória/ES

L

Eu acho que enquanto a sua classe que faz a soma se chamar “Exemplo” tem algo errado ehhehe

eu acho que faria assim:

interface Operacao {
     double opera(double num1, double num2);
}

public class Soma implements Operacao {

      public double opera(double num1, double num2) {
            return num1 + num2;
      }
}



public class Teste {

	public static void main(String[] args) {
		Integer n1 = Integer.parseInt(JOptionPane
				.showInputDialog("Primeiro número:"));
		Integer n2 = Integer.parseInt(JOptionPane
				.showInputDialog("Segundo número:"));
		Integer n3 = Integer.parseInt(JOptionPane
				.showInputDialog("Terceiro número:"));

		Operacao op = new Soma();
		double resultado = op.opera(n3, op.opera(n1, n2));

		JOptionPane.showMessageDialog(null, "A soma dos três números é: "
				+ resultado, "Resultado", JOptionPane.INFORMATION_MESSAGE);
	}

}
Criado 1 de maio de 2007
Ultima resposta 4 de mai. de 2007
Respostas 5
Participantes 4