Usar objeto como parametro [RESOLVIDO]

7 respostas
Rudy

E ae pessoas, olha eu de novo…

Tenho um exercicio para fazer, estou tendo alguns probleminha com ele.
1º Tenho que fazer um método que retorne duas coordenadas que são atributos da minha classe, coordenadaX e coordenadaY de jeito que os atributos possam ser lidos por outros objetos, para falar a verdade ñ sei como fazer isso, estou dando umas gugada e não encontro nada que me ajude.

2º Tinha que escrever um método que recebe como parametro dois inteiros, que representam as coordenadas X e Y de um outro ponto e retorne a distancia entre estes pontos. O método esta assim

public int distancia(int x2, int y2)
   	{
   		int distanciaEntrePontos=Math.sqrt(Math.pow(coordenadaX-x2,2)+
   														  Math.pow(coordenadaY-y2,2));
   		return distanciaEntrePontos;
   	}

Escrito deste jeito ele ñ quer compilar, mas se ao invés de int eu usar double ele compila, por que isso?

3º e eu tenho que escrever uma outra versão deste método, mas que reseba como unico parametro um objeto da classe ponto, ñ sei como fazer isso.

A minha classe está assim

public class Ponto
   {	
      private int coordenadaX;
      private int coordenadaY;
      private String cor;
   
   
       public Ponto()
      {
         int coordenadaX;
         int coordenadaY;
         String cor;
      }
   
   
       public void novasCoordenadas(int x1, int y1)
      {
         int coordenadaX=x1;
         int coordenadaY=y1;
      }
   
   
       public void novaCor(String cor)
      {
         this.cor=cor;
      }
   
   
       public int coordenadas()
      {
         return coordenadaX;
         return coordenadaY;
      }
   
   
       public String cor()
      {
         return cor;
      }
   
   
   	public int distancia(int x2, int y2)
   	{
   		int distanciaEntrePontos=Math.sqrt(Math.pow(coordenadaX-x2,2)+
   														  Math.pow(coordenadaY-y2,2));
   		return distanciaEntrePontos;
   	}
   	
   	public int distancia2()
   	{
   	}
}

Alguem pode me ajuda?

7 Respostas

airtonarantes
1º Tenho que fazer um método que retorne duas coordenadas que são atributos da minha classe, coordenadaX e coordenadaY de jeito que os atributos possam ser lidos por outros objetos, para falar a verdade ñ sei como fazer isso, estou dando umas gugada e não encontro nada que me ajude.

Dê uma olhada em variaveis de classe static

2º Tinha que escrever um método que recebe como parametro dois inteiros, que representam as coordenadas X e Y de um outro ponto e retorne a distancia entre estes pontos.
Por que voce nao faz um metodo get que retorne o valor das coordenadas?

Escrito deste jeito ele ñ quer compilar, mas se ao invés de int eu usar double ele compila, por que isso?

Muito provavelmente isso retornará um double, visto que ao calcular a raiz quadrada desse troço ai vai dar um numero real Math.sqrt(Math.pow(coordenadaX-x2,2)+ Math.pow(coordenadaY-y2,2));

public class Ponto
   {	
      private int coordenadaX; //OK
      private int coordenadaY; //OK
      private String cor; //OK
   
   /*
       public Ponto() // ESSE CONSTRUTOR NAO FAZ NADA
      {
         int coordenadaX; // POR QUE VOCE TA FAZENDO ISSO AQUI?, VOCE JA DECLAROU LA EM CIMA
         int coordenadaY; // IDEM
         String cor; //IDEM
      }
   
   */
     // CONSTRUTOR CORRETO
	public Ponto(int X, int Y, String C)
	{
		coordenadaX = X;
		coordenadaY = Y;
		cor = C;
	}     

  public void novasCoordenadas(int x1, int y1)
      {
         //int coordenadaX=x1; // NAO PRECISA DECLARAR NOVAMENTE, coordenadaX e coordenadaY voce  ja tem
         //int coordenadaY=y1; //IDEM
	 // ajeitando
	coordenadaX=x1;
	coordenadaY=y1;        
      }
   
   
       public void novaCor(String cor)// altera a cor....OK
      {
         this.cor=cor;//OK
      }
   
   
       public int coordenadas() // ACONSELHO FAZER UMA FUNCAO PARA CADA COORDENADA NESSE MESMO FORMATO
      {
         return coordenadaX; // A FUNCAO VAI PARAR AQUI, NAO EXECUTANDO O SEGUNDO RETURN
         return coordenadaY;// ISSO NUNCA SERA EXECUTADO
      }
   
   
       public String cor() //OK
      {
         return cor; //OK
      }
   
   
   	public int distancia(int x2, int y2)
   	{
   		int distanciaEntrePontos=Math.sqrt(Math.pow(coordenadaX-x2,2)+
   														  Math.pow(coordenadaY-y2,2));
   		return distanciaEntrePontos;//ESSA VARIAVEL DIFICILMENTE SERA UM INT, POR CAUSA DA RAIZ QUADRADA
   	}
   	
   	public int distancia2()
   	{
   	}
}

Vai tentando ai agora. qualquer coisa dá um grito

Rudy

airtonarantes:

Vai tentando ai agora. qualquer coisa dá um grito

Blz vlw airtonarantes, amanhã eu tento obrigado pela atenção…

Rudy

Agradeço pela ajuda, ficou assim minha classe…

/**
	 *A classe ponto representa um papel
	 *que srvirar para fazer desenhos gráficos
	 */
    public class Ponto
   {	
		//Atributos que definem as cordenadas 
		//dos pontos criados no papel
      private int coordenadaX;
      private int coordenadaY;
		//Atributo que define a cor do papel
      private String cor;
   
   /**
	 *Construtor da classe, carrega
	 *valores para os atributos coordenadaX e 
	 *coordenadaY
	 */
       public Ponto(int X, int Y)
      {
         coordenadaX = X;
         coordenadaY = Y;
         String cor;
      }
   
   
   /**
	 *Método para alterar a cor do papel
	 */
       public void novaCor(String cor)
      {
         this.cor=cor;
      }
   	
		/**
		 *Método para carregar novos valores para os
		 *atributos da classe
		 */
       public void novaCoordenada(int x, int y)
      {
         coordenadaX = x;
         coordenadaY = y;
      }
   
   	/**
		 *Método de acesso para coordenadaX
		 */
       public int Xcoordenada()
      {
         return coordenadaX;
         
      }
   	
		/**
		 *Método de acesso para coordenadaY
		 */
       public int Ycoordenada()
      {
         return coordenadaY;
      }   
   	
		/**
		 *Método de acesso para a cor
		 */
       public String corAtual()
      {
         return cor;
      }
   
   	/**
		 *Método que recebe dois parâmetros como novas coordenadas.
		 *e calcula a distância entre os pontos
		 */
       public int distancia(int x2, int y2)
      {
         double distanciaEntrePontos=Math.sqrt(Math.pow(coordenadaX-x2,2)+
            										  Math.pow(coordenadaY-y2,2));
         return (int)distanciaEntrePontos;
      }
   	
		/**Parecido com o método acima citado,
		 *este método ao invés de receber dois paremetros
		 *como novas coordenadas, ele recebe apenas um objeto da classe Ponto.
		 */
       public int distancia2(Ponto b)
      {
         double distanciaEntrePontos=Math.sqrt(Math.pow(coordenadaX-b.Xcoordenada(),2)+
            										  Math.pow(coordenadaY-b.Ycoordenada(),2));
         return (int)distanciaEntrePontos;			
      }
}
airtonarantes
/**
	 *A classe ponto representa um papel
	 *que srvirar para fazer desenhos gráficos
	 */
    public class Ponto
   {	
		//Atributos que definem as cordenadas 
		//dos pontos criados no papel
      private int coordenadaX;
      private int coordenadaY;
		//Atributo que define a cor do papel
      private String cor;
   
   /**
	 *Construtor da classe, carrega
	 *valores para os atributos coordenadaX e 
	 *coordenadaY
	 */
       public Ponto(int X, int Y)
      {
         coordenadaX = X;
         coordenadaY = Y;
         String cor;// POR QUE ESSA DECLARACAO AQUI, cor JA FOI DECLARADA,COLOQUE UM TERCEIRO PARAMETRO c e FAÇA cor = c;
      }
   
   
   /**
	 *Método para alterar a cor do papel
	 */
       public void novaCor(String cor)
      {
         this.cor=cor;
      }
   	
		/**
		 *Método para carregar novos valores para os
		 *atributos da classe
		 */
       public void novaCoordenada(int x, int y)
      {
         coordenadaX = x;
         coordenadaY = y;
      }
   
   	/**
		 *Método de acesso para coordenadaX
		 */
       public int Xcoordenada()
      {
         return coordenadaX;
         
      }
   	
		/**
		 *Método de acesso para coordenadaY
		 */
       public int Ycoordenada()
      {
         return coordenadaY;
      }   
   	
		/**
		 *Método de acesso para a cor
		 */
       public String corAtual()
      {
         return cor;
      }
   
   	/**
		 *Método que recebe dois parâmetros como novas coordenadas.
		 *e calcula a distância entre os pontos
		 */
       public int distancia(int x2, int y2)
      {
         double distanciaEntrePontos=Math.sqrt(Math.pow(coordenadaX-x2,2)+
            										  Math.pow(coordenadaY-y2,2));
//ESSA INSTRUÇÃO return ABAIXO PODE NAO RETORNAR UM VALOR CORRETO, DIGAMOS QUE A RAIZ SEJA 1.54, MAS SERÁ RETORNADO APENAS A PARTE INTEIRA DO NUMERO, NO CASO, O NUMERO 1       
	  return (int)distanciaEntrePontos;
      }
   	
		/**Parecido com o método acima citado,
		 *este método ao invés de receber dois paremetros
		 *como novas coordenadas, ele recebe apenas um objeto da classe Ponto.
		 */
       public int distancia2(Ponto b)
      {
         double distanciaEntrePontos=Math.sqrt(Math.pow(coordenadaX-b.Xcoordenada(),2)+
            										  Math.pow(coordenadaY-b.Ycoordenada(),2));
         return (int)distanciaEntrePontos;// MESMA EXPLICAÇÃO DO METODO distancia()			
      }
}
Rudy

airtonarantes:
public int distancia(int x2, int y2) { double distanciaEntrePontos=Math.sqrt(Math.pow(coordenadaX-x2,2)+ Math.pow(coordenadaY-y2,2)); //ESSA INSTRUÇÃO return ABAIXO PODE NAO RETORNAR UM VALOR CORRETO, DIGAMOS QUE A RAIZ SEJA 1.54, MAS SERÁ RETORNADO APENAS A PARTE INTEIRA DO NUMERO, NO CASO, O NUMERO 1 return (int)distanciaEntrePontos; }

Eu entendi o que vc quis dizer, já tinha pensado nisso. No meu exercicio pede para receber dois parametros inteiros e retornar um unmero real, ainda estou pesquisando como fazer o retorno

E quanto a cor, obrigado pela observação, já está corrigido.

airtonarantes

declare um metodo que retorne um double, assim

public double distancia(int x2, int y2) { double distanciaEntrePontos=Math.sqrt(Math.pow(coordenadaX-x2,2)+ Math.pow(coordenadaY-y2,2)); return distanciaEntrePontos; }

acho que agora vai :smiley:

Rudy

airtonarantes:

declare um metodo que retorne um double, assim

public double distancia(int x2, int y2) { double distanciaEntrePontos=Math.sqrt(Math.pow(coordenadaX-x2,2)+ Math.pow(coordenadaY-y2,2)); return distanciaEntrePontos; }

acho que agora vai :D

Agora sim completamente resolvido…

Vlw airtonarantes
:smiley:

Criado 31 de agosto de 2008
Ultima resposta 7 de set. de 2008
Respostas 7
Participantes 2