FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . Nós temos 754.111 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.

Resposta
 
Opções do Tópico
Antigo 28-10-2004, 11:39   #1 (permalink)
Balrog
Newbie
 
Registrado em: Sep 2004
Localização: São Paulo
Mensagens: 39
Reputação: 0 Balrog está indo no caminho certo
Enviar mensagem via ICQ para Balrog Enviar mensagem via MSN para Balrog
Padrão Java - Parâmetros por Referência

Hail Pessoal!

Alguém aí sabe como fazer passagem de parâmtros por referência, em Java?

Outra coisa, eu estou aprendendo Java, e quem está me ensinando disse que devo ter o corpo do programa como:

Código:
public static void main(String args[]) { <comandos> }
Alguém sabe pra quê servem o public e o static? E o String args[] (eu sei que se trata de parâmetros do corpo principal, mas eu uso isso?)

Aguardo uma resposta!
VLW!!!
__________________
Flame of Udûn
Balrog está offline   Responder com Quote
Antigo 28-10-2004, 16:31   #2 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.724
Reputação: 778 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

o java, assim como o C, não tem uma "passagem por referência" explícita.

No C, isso é contornado com o uso de ponteiros; assim, ao invés de vc passar a variável por referência, vc passa a referência para ela (que é um ponteiro). Por ex.:

Código:
scanf( "%d", &x );
No Java, não existem ponteiros: existem objetos. Assim, toda variável do tipo "objeto" é, na realidade, uma referência para aquela instância do objeto.

Sugiro fortemente a você que reveja o seu código, pois a princípio, em programação Orientada a Objeto, nunca seria necessário passar um parâmetro por referência: isso vai contra o princípio do encapsulamento. Se você está precisando alterar um parâmetro, então esse código está no lugar errado.

Agora, se vc não encontrar uma forma de evitar essa passagem por referência, sugiro que vc defina um objeto, inicialize-o com os valores que devem ser alterados, e passe esse objeto como parâmetro. Dentro da função, vc pode alterar os atributos desse objeto à vontade.

Citação:
Alguém sabe pra quê servem o public e o static? E o String args[] (eu sei que se trata de parâmetros do corpo principal, mas eu uso isso?)
public, private e package são "modificadores de escopo" para um atributo, método ou classe.

public significa que todos tem acesso total a esse atributo/método (o objeto que eu citei acima teria que ter todos os atributos públicos).
Uma classe pública pode ser utilizada em qualquer programa.

private significa que esse atributo/método só pode ser acessado por métodos da própria classe. Uma classe private só pode ser acessada dentro do próprio módulo.

package é o modo assumido quando não há outro modificador. Significa que o atributo/método/classe pode ser usado por outras classes que estejam no mesmo pacote. O pacote é definido no início do arquivo fonte. ex.: package javax.swing.TextArea

static é o modificador que cria atributos/métodos de classe. Um atributo de classe tem o mesmo valor para todas as instâncias daquela classe. Um método de classe é tal que a classe não precisa ser instanciada para que o método seja chamado. O melhor exemplo de método de classe são os contrutores e destrutores, e o método System.main(), que é chamado antes de que qualquer instância de qq objeto possa ser criada.

O parâmetro recebido pelo método System.main é um array de objetos do tipo String. É o equivalente Java do conhecido "argv[]". Corresponde a cada um dos parâmetros que o usuário passou na linha de comando ao chamar este programa.

Se vc viu este tópico, lá a gente discutiu que quando vc não conhece o tamanho do array (caso do argv[]), vc tem que passar o tamanho desse array para qq função que precise manipulá-lo. Daí o outro parâmetro, argc.

Código:
int main( int argc, char *argv[] );
Já em java, um array é um objeto; e, como todo objeto, tem atributos e métodos. Um dos métodos da classe Array é justamente o tamanho do array (Array.length()). Por isso não é necessário passar o tamanho desse array.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Antigo 28-10-2004, 20:20   #3 (permalink)
Tubiluki
Veterano
 
Registrado em: Jun 2002
Localização: japão
Mensagens: 1.090
Reputação: 21 Tubiluki está indo no caminho certo
Enviar mensagem via ICQ para Tubiluki Enviar mensagem via MSN para Tubiluki
Padrão

bom..

em java vc pode passar parametros por referencia usando vetores..

tipo.
declara eles no main...

e depois chama o metodo assim:
Metodo(vetor1, vetor2, vetor3...)

sem os colchetes..

e no metodo

Static void Metodo(v1[], v2[], v3[]...)

bom.. nao sei se deu pra entender... =p

qualquer coisa eu posto um exemplo ae... =p
Tubiluki está offline   Responder com Quote
Antigo 03-11-2004, 15:11   #4 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.724
Reputação: 778 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

Citação:
Postado Originalmente por jqueiroz
Agora, se vc não encontrar uma forma de evitar essa passagem por referência, sugiro que vc defina um objeto, inicialize-o com os valores que devem ser alterados, e passe esse objeto como parâmetro. Dentro da função, vc pode alterar os atributos desse objeto à vontade.
Citação:
Postado Originalmente por Tubiluki
em java vc pode passar parametros por referencia usando vetores..
Claro que pode... afinal, um vetor é um objeto... assim como um array comum. Caímos no mesmo caso de antes.

É preciso pensar bastante no que eu disse aqui:

Citação:
Sugiro fortemente a você que reveja o seu código, pois a princípio, em programação Orientada a Objeto, nunca seria necessário passar um parâmetro por referência: isso vai contra o princípio do encapsulamento. Se você está precisando alterar um parâmetro, então esse código está no lugar errado.
Vamos pensar um pouco mais em para que serve uma passagem de parâmetro por referência: serve para que um objeto entregue alguns dos seus atributos para serem modificados por outro objeto... isso é um sinal inequívoco de que o modelo OO está mal feito.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -3. Agora são 11:25.