GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Instanciando um objeto com array, duvida!

#1
class Sala {

  Sala() {

  Mesa[] mesa = new Mesa[5];
  mesa[0] = mesa ....
    
  }
  • Como faço para setar valores num array do tipo mesa…como continuo a declarar?
0 Likes

#2

Um array (vetor) nada mais é que uma sequência de referências a objetos (ou tipos primitivos) de mesmo tipo.
Isso significa que, quando você define um vetor de Mesa, está, apenas, dizendo que cada uma daquelas posições vai apontar para um objeto do tipo mesa.
De alguma forma, está dizendo a toda estrutura que está em uso que precisa de N espaços exatamente do tamanho de um objeto mesa cada um.

Mesa[] mesas = new Mesa[5].

Na linha acima, você diz que precisa de 5 espaços capazes de armazenar objetos do tipo mesa.
Mas, como você ainda não disse a quais objetos estes espaços se referem, eles se encontram nulos. Os espaços existem, mas não há nenhuma mesa em nenhum deles.

mesas[0] = new Mesa();

Na linha acima, você está dizendo que a posição 0 estará recebendo um novo objeto do tipo mesa (eu presumo que há um construtor padrão e que você vai setar os atributos posteriormente). Para cada posição reservada, é preciso fazer o mesmo processo (salvo se você quiser apontar mais de uma posição para o mesmo objeto, aí é só fazer como abaixo)

mesa[0] = new Mesa();
mesa[1] = mesa[0];

Entendeu?

0 Likes

#3

Sensacional @darlan_machado, melhor q isso impossivel! A ideia é q eu tenho um construtor e q qfo instancio sala…as mesas sejam criadas. Fiz atraves de um for. Minha duvida na verdade bateu em duas situacoes:
Primeira: se eu conseguiria setar depois um valor para mesa na posicao [0] tipo criei (new) será depois que conseguiria dizer q aquela mesa na posiçao zero é a posiçao mesa 1, tipo atribuir um “int” numa variável do tipo Mesa?


Daí depois tive uma duvida q na verdade passou por mim ontem ao ler uma reposta aqui no forum…


O cara dava" …[0] = new mesa()" exemplo! Era algo bem parecido com meu exemplo…e achei interessante a resposta q un integrante do forum deu. Ele disse q se a declaracao fosse nesses moldes…
Os valores nao seriam setados dentro do mesmo array…pq a cada new ele estaria instanciando um novo objeto digamos com um vetor de uma unica posicao e unico valor…o que para mim fez todo sentido…


Nao sei se entendeu minhas indagaçoes…
Sua resposta foi bem esclarecedora. Obrigado por dedicar alguns minutos para responder :slight_smile:

0 Likes

#4

Considere isso

public class Mesa {
    private int numero;
    private int totalLugares;
   //getters e setters omitidos
}

Se a tua mesa for parecida com a de cima:

Mesa[] mesas = new Mesa[5];
mesas[0] = new Mesa();
mesas[0].setNumero(1);
mesas[0].setTotalLugares(4);

Assim você consegue.

0 Likes

#5

Entendi…
Tenho q criar os atributos de mesa…gerar os getters e setters dos atributos e depois setar…
Mto obrigado :slight_smile:
Sensacional explicaçao!

0 Likes