Duvida setar atributos

7 respostas
G

bom galera, recentemente comecei a estudar java e estou com a seguinte dúvida: como eu seto um atributo de uma classe a partir de outra classe ? Exemplo: tenho a classe produto, com atributo nome por exemplo, eu gostaria de setar o nome do produto a partir de uma outra classe, a classe gerente por exemplo como eu faria esse relacionamento ? obrigado desde já

7 Respostas

S

Caso você esteja falando de Objetos fora de um banco de dados, você tem que entender isso:

Quando você usa um método getAlgo, ele te retorna o que você pede como por exemplo uma String, e o setAlgo ele diz o que aquele objeto vai ter, onde você usa por exemplo uma String, caso seja relacionado a aquele objeto. Se você tem um método que retorna uma String e um que precisa de uma String, pode se relacionar os dois? Sim. Na prática seria bem isso:

produto.setNome(venda.getNomeProduto);

Caso você estude JDBC, você vai ver que pode fazer essas relações diretamente com o banco de dados por meio de pesquisas. Mas um aviso: Isso se baseia apenas para objetos, quando se vai para o campo de banco de dados a palavra relacionamento tem um uma importância bem maior.

G

obrigado pela resposta neto, mas como eu poderia fazer o método gerente.setPreco , por exemplo ? sendo preco um atributo da classe produto. E ainda não comecei a estudar jdbc pois estou me aprofundando um pouco mais em listas, collections…pra começar a estudar jbdc, mas agradeço a dica

Jederson_Andre

Eu aprendi java com um curso do canal XTI UNIVERSIDADE, muito bom… dá uma olhada tbm no cursoemvideo.com.br

S

Veja encapsulamento que você vai entender.

darlan_machado

Vamos por partes.
Você pode ter, sim, atributos nas classes, são os atributos static

public class Foo {
    static String code = "123";
}

Mas, normalmente, estes atributos são constantes e são precedidos da palavra reservada final

public class Foo {
    public final static String code = "123";
}

Quando falamos em setar, definir ou atribuir valor a um atributo, temos que entender que este atributo pertence a um objeto de uma classe (ou, como disse, à própria classe, quando estático).
Para tanto, considere as seguinte classes:

public class Foo {
    private String nome;
    //getters e setters omitidos
}

e

public class OutraClasse {
    public void outroMetodo() {
            Foo foo = new Foo(); //Declara e instancia
            foo.setNome("Astolpho"); //Seta o valor
    }
}

Conseguiu entender?

F

Olá Gabriel, pelo oque eu estou vendo você está com dificuldades para entender o paradigma de objetos.

“obrigado pela resposta neto, mas como eu poderia fazer o método gerente.setPreco , por exemplo ? sendo preco um atributo da classe produto. E ainda não comecei a estudar jdbc pois estou me aprofundando um pouco mais em listas, collections…pra começar a estudar jbdc, mas agradeço a dica”.

Não pode, você teria que instanciar um objeto de tipo produto dentro da classe Gerente, tipo assim

public class Gerente{

//instanciando o produto

Produto produto = new Produto();

//setando o preco do produto

produto.setPreco(1000);

}

na verdade você não seta o atributo preco na classe, você seta no objeto de nome produto do tipo Produto, conseguiu entender ?, você so seta valores diretamente na classe se o atributo pertencer a classe e não a nenhum outro objeto gerado pela classe, exemplo

quando existe isso

public class Produto{

//o valor pertence somente a classe quando o atributo é declarado com a palavra static

public static Integer preco = 1000;
}

//nesse caso ai não é possível fazer isso

Produto produto = new Produto();

produto.setPreco(200) ou produto.preco = 200

porque produto(com minusculo) é um objeto gerado da classe Produto(com maiusculo) e atributos static nao pertencem a objetos, pertencem somente a classe.

Teria que fazer assim

public class Gerente{

Produto.preco = 200;

}
G

muito obrigado à todos que responderam aqui foi de grande ajuda, consegui entender perfeitamente o que me explicaram e percebi onde estava minha deficiência, grato por tudo senhores.

Criado 3 de abril de 2018
Ultima resposta 4 de abr. de 2018
Respostas 7
Participantes 5