• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Blackie

Dúvida Classe Quadrado

4 mensagens neste tópico

Boas,

Estou a criar uma classe Quadrado e uma classe para teste. Depois de algum (bastante) tempo gasto, não consigo pôr isto a funcionar. Tem quatro erros na classe de teste que não consigo resolver. Se possível peço ajuda de alguém.

Deixo aqui o código das duas classes.

Obrigado

-------------------- Classe Teste
package quadrados;
import javax.swing.JOptionPane;

public class ShapeTeste
{
    public static void main(String[] args)
    {
            Square square1 = new Square ( 50 );
             
        //Get side do Quadrado (Square)
            double side = Square.getSide();   // **** Esta linha DÁ ERRO
               
        //Get perimetro do Quadrado (Square)
            double perimeter = Square.getPerimeter();  // ****Esta linha DÁ ERRO
            
        //Get area do Quadrado (Square)
            double area1 = Square.getArea();  // ****Esta linha DÁ ERRO
            
            String input = JOptionPane.showInputDialog( "Digitar valor para o lado (side) do Quadrado: " );
            squareOne = Double.parseDouble( input );  // converter para numero   // ****Esta linha DÁ ERRO
            
    }
}

-------------------- Classe Quadrado
package quadrados;
import javax.swing.JOptionPane;

public class Square
{
    private double side;
   
    public Square(double squareOne)
    {
        side = squareOne;
    }
    
    private void setSide(double squareOne)
    {
        side = squareOne;
    }
    
    public double getSide()
    {
        return side;
    }
    
    public double getPerimeter()
    {
        return 4 * side;
    }

    public double getArea()
    {
        return side * side;
    }
} 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens esses erros porque estás a tentar aceder a um método de instância usando a forma de aceder a métodos de classe.

Em vez de Square.get... usa square1.get...

Métodos de instância precisam de uma instância válida para poderem ser invocados, a forma que estás a usar e que está a dar erros é usada apenas em métodos de classe, que são declarados usando a palavra reservada static e são acedidos usando o nome da classe. Este tipo de métodos tem aplicações muito especificas e não se aplicam ao que estás a fazer.

Em relação ao último erro, a variável squareOne nunca foi declarada, estás a usar uma variável não declarada.

Outras notas:

- tens um método set como privado, o que derrota a ideia dos métodos set/get;

- o não uso do geshi e a identação que não segue as regras não ajuda a ler teu código :P;

- estás a fazer um import na classe Quadrado que não é preciso, não sei se foi erro a copiar ou se existe mesmo no código;

- o método parseDouble pode lançar uma excepção e não estás a verificar isso, tem cuidado com essas situações em casos mais complexos.

Como nota final, e isso é infelizmente comum, os erros que dão são importantes, deves de os indicar quando colocas dúvidas. Só dizer que "dá erro" não chega é preciso saber que erro é, até porque se tivesses dito que erro era eu não tinha de ter estado ver o teu código, era imediato :P

E os erros dão muita informação, estes que tinhas estavam bem explicados, bastava que os lesses com alguma atenção :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

... Em relação ao último erro, a variável squareOne nunca foi declarada, estás a usar uma variável não declarada.

Já emendei tudo excepto o último erro, porque, peço desculpa mas não sei onde e como devo declarar a variável e qual a sintaxe correcta.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já emendei tudo excepto o último erro, porque, peço desculpa mas não sei onde e como devo declarar a variável e qual a sintaxe correcta.

Obrigado

Hum...

Declarar variáveis devia ser a primeira coisa que devias aprender, aliás, tu já declaraste uma variável :P

Square square1 = new Square ( 50 );

Neste caso declaraste e iniciaste a variável numa só linha.

Para declarares uma variável terás apenas de indicar o tipo que a variável vai possuir e o nome, podes opcionalmente iniciar a variável quando a declaras ou podes deixá-la por iniciar.

Assim o código que tens passa a:

double squareOne = Double.parseDouble( input );  // converter para numero

ou

double squareOne;
squareOne = Double.parseDouble( input );  // converter para numero

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora