Last active
November 3, 2017 12:52
-
-
Save Gabrielgtt/7eee0f011a58e34cdf97f981a0eed816 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Representação de um aluno da UFCG que possui contas na cantina, laboratório e | |
* matrículas em disciplinas. Também é registrado o estado da saúde do aluno. | |
* | |
* @author Gabriel Alves Tavares | |
*/ | |
import java.util.LinkedHashMap; | |
import java.util.Map; | |
import java.util.ArrayList; | |
public class Aluno { | |
private String nome; | |
private Saude saude; | |
private Map <String, ContaLaboratorio> contasLaboratorio; | |
private Map <String, ContaCantina> contasCantina; | |
private Map <String, Disciplina> disciplinas; | |
/** | |
* Constrói o aluno a partir de um nome | |
* | |
* @param nomeAluno: nome do aluno | |
*/ | |
public Aluno(String nomeAluno){ | |
this.nome = nomeAluno; | |
this.saude = new Saude(); | |
this.contasLaboratorio = new LinkedHashMap <>(); | |
this.contasCantina = new LinkedHashMap <>(); | |
this.disciplinas = new LinkedHashMap <>(); | |
} | |
/** | |
* Cria e guarda uma nova conta no laboratório | |
* | |
* @param nomeLaboratorio: nome do laboratório | |
*/ | |
public void cadastraLaboratorio(String nomeLaboratorio){ | |
ContaLaboratorio contaLab = new ContaLaboratorio(nomeLaboratorio); | |
this.contasLaboratorio.put(nomeLaboratorio, contaLab); | |
} | |
/** | |
* Cria e guarda uma nova conta no laboratório com uma cota específica | |
* | |
* @param nomeLaboratorio: nome do laboratório | |
*/ | |
public void cadastraLaboratorio(String nomeLaboratorio, int cota){ | |
this.contasLaboratorio.put(nomeLaboratorio, new ContaLaboratorio(nomeLaboratorio, cota)); | |
} | |
/** | |
* Acessa um laboratório no Map e consome espaço | |
* | |
* @param nomeLaboratorio: nome do laboratório | |
* @param mbytes: espaço consumido | |
*/ | |
public void consomeEspaco(String nomeLaboratorio, int mbytes){ | |
this.contasLaboratorio.get(nomeLaboratorio).consomeEspaco(mbytes); | |
} | |
/** | |
* Acessa um laboratório no Map e libera espaço | |
* | |
* @param nomeLaboratorio: nome do laboratório | |
* @param mbytes: espaço liberado | |
*/ | |
public void liberaEspaco(String nomeLaboratorio, int mbytes){ | |
this.contasLaboratorio.get(nomeLaboratorio).liberaEspaco(mbytes); | |
} | |
/** | |
* Verifica se um laboratório atingiu a cota | |
* | |
* @param nomeLaboratorio: nome do laboratório | |
* @return true se o aluno atingiu a cota, false do contrário | |
*/ | |
public boolean atingiuCota(String nomeLaboratorio){ | |
return this.contasLaboratorio.get(nomeLaboratorio).atingiuCota(); | |
} | |
/** | |
* Retorna a string que representa o laboratório | |
* | |
* @param nomeLaboratorio: nome do laboratório | |
* @return "-nomeDoLaboratório- -espacoConsumido- -cota-" | |
*/ | |
public String laboratorioToString(String nomeLaboratorio){ | |
return this.contasLaboratorio.get(nomeLaboratorio).toString(); | |
} | |
/** | |
* Cadastra uma disciplina | |
* | |
* @param nomeDisciplina: nome da disciplina | |
*/ | |
public void cadastraDisciplina(String nomeDisciplina){ | |
Disciplina disciplina = new Disciplina(nomeDisciplina); | |
this.disciplinas.put(nomeDisciplina, disciplina); | |
} | |
/** | |
* Cadastra uma disciplina com uma determinada quantidade de notas | |
* | |
* @param nomeDisciplina: nome da disciplina | |
* @param numProvas: número de provas | |
*/ | |
public void cadastraDisciplina(String nomeDisciplina, int numProvas){ | |
Disciplina disciplina = new Disciplina(nomeDisciplina, numProvas); | |
this.disciplinas.put(nomeDisciplina, disciplina); | |
} | |
/** | |
* Cadastra horas trabalhas em um laboratório | |
* | |
* @param nomeDisciplina: nome da disciplina | |
* @param horas: horas trabalhadas | |
*/ | |
public void cadastraHoras(String nomeDisciplina, int horas){ | |
this.disciplinas.get(nomeDisciplina).cadastraHoras(horas); | |
} | |
/** | |
* Cadastra uma nota em uma determinada prova | |
* | |
* @param nomeDisciplina: nome da disciplina | |
* @param prova: o número da prova, varia de 1 a 4 (o index no array de notas começa em 0) | |
* @param valorNota: o valor para qual a nota é mudada | |
*/ | |
public void cadastraNota(String nomeDisciplina, int prova, double valorNota){ | |
this.disciplinas.get(nomeDisciplina).cadastraNota(prova, valorNota); | |
} | |
/** | |
* Verifica a aprovação do aluno na disciplina | |
* | |
* @param nomeDisciplina: nome da disciplina | |
* @return true se a media do aluno for maior ou igual a 7.0, false do contrário | |
*/ | |
public boolean aprovado(String nomeDisciplina){ | |
return this.disciplinas.get(nomeDisciplina).aprovado(); | |
} | |
/** | |
* Retorna a string que representa a disciplina | |
* | |
* @param nomeDisciplina: nome da disciplina | |
* @return "nomeDaDisciplina espacoConsumido cota" | |
*/ | |
public String disciplinaToString(String nomeDisciplina){ | |
return this.disciplinas.get(nomeDisciplina).toString(); | |
} | |
/** | |
* Cadastra uma cantina | |
* | |
* @param nomeCantina: nome da cantina | |
*/ | |
public void cadastraCantina(String nomeCantina){ | |
ContaCantina contaCant = new ContaCantina(nomeCantina); | |
this.contasCantina.put(nomeCantina, contaCant); | |
} | |
/** | |
* Cadastra um lanche comprado pelo aluno | |
* | |
* @param nomeCantina: nome na cantina | |
* @param qtdItens: quantidade de itens comprados | |
* @param valorCentavos: preço do lanche | |
*/ | |
public void cadastraLanche(String nomeCantina, int qtdItens, int valorCentavos){ | |
this.contasCantina.get(nomeCantina).cadastraLanche(qtdItens, valorCentavos); | |
} | |
/** | |
* Cadastra um lanche comprado pelo aluno, com detalhes | |
* | |
* @param nomeCantina: nome na cantina | |
* @param qtdItens: quantidade de itens comprados | |
* @param valorCentavos: preço do lanche | |
* @param detalhes: descrição do lanche que é armazenada n início de um ArrayList | |
*/ | |
public void cadastraLanche(String nomeCantina, int qtdItens, int valorCentavos, String detalhes){ | |
this.contasCantina.get(nomeCantina).cadastraLanche(qtdItens, valorCentavos, detalhes); | |
} | |
/** | |
* Diminui a dívida do aluno em uma cantina | |
* | |
* @param valorCentavos: valor diminuido na dívida | |
*/ | |
public void pagaConta(String nomeCantina, int valorCentavos){ | |
this.contasCantina.get(nomeCantina).pagaConta(valorCentavos); | |
} | |
/** | |
* Representação em String da conta na cantina | |
* | |
* @param nomeCantina: nome na cantina | |
* @return uma string com o nome da cantina, qtds de itens comprado e a dívida na cantina | |
*/ | |
public String cantinaToString(String nomeCantina){ | |
return this.contasCantina.get(nomeCantina).toString(); | |
} | |
/** | |
* Define um valor para a saúde mental do aluno | |
* | |
* @param valor: estado da saude mental | |
*/ | |
public void defineSaudeMental(String valor){ | |
this.saude.defineSaudeMental(valor); | |
} | |
/** | |
* Define um valor para a saúde física do aluno | |
* | |
* @param valor: estado da saude física | |
*/ | |
public void defineSaudeFisica(String valor){ | |
this.saude.defineSaudeFisica(valor); | |
} | |
/** | |
* Define um emoji para o aluno | |
* | |
* @param valor: String que representa o emoji | |
*/ | |
public void defineEmoji(String valor){ | |
this.saude.defineEmoji(valor); | |
} | |
/** | |
* Constrói uma string com as disciplinas do aluno | |
* | |
* @return uma String de palavras separadas por quebras de linha, do método toString de cada disciplina | |
* cadastrada pelo aluno | |
*/ | |
private String toStringListaDisciplinas(){ | |
String disciplina = ""; | |
for (Map.Entry<String, Disciplina> entry : disciplinas.entrySet()) { | |
Disciplina dis = entry.getValue(); | |
disciplina += dis.toString(); | |
disciplina += "\n"; | |
} | |
return disciplina; | |
} | |
/** | |
* Constrói uma string com as cantinas cadastradas pelo aluno | |
* | |
* @return uma String de palavras separadas por quebras de linha, do método toString de cada cantina | |
* cadastrada pelo aluno | |
*/ | |
private String toStringListaCantinas(){ | |
String cantina = ""; | |
for (Map.Entry<String, ContaCantina> entry : contasCantina.entrySet()) { | |
ContaCantina can = entry.getValue(); | |
cantina += can.toString(); | |
cantina += "\n"; | |
} | |
return cantina; | |
} | |
/** | |
* Constrói uma string com os laboratórios do aluno | |
* | |
* @return uma String de palavras separadas por quebras de linha, do método toString de cada laboratório | |
* cadastrada pelo aluno | |
*/ | |
private String toStringListaLaboratorios(){ | |
String laboratorios = ""; | |
for (Map.Entry<String, ContaLaboratorio> entry : contasLaboratorio.entrySet()) { | |
ContaLaboratorio lab = entry.getValue(); | |
laboratorios += lab.toString(); | |
laboratorios += "\n"; | |
} | |
return laboratorios; | |
} | |
/** | |
* Gera uma string com todas as principais informações do aluno | |
* | |
* @return o nome do aluno, as disciplinas que está cursando, as cantinas e laboratórios cadastrados | |
* e sua saúde | |
*/ | |
public String geral(){ | |
String laboratorios = this.toStringListaLaboratorios(); | |
String cantinas = this.toStringListaCantinas(); | |
String disciplinas = this.toStringListaDisciplinas(); | |
String saude = this.saude.geral(); | |
String barras = "----------------------------\n"; | |
return String.format("%sAluno: %s\nSaúde %s\nDisciplinas cadastradas:\n%s\nCantinas cadastradas:\n%s\nLaboratórios cadastrados:\n%s%s", | |
barras, this.nome, saude, disciplinas, cantinas, laboratorios, barras); | |
} | |
} | |
// SPLab, notice me senpai!! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment