Jump to content
LykyD

Ajuda em ArrayList, heranças e hierarquias em ArrayList

Recommended Posts

LykyD

Boas pessoal,

Estou de volta de um trabalho escolar, a elaborar uma aplicação em consola usando o Eclipse e surgiu-me um problema.

A minha aplicação é para uma equipa de futebol para manter toda a informação desse clube actualizada.

Resumidamente, o clube tem arraylist de escalões que por sua vez irá ter dirigentes, treinadores e jogadores, associados a diferentes escalões.

Exemplo:

Equipa --> Escalão Escolinhas --> Dirigentes, treinadores, jogos, jogadores

--> Escalão Júniores --> Dirigentes, treinadores, jogos, jogadores

--> Escalão Sérniores --> Dirigentes, treinadores, jogos, jogadores

O meu problema é algo que não estou a conseguir implementar que me irá facilitar a continuação do projeto. Ou seja, no momento em que um dirigente efetue o login, eu gostaria de guardar a posição do escalão que está na ArrayList da equipa a que esse dirigente está associado numa variável, para que futuramente esse dirigente não poder efetuar alterações aos dados de outros escalões, ou sempre que esse dirigente efetuar o login, já se saber a que escalão pertence.

Esta é a classe Equipa:

package classesSec;
import java.io.Serializable;
import java.util.ArrayList;
public class Equipa implements Serializable {

private static final long serialVersionUID = 1L;

private String nomeEquipa;
private ArrayList<Escalao> escalao = new ArrayList<Escalao>();
private ArrayList<Medico> medico = new ArrayList<Medico>();

public Equipa(){}

public Equipa(String nomeEquipa, Escalao escalao1, Medico medico1) {
super();
this.nomeEquipa = nomeEquipa;
this.escalao.add(escalao1);
this.medico.add(medico1);
}
public String getNomeEquipa() {
return nomeEquipa;
}
public void setNomeEquipa(String nomeEquipa) {
this.nomeEquipa = nomeEquipa;
}
public ArrayList<Escalao> getEscalao() {
return escalao;
}
public void setEscalao(Escalao escalao) {
this.escalao.add(escalao);
}

public ArrayList<Medico> getMedico() {
return medico;
}
public void setMedico(Medico medico) {
this.medico.add(medico);
}
@Override
public String toString() {
return "Equipa [nomeEquipa=" + nomeEquipa + ", escalao=" + escalao
+ ", medico=" + medico + "]";
}

}

Esta é a classe Escalão:

package classesSec;
import java.io.Serializable;
import java.util.ArrayList;
public class Escalao implements Serializable {

private static final long serialVersionUID = 1L;
private String tipoEscalao;
private int vitoria, empate, derrota;
private String ab;
private String tipoCampeonato;
private ArrayList<Jogador> escalaoJ = new ArrayList<Jogador>();
private ArrayList<Treinador> escalaoT = new ArrayList<Treinador>();
private ArrayList<Dirigente> escalaoD = new ArrayList<Dirigente>();
private ArrayList<Treino> escalaoTr = new ArrayList<Treino>();
private ArrayList<Jogo> escalaoJo = new ArrayList<Jogo>();

public Escalao(){}

public Escalao(int vitoria, int empate, int derrota, String ab, String tipoCampeonato, String tipoEscalao, Jogador escalaoJ1,
Treinador escalaoT1, Dirigente escalaoD1, Treino escalaoTr1,
Jogo escalaoJo1) {
super();
this.vitoria = vitoria;
this.empate = empate;
this.derrota = derrota;
this.ab = ab;
this.tipoCampeonato = tipoCampeonato;
this.tipoEscalao = tipoEscalao;
this.escalaoJ.add(escalaoJ1);
this.escalaoT.add(escalaoT1);
this.escalaoD.add(escalaoD1);
this.escalaoTr.add(escalaoTr1);
this.escalaoJo.add(escalaoJo1);
}
public int getVitoria() {
return vitoria;
}
public void setVitoria(int vitoria) {
this.vitoria = vitoria;
}
public int getEmpate() {
return empate;
}
public void setEmpate(int empate) {
this.empate = empate;
}
public int getDerrota() {
return derrota;
}
public void setDerrota(int derrota) {
this.derrota = derrota;
}
public String getAb() {
return ab;
}
public void setAb(String ab) {
this.ab = ab;
}

public String getTipoCampeonato() {
return tipoCampeonato;
}
public void setTipoCampeonato(String tipoCampeonato) {
this.tipoCampeonato = tipoCampeonato;
}
public String getTipoEscalao() {
return tipoEscalao;
}
public void setTipoEscalao(String tipoEscalao) {
this.tipoEscalao = tipoEscalao;
}
public ArrayList<Jogador> getEscalaoJ() {
return escalaoJ;
}
public void setEscalaoJ(Jogador escalaoJ) {
this.escalaoJ.add(escalaoJ);
}
public ArrayList<Treinador> getEscalaoT() {
return escalaoT;
}
public void setEscalaoT(Treinador escalaoT) {
this.escalaoT.add(escalaoT);
}
public ArrayList<Dirigente> getEscalaoD() {
return escalaoD;
}
public void setEscalaoD(Dirigente escalaoD) {
this.escalaoD.add(escalaoD);
}
public ArrayList<Treino> getEscalaoTr() {
return escalaoTr;
}
public void setEscalaoTr(Treino escalaoTr) {
this.escalaoTr.add(escalaoTr);
}
public ArrayList<Jogo> getEscalaoJo() {
return escalaoJo;
}
public void setEscalaoJo(Jogo escalaoJo) {
this.escalaoJo.add(escalaoJo);
}
@Override
public String toString() {
return "Escalao [tipoEscalao=" + tipoEscalao + ", vitoria=" + vitoria
+ ", empate=" + empate + ", derrota=" + derrota + ", ab=" + ab
+ ", tipoCampeonato=" + tipoCampeonato + ", escalaoJ="
+ escalaoJ + ", escalaoT=" + escalaoT + ", escalaoD="
+ escalaoD + ", escalaoTr=" + escalaoTr + ", escalaoJo="
+ escalaoJo + "]";
}

}

Esta é a classe Dirigente:

package classesSec;
import java.io.Serializable;
public class Dirigente implements Serializable {

private static final long serialVersionUID = 1L;

private String user, pass;
private String nomeDirigente;
private int idade;
private int numTele;
private String nacionalidade;

public Dirigente(){}

public Dirigente(String user, String pass, String nomeDirigente, int idade, int numTele,
String nacionalidade) {
super();
this.user = user;
this.pass = pass;
this.nomeDirigente = nomeDirigente;
this.idade = idade;
this.numTele = numTele;
this.nacionalidade = nacionalidade;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public String getNomeDirigente() {
return nomeDirigente;
}
public void setNomeDirigente(String nomeDirigente) {
this.nomeDirigente = nomeDirigente;
}
public int getIdade() {
return idade;
}
public void setIdade(int idade) {
this.idade = idade;
}
public int getNumTele() {
return numTele;
}
public void setNumTele(int numTele) {
this.numTele = numTele;
}
public String getNacionalidade() {
return nacionalidade;
}
public void setNacionalidade(String nacionalidade) {
this.nacionalidade = nacionalidade;
}
@Override
public String toString() {
return "Dirigente [user=" + user + ", pass=" + pass
+ ", nomeDirigente=" + nomeDirigente + ", idade=" + idade
+ ", numTele=" + numTele + ", nacionalidade=" + nacionalidade
+ "]";
}

}

Esta é a função que irá validar o login, onde pretendo aplicar a minha ideia:

public static void validaLogin(ArrayList<Equipa> equipa, String user, String pass) throws IOException {

@SuppressWarnings("resource")
Scanner ler = new Scanner(System.in);

int logado = 1, i = 0;
String usernameTreinador = "", passwordTreinador = "", usernameDirigente = "", passwordDirigente = "",
usernameMedico = "", passwordMedico = "";

Iterator<Escalao> it = equipa.get(0).getEscalao().iterator();
Iterator<Escalao> it5 = equipa.get(0).getEscalao().iterator();
Iterator<Treinador> it2;
Iterator<Dirigente> it3;
Iterator<Medico> it4 = equipa.get(0).getMedico().iterator();

while(it.hasNext()){
it2 = it.next().getEscalaoT().iterator();
it3 = it5.next().getEscalaoD().iterator();

while(it2.hasNext()){
Treinador t = it2.next();

if(user.equals(t.getUser()) && pass.equals(t.getPass())){
 usernameTreinador = t.getUser();
 passwordTreinador = t.getPass();
 ler.nextLine();
}
i++;
}

while(it3.hasNext()){
Dirigente d = it3.next();

if(user.equals(d.getUser()) && pass.equals(d.getPass())){
 usernameDirigente = d.getUser();
 passwordDirigente = d.getPass();
}
}

while(it4.hasNext()){
Medico m = it4.next();

if(user.equals(m.getUser()) && pass.equals(m.getPass())){
 usernameMedico = m.getUser();
 passwordMedico = m.getPass();
}
}

}

if(user.equals("admin") && pass.equals("admin") || user.equals(usernameTreinador) && pass.equals(passwordTreinador)
|| user.equals(usernameDirigente) && pass.equals(passwordDirigente) || user.equals(usernameMedico) && pass.equals(passwordMedico)){
if(user.equals("admin") && pass.equals("admin")){
logado = 0;
Menus.menuInicial(logado);
}
if(user.equals(usernameTreinador) && pass.equals(passwordTreinador)){
logado = 2;
Menus.menuInicial(logado);
}
if(user.equals(usernameDirigente) && pass.equals(passwordDirigente)){
logado = 3;
Menus.menuInicial(logado);
}
if(user.equals(usernameMedico) && pass.equals(passwordMedico)){
logado = 4;
Menus.menuInicial(logado);
}
} else{
System.out.println("Erro nos dados de Login");
ler.nextLine();
user = "";
pass = "";
Menus.menuLogin(equipa, user, pass);
}

}

Queira que nesta função, conseguisse arranjar maneira de saber a posição do escalão a que um determinado dirigente está associado.

Para mais detalhes do código, é só pedir, que estarei disposto a partilhar.

Se alguém me conseguir ajudar, ficarei agradecido.

Share this post


Link to post
Share on other sites
HappyHippyHippo

não vou comentar o código de login, mas o que pedes é isto:

while(it.hasNext()){
 Escalao escalao = it.next();

 // ... fazer tudo em relação à variável escalão ...
}


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
LykyD

Já fiz isso, e corri a arraylist do escalão, mas não consegui.

Eu acredito que exista uma maneira de saber a qual escalão pertence um dirigente, e saber a posição que esse escalão ocupa na arraylist. tenho o sensação que é por causa de heranças ou hierarquias, algo do tipo.

porque quando faço algo do género:

equipa.get(0).getEscalao().get(numEscalao).getDirigente().get(numDirigente);

eu tenho que efetuar sempre uma pergunta antes, para saber qual o escalao que estou a tratar, mas não devia já que cada dirigente não pode alterar dados de outros escaloes.

a variavel numEscalao, devia conseguir obte-la no momento que um determinado dirigente efetue o login.

Obrigado pela ajuda

Share this post


Link to post
Share on other sites
HappyHippyHippo

já te disse como fazer: guardas a referência do objecto escalão da forma que te foi dito.

nota : é óbvio que tens de parar o ciclo de pesquisa quando encontras o dirigente a ser pesquisado


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.