Olá,
Você pode partir dessa implementação:
[code]public class Exercicio {
private Ponto p1;
private Ponto p2;
public static void main( String[] args ) {
new Exercicio();
}
public Exercicio(){
p1 = getPonto();
p2 = getPonto();
// aqui eu chamei a action na mao... mas quando estiver na sua interface grafica..
// deverá ser removida, pois o evento será tratado pelo swing
new ActionCalcula().actionPerformed( new ActionEvent( this, ActionEvent.ACTION_PERFORMED, "" ) );
}
private Ponto getPonto(){
double x = recebeEntrada();
double y = recebeEntrada();
return new Ponto( x, y );
}
private double recebeEntrada(){
Scanner scanner = new Scanner( System.in );
try {
System.out.print( "Informe uma coordenada para o referido ponto: " );
double coordenada = scanner.nextDouble();
return coordenada;
}
// trata a possibilidade do usuario digitar algo que não seja um número valido...
// vc pode verificar no javadoc que o método Scanner.nextDouble() lança esta execeção
catch ( InputMismatchException e ) {
System.out.println();
System.out.println( "A entrada nãos e refere a um número válido. Tente novamente." );
return recebeEntrada();
}
}
class ActionCalcula implements ActionListener{
@Override
public void actionPerformed( ActionEvent e ) {
if ( p1 == null || p2 == null ){
throw new IllegalStateException( "Os pontos ainda não foram informados. Não é possível realizar o cálculo" );
}
// aqui foi feito o mesmo que vc já havia feito... exceto pelo fato de usar os
// métodos do objeto Ponto para obter os valores...
// eu preferi escrever numa linha so por comodidade... :P
double distancia = Math.sqrt( Math.pow( p2.getX() - p1.getX(), 2 ) + Math.pow( p2.getY() - p1.getY(), 2 ) );
//aqui vc decide o que vai fazer com o valor obtido... eu so vou escrever no console
System.out.println( distancia );
}
}
}
class Ponto{
private double x;
private double y;
Ponto( double x, double y ){
this.x = x;
this.y = y;
}
// o encapsulamento se refere a vc criar atributos de classe privados e fornecer
// interfaces (nesse caso, os métodos get e set) para que possam ser acessados externamente
public double getX() {
return x;
}
public void setX( double x ) {
this.x = x;
}
public double getY() {
return y;
}
public void setY( double y ) {
this.y = y;
}
}[/code]
Só não criei uma interface, como foi sugerido, por comodidade… não achei necessário, mas você vai decidir o que será mais adequado ao seu ambiente.
Eu usei o console ao invés de uma interface gráfica como sugerido no seu exercício. Assim, se você tiver um pouquinho de vontade e fizer as devidas alterações conseguirá adaptá-lo com facilidade dentro de um ambiente gráfico.
Procurei utilizar os conceitos cobrados no exercício, é provável que eu tenha exagerado. Mas assim você deve conseguir visualizar o uso de classes, métodos e tratamento de exceções. Esta implementação não é definitiva, existem vários pontos que podem ser modificados… mas eu escrevi aqui meio que na correria (quando comecei estava sem fazer nada… agora estou atolado :S ).
Espero ter ajudado,
[]s