Skip to content

Latest commit

 

History

History
202 lines (148 loc) · 3.69 KB

Readme.md

File metadata and controls

202 lines (148 loc) · 3.69 KB

Garanta os vínculos cruzados entre alunos e disciplinas na @matricula

Intro Guide Shell

cover

Vamos criar um sistema da cadastro de alunos e disciplinas. Após isso, vamos matricular e remover alunos das disciplinas. Aqui, cada aluno sabe quais as disciplinas em que está matriculado e a disciplina sabe os alunos que ela contém.

Intro

  • Repositórios Individuais

    • Adicionar aluno passando id do aluno.
    • Mostrar os todos os alunos cadastrados.
    • Adicionar disciplina passando o id da disciplina.
    • Mostrar as todas as disciplinas cadastradas.
  • Realizar Matrícula

    • Matricular o aluno em uma ou mais disciplinas.
    • Mostrar as disciplinas de um aluno.
    • Mostrar os alunos de uma disciplina.
  • Desmatricular

    • Remover disciplinas de um aluno.
  • Removendo alunos e disciplinas do sistema

    • Remover aluno mantendo a integridade das relações.
    • Remover disciplinas mantendo a integridade das relações.

Guide

diagrama

class Aluno {

    - id: str

    - discps: map<str, Discp>
    __

    + Aluno(id: str)

    + getId(): str

    + getDiscps(): List<Discp>

    ' retorna o nome do aluno e o nome das disciplinas matriculadas
    + toString(): str
    '
    __vincular__

    ' cria o vínculo bidirecional aluno disciplina
    + addDiscp(discp: Discp)

    __desvincular__

    + rmDiscp(idDiscp: str)
}

class Discp {

    - id: str

    - alunos: map<str, Aluno>
    __

    + Discp(id: str)

    + getId(): str

    + getAlunos(): List<Aluno>

    ' mostra o id da disciplina e o nome dos alunos matriculados
    + toString(): str

    __vincular__

    ' cria o vínculo bidirecional aluno disciplina
    + addAluno(aluno: Aluno)

    __desvincular__
    '
    + rmAluno(idAluno: str)
}

class Sistema {
    '
    - discps: map<str, Discp>
    '
    - alunos: map<str, Aluno>
    '
    __
    '
    + Sistema()

    ' mostra os alunos e disciplinas cadastradas
    + toString(): str

    __cadastrar__

    ' adiciona um aluno com esse id no sistema
    + addAluno(idAluno: str)

    ' adiciona uma disciplina com esse id no sistema
    + addDiscp(idDiscp: str)
    
    __vincular__
    
    + getAlunos(): List<Aluno>
    
    + getDiscps(): List<Discp>
    
    ' recupera os objetos aluno e disciplina e vincula-os
    + matricular(idAluno: str, idDiscp: str)
    
    __desvincular__
    
    + desmatricular(idAluno: str, idDiscp: str)
    '
    __remover__
    
    ' remove um aluno com esse id do sistema desfazendo todos os vínculos
    + removerAluno(idAluno: str)
    
    ' remove uma disciplina com esse id do sistema desfazendo todos os vínculos
    + removerDiscp(idDiscp: str)
}

Shell

#TEST_CASE adicionando alunos ao sistema em lote
# nwalu _name _name ...
$nwalu alice edson bruno

# adicionando disciplinas ao sistema em lote
# nwdis _disc _disc
$nwdis poo aps
$nwdis fup

# show mostra alunos e disciplinas
$show
- alunos
alice []
bruno []
edson []
- discps
aps []
fup []
poo []

#TEST_CASE matriculando alunos em lote
# tie _aluno _disc _disc ...
$tie bruno fup aps poo
$tie alice fup poo
$tie edson fup

$show
- alunos
alice [fup, poo]
bruno [aps, fup, poo]
edson [fup]
- discps
aps [bruno]
fup [alice, bruno, edson]
poo [alice, bruno]

#TEST_CASE desmatriculando alunos em lote
# untie _aluno _disc _disc ...
$untie bruno poo aps
$show
- alunos
alice [fup, poo]
bruno [fup]
edson [fup]
- discps
aps []
fup [alice, bruno, edson]
poo [alice]

#TEST_CASE removendo alunos do sistema
# rmalu _aluno
$rmalu alice

$show
- alunos
bruno [fup]
edson [fup]
- discps
aps []
fup [bruno, edson]
poo []
$end