Closed mfmuzi closed 2 years ago
Oi Camila, tudo bem?? Acabei de assistir a sua aula sobre esse projeto, e nela você menciona que está com os dedinhos coçando para melhorar a apresentação dos resultados com relação aos conteúdos inscritos. Teria uma alternativa de apresentação que não fosse tudo em uma linha só? Dá para separar os cursos e as mentorias por linha? Obrigada pela ajuda!
Oie, boa tarde! Tudo bem? Tu poderia me mandar por aqui a parte do código que tu estais mencionando?
Se no código a gente estiver utilizando de stream API (lambda) é recomendável deixar dessa forma. Mas a gente pode ver como faz. (:
A gente poderia fazer juntas por aqui, que tal? Cola aqui o código.
Oii! Tudo sim e com você?
É referente à saída dessa parte da classe Main:
System.out.println("Conteúdos Inscritos Camila:" + devCamila.getConteudosInscritos());
Quando apresenta os cursos inscritos e as mentorias a saída fica assim: Conteúdos inscritos: [Curso{titulo='Curso Java', descricao='Curso voltado para ensinamentos em Java', cargaHoraria=8}, Curso{titulo='Curso JavaScript', descricao='Curso voltado para ensinamentos em JavaScript', cargaHoraria=4}, Mentoria{titulo='Mentoria em Java', descricao='Mentoria para as aulas de Java', data=22/11/2021}, Mentoria{titulo='Mentoria em JavaScript', descricao='Mentoria para as aulas de JavaScript', data=23/11/2021}]
É que fica tudo junto em uma linha só. Queria saber se tem alguma forma melhor de apresentar essa saída. Tipo um curso por linha. Algo assim.
Oii! Tudo sim e com você?
É referente à saída dessa parte da classe Main:
System.out.println("Conteúdos Inscritos Camila:" + devCamila.getConteudosInscritos());
Quando apresenta os cursos inscritos e as mentorias a saída fica assim: Conteúdos inscritos: [Curso{titulo='Curso Java', descricao='Curso voltado para ensinamentos em Java', cargaHoraria=8}, Curso{titulo='Curso JavaScript', descricao='Curso voltado para ensinamentos em JavaScript', cargaHoraria=4}, Mentoria{titulo='Mentoria em Java', descricao='Mentoria para as aulas de Java', data=22/11/2021}, Mentoria{titulo='Mentoria em JavaScript', descricao='Mentoria para as aulas de JavaScript', data=23/11/2021}]
É que fica tudo junto em uma linha só. Queria saber se tem alguma forma melhor de apresentar essa saída. Tipo um curso por linha. Algo assim.
Ah tá, entendi.
A sugestão que posso te dar é criar um método chamado public void mostraConteudosInscritos()
, por exemplo, na classe Dev.
No corpo desse método formatar a saída, pegando ogetConteudosInscritos().stream().forEach( ... )
.
Se você conseguir fazer algo coloca aqui, caso não, mais tarde faço para você.
uhuuulll!!! Consegui!!! Mas em partes!! Consegui fazer a separação do Título e da Descrição, que são as propriedades comuns dentro da classe Conteudo. Mas não consegui fazer para a cargaHoraria do curso nem para a data da mentoria, que não são comuns para as duas classes. Como consigo acesso à elas?
Segue meu projeto: https://github.com/mfmuzi/Bootcamp-POO.git
uhuuulll!!! Consegui!!! Mas em partes!! Consegui fazer a separação do Título e da Descrição, que são as propriedades comuns dentro da classe Conteudo. Mas não consegui fazer para a cargaHoraria do curso nem para a data da mentoria, que não são comuns para as duas classes. Como consigo acesso à elas?
Segue meu projeto: https://github.com/mfmuzi/Bootcamp-POO.git
Como a classe Conteudo é uma classe abstrata para que a gente usa em Bootcamp
e Mentoria
, modifica o método toString() de ambos, pensei em fazer o seguinte:
toString() da classe Mentoria:
@Override
public String toString() {
return String.format("Curso: %s - %s - %d", getTitulo(), getDescricao(), getCargaHoraria());
}
toString() da classe Curso:
@Override
public String toString() {
return String.format("Mentoria: %s - %s - %s", getTitulo(), getDescricao(), data.toString());
}
mostrarConteudo() da classe Dev:
public void mostrarConteudo() {
this.getConteudosInscritos().stream().forEach(c -> System.out.println(c));
}
Ficou perfeito!!! O método toString() me permite sempre modificar a saída dos atributos da classe? Fiz assim: Classe Curso: @Override public String toString() { return String.format("Curso: %s \nDescrição: %s \nDuração: %d horas\n", getTitulo(), getDescricao(), getCargaHoraria()); }
Classe Mentoria: @Override public String toString() { return String.format("Mentoria: %s\nDescrição: %s\nData: %s\n", getTitulo(), getDescricao(), data.toString()); }
Classe Dev: public void mostrarConteudosInscritos() { this.getConteudosInscritos().stream().forEach(inscritos -> System.out.println(inscritos)); }
public void mostrarConteudosConcluidos(){
this.getConteudosConcluidos().stream().forEach(concluidos -> System.out.println(concluidos));
}
Ficou perfeito!!! O método toString() me permite sempre modificar a saída dos atributos da classe? Fiz assim: Classe Curso: @OverRide public String toString() { return String.format("Curso: %s \nDescrição: %s \nDuração: %d horas\n", getTitulo(), getDescricao(), getCargaHoraria()); }
Classe Mentoria: @OverRide public String toString() { return String.format("Mentoria: %s\nDescrição: %s\nData: %s\n", getTitulo(), getDescricao(), data.toString()); }
Classe Dev: public void mostrarConteudosInscritos() { this.getConteudosInscritos().stream().forEach(inscritos -> System.out.println(inscritos)); }
public void mostrarConteudosConcluidos(){ this.getConteudosConcluidos().stream().forEach(concluidos -> System.out.println(concluidos)); }
Isso, o toString()
é um método que imprime as propriedades do objeto.
Faz um teste, comenta o toString()
e tenta rodar a classe Main
de novo.
Vai mostrar o endereço de memória do objeto. Esse método toString()
é da classe Object
, por tanto, todos os objetos criados têm esse método por default. Aí a gente pode sobreescrever como fizemos. (:
No nosso código em questão, como temos um Set de Conteúdo, não temos como acessar diretamente os atributos de Mentoria, Cursos ou de outra classe que eventualmente fosse filha de Conteudo.
Enfim, fico feliz em ter ajudado. E estou à disposição.
Camila, muuuuuito obrigada pela ajuda e pela explicação!!! Adoro suas aulas na DIO!!! O modo como você explica e apresenta os exemplos faz toda a diferença! Uma inspiração!!
Camila, muuuuuito obrigada pela ajuda e pela explicação!!! Adoro suas aulas na DIO!!! O modo como você explica e apresenta os exemplos faz toda a diferença! Uma inspiração!!
Obrigada!!! Estou estudando ainda mais para evoluir e ajudar mais pessoas a evoluirem comigo! <3
Oi Camila, tudo bem?? Acabei de assistir a sua aula sobre esse projeto, e nela você menciona que está com os dedinhos coçando para melhorar a apresentação dos resultados com relação aos conteúdos inscritos. Teria uma alternativa de apresentação que não fosse tudo em uma linha só? Dá para separar os cursos e as mentorias por linha? Obrigada pela ajuda!