Parametro no objeto

5 respostas
T
Olá, pessoal. Tranquilo? Eu estou pedalando sempre nesses parametros, principalmente quando é em um objeto. No netbeans, eu consigo fazer normal o exercicio que irei mostrar, mas vou ter uma prova no papel (hoje) e queria saber por que foi usado como parametros (c), como será mostrado abaixo:
package Carro;

public class Carro {

    private String marca;
    private String fabricante;
    private int ano;
    private String cor;

    public void setaValoresCarro(Carro c) {
        String varMar = c.marca = "marca 1";
        String varFab = c.fabricante = "fabricante 1";
        int varAno = c.ano = 2000;
        String varCor = c.cor = "preto";

        System.out.println("A marca inicial do carro é: " + varMar);
        System.out.println("O fabricante inicial do carro é: " + varFab);
        System.out.println("o ano inicial do carro é: " + varAno);
        System.out.println("A cor inicial do carro é: " + varCor);

    }

    public void alteraCarro(Carro carro) {
        String finMar = carro.marca = "marca 2";
        String finFab = carro.fabricante = "fabricante 2";
        int finAno = carro.ano = 2012;
        String finCor = carro.cor = "branco";

        System.out.println("A marca inicial do carro é: " + finMar);
        System.out.println("O fabricante inicial do carro é: " + finFab);
        System.out.println("o ano inicial do carro é: " + finAno);
        System.out.println("A cor inicial do carro é: " + finCor);
    }
public static void main(String[] args) {
        Carro c = new Carro();

        c.setaValoresCarro(c); // aqui
        c.alteraCarro(c); // aqui também
    }
}

Minha duvida é, por que passar como parametro o "c". Se este for um parametro, claro. Se nao for, por favor, informe o nome.

5 Respostas

wagnerfrancisco

Neste caso realmente não há a necessidade de passar o objeto como parâmetro. Você pode referenciar o objeto no qual está “trabalhando” com a palavra this. O método alteraCarro, por exemplo, poderia ser assim:

public void alteraCarro(Carro carro) {
        this.marca = "marca 2";
        this.fabricante = "fabricante 2";
        this.ano = 2012;
        this.cor = "branco";

        System.out.println("A marca inicial do carro é: " + this.marca);
        System.out.println("O fabricante inicial do carro é: " + this.fabricante);
        System.out.println("o ano inicial do carro é: " + this.ano);
        System.out.println("A cor inicial do carro é: " + this.cor);
    }

//...
public static void main(String[] args) {
        Carro c = new Carro();

        c.setaValoresCarro();
        c.alteraCarro(); // ai nao precisa passar como parametro!
}

Falou.

T

Aew wagner, entendi mas… porque foi passado o parametro? quando saber q tenho q passar? essa minha real duvida.

T

Aew wagner, fiz do jeito que vc falou e mesmo assim é necessario o parametro.

wagnerfrancisco

Não existe uma regra pra saber isso, depende do programa que você tá construindo. Um parâmetro é simplesmente um objeto ou tipo primitivo que você passa para um método.

O método que você está definindo provavelmente vai acessar/alterar atributos do objeto que ele pertence. Neste caso não precisa passar o objeto pro método via parâmetro. Simplesmente use this.

Normalmente você vai passar parâmetros quando precisar receber algum objeto ou tipo primitivo que não pertença ao objeto no qual o método foi definido. Imagine por exemplo que o seu carro tivesse um proprietário. E o proprietário fosse um objeto. Neste caso você poderia ter um método setProprietário no carro que recebe o proprietário através de um parâmetro. Exemplo:

public class Carro {
   private Proprietario proprietario;
   //... demais atributos

   //recebendo proprietario através de um parâmetro
   public void setProprietario(Proprietario proprietario) {
      this.proprietario = proprietario;
   }

   //demais métodos...
}

//exemplo do main:
public static void main(String[] args) {
   Proprietario p = new Proprietario();
   Carro c = new Carro();
   c.setProprietario(p);
}

Falou.

P.S.: No método que lhe passei anteriormente você pode remover o parâmetro. Faça direto assim:

public void alteraCarro() {
        this.marca = "marca 2";
        this.fabricante = "fabricante 2";
        this.ano = 2012;
        this.cor = "branco";

        System.out.println("A marca inicial do carro é: " + this.marca);
        System.out.println("O fabricante inicial do carro é: " + this.fabricante);
        System.out.println("o ano inicial do carro é: " + this.ano);
        System.out.println("A cor inicial do carro é: " + this.cor);
    }

//...
public static void main(String[] args) {
        Carro c = new Carro();

        c.setaValoresCarro();
        c.alteraCarro(); // ai nao precisa passar como parametro!
}
T

wagnerfrancisco, obrigado pela sua colaboração, tive prova hoje e graças as suas dicas vou conseguir uma boa nota.
Até +.

Criado 7 de março de 2012
Ultima resposta 7 de mar. de 2012
Respostas 5
Participantes 2