Construtores

3 respostas
GRGoucho

Olá,

sou iniciante em Java. Aliás, sou novo em programação e não consigo esclarecer a minha dúvida por pesquisa.

O problema é este:

Quero uma classe que defina um conjunto de instâncias duma outra classe. Definida a outra classe:

Public Class Object(){

}

a classe contendo instâncias de Object:

Public Class ObjArray(){

Object [] objarray; // defini objarray como sendo um Array do tipo Object.

}

Até aqui tudo bem. O problema está na construção da Classe Object:

Ex: Pretendo instâncias que incluam nos seus parametros (int valor, int cor) sendo cor uma de 4 disponíveis.
Pretendo também instâncias dessa mesma classe que incluam como params (int valor, int cor1, int cor2).

Ou seja,a partir desta classe pretendo criar objectos, os quais, todos tenham um valor, mas alguns só têm uma cor, e outros têm duas (nas cores que tornei disponiveis).

Na classe ObjArray pretendo incluir todos os possiveis objectos da classe Object.

Como fazê-lo?

Através de 2 construtores na classe Object? Simplesmente não consigo entender. Precisava apenas que indicassem o caminho a seguir.

Obrigado

3 Respostas

drsmachado

1 - Leia nosso how to
2 - Public Class não existe, precisa ler a API do Java e entender que a linguagem é case sensitive, ou seja, class é diferente de Class.

Rodrigo_Sasaki

Você pode fazer através de construtores sim, só que não na classe Object.

Eu imagino que você tenha selecionado Object como exemplo, mas foi um mal exemplo justamente por isso. Nessa classe você não mexe. Você vai mexer na sua classe, seja qual nome ela tiver.

E uma sugestão, caso não seja muito avançado, se não entender, continue fazendo como está.

Já que quer limitar as cores disponíveis, utilize um Enum para isso. Porque você não tem como limitar isso com números, a não ser que lance uma exceção caso o número não seja compatível com o que você quer.

Fez sentido?

GRGoucho

Eu sei que é case sensitive. Estava apenas a esquematizar o pensamento. ‘Object’ representava um objecto e não a classe. Peço desculpa pelos erros.
A ideia é esta:

public class Colored {

private int color1;

private int color2;
public static final int RED=1;
public static final int BLUE=2;
public static final int GREEN=3;
public static final int YELLOW=4;

public Colored(int Color1,int Color2){
    if(Color1!=RED && Color1!=BLUE && Color1!=GREEN && Color1!=YELLOW){
    throw new IllegalArgumentException("Illegal");
    } 
    if(Color2!=RED && Color2!=BLUE && Color2!=GREEN && Color2!=YELLOW){
    throw new IllegalArgumentException("Illegal");
    }
    if(Color1==Color2){
    throw new IllegalArgumentException("Illegal");
    }
    color1=Color1;
    color2=Color2;
}
public int getColor1(){
    return color1;
}
public int getColor2(){
    return color2;

}
}

Para a classe onde pretendo agrupar:

public class Things {

Colored[] things;

int thingsCreated;
public Things(){
things= new Colored[6];    
thingsCreated=0;
for(int color1=1; color1<5;color1++){
    for(int color2=color1+1;color2<5;color2++){
        cards[thingsCreated]=new Colored(color1,color2);
        thingsCreated++;
    }
}
}

No values for now.
Ok. I got an array with 6 instances of class Colored. All combinations possible without repetition are there.

Now I want that Colored instances have only 1 color and get them on that Things class.
The question was if it is possible to construct it on Colored class and how to get them on them array.

Criado 11 de março de 2013
Ultima resposta 11 de mar. de 2013
Respostas 3
Participantes 3