Desafio de Projeto criado para avaliação do conteúdo técnico explorado no repositório aprenda-kotlin-com-exemplos. Nesse contexto, iremos abstrair o seguinte domínio de aplicação:
A DIO possui Formacoes
incríveis que têm como objetivo oferecer um conjunto de ConteudosEducacionais
voltados para uma stack tecnológica específica, preparando profissionais de TI para o mercado de trabalho. Formacoes
possuem algumas características importantes, como nome
, nivel
e seus respectivos conteudosEducacionais
. Além disso, tais experiências educacionais têm um comportamento relevante ao nosso domínio, definido pela capacidade de matricular
um ou mais Alunos
.
TODO("Crie uma solução em Koltin abstraindo esse domínio. O arquivo [desafio.kt] te ajudará 😉")
Mini diagrama do que realizar
enum Nivel {
BASICO
INTERMEDIARIO
DIFICIL
}
class Usuario {
- nome: String
- email: String }
class ConteudoEducacional {
- nome: String
- duracao: Int }
class Formacao {
- nome: String
- nivel: Nivel
- conteudos: List
- inscritos: List
- adicionarConteudo(conteudo: ConteudoEducacional): void
- removerConteudo(conteudo: ConteudoEducacional): void
- matricular(usuario: Usuario): void }
Usuario --|> Formacao : <>
Formacao "1" -- "" ConteudoEducacional : <>
+----------------------------------------------+
| Formacao |
+----------------------------------------------+
| - nome: String |
| - nivel: Nivel |
| - conteudos: List |
| - inscritos: List |
+----------------------------------------------+
| + getNome(): String
|
| + getNivel(): Nivel
|
| + getConteudos(): List<ConteudoEducacional>
|
| + getInscritos(): List<Usuario>
|
| + matricular(usuario: Usuario): void
|
+----------------------------------------------+
+------------------------------------------------+
| ConteudoEducacional |
+------------------------------------------------+
| - nome: String |
| - duracao: Int |
+------------------------------------------------+
| + getNome(): String
|
| + getDuracao(): Int
|
+------------------------------------------------+
+-----------------------------------+
| Nivel |
+-----------------------------------+
| BASICO
|
| INTERMEDIARIO
|
| DIFICIL
|
+-----------------------------------+
+----------------------------------------------+
| Usuario |
+----------------------------------------------+
| - nome: String |
| - email: String |
| - // outros atributos e métodos |
+----------------------------------------------+
| + getNome(): String
|
| + getEmail(): String
|
| // outros métodos |
+----------------------------------------------+