Coder Social home page Coder Social logo

prova1's Introduction

Sistema de Gerenciamento de Projetos

Funcionalidades:

  1. Gerenciar projetos:
    • Adicionar projeto
  • Definir coordenador
    • Alterar status de andamento do projeto
    • Adicionar novo membro
    • Adicionar nova atividade
    • Adicionar/remover nova informação
  • Listar todas as informações
  • Listar atividades associadas ao projeto
  1. Gerenciar atividades:

    • Adicionar participante em atividadebr/>
    • Adicionar tarefa de participante
    • Listar membros
  2. Gerenciar membros:

    • Adicionar aluno de graduação, mestrado e doutorado
    • Adicionar professor
    • Adicionar pesquisador
    • Adicionar profissional desenvolvedor, testador e analista
  • Adicionar técnico
  • Mostrar informações completas de cada membro
  • Registrar/remover projeto a um membro
  • Listar projetos coordenados por um professor ou pesquisador
  1. Relatórios
    • Gerar relatório geral
    • Listar membros em específico

Classes

  1. Person
    • Motivação: Todas as pessoas tem dados em comum.
    • Vantagens: Grande número de métodos não precisam ser reescritos.
    • Desvantagens: Maior dificuldade de lidar com a grande quantidade de subclasses, como por exemplo, para receber objetos, passar objetos entre os métodos.
  2. Responsible - Subclasse de Person
    • Motivação: Era necessário que tanto pesquisadores como professores fossem responsáveis por projetos. Em breve poderia surgir novos responsáveis
    • Vantagens: Listar os projetos em que este membro coordena sem precisar identificar se é um pesquisador ou professor.
    • Desvantagens: Semelhante as desvantagens da classe Person.
  3. Student - Subclasse de Person
    • Motivaçao: Representar os estudantes, não era necessário no momento a criação de classes separadas para cada estudante, porém caso necessário, a implementação será simples.
    • Vantagens: Facilidade em criar classes que herdam essa classe, caso seja necessário gerar especificidades.
  4. Professional - Subclasse de Person
    • Motivação: Poderia ser necessário futuramente associar atividades aos profissionais e assim, gerar novas classes que herdassem a classe Professional.
    • Vantagens: Ditas na motivação.
  5. Technical - Subclasse de Person
    • Motivação: Caso seja necessário adicionar mais dados sobre os técnicos e funções específicas, a classe está criada.
    • Vantagens: Manutenção mais fácil após código ter sido desenvolvido com essa classe preparada.
  6. Professor - Subclasse de Responsible
    • Motivação: Caso seja necessário adicionar mais dados sobre os professores e funções específicas, a classe está criada.
    • Vantagens: Manutenção mais fácil após código ter sido desenvolvido com essa classe preparada, pode por exemplo, adicionar agora dados sobre o estilo de jogo do treinador.
  7. Researcher - Subclasse de Responsible
    • Motivação: Caso seja necessário adicionar mais dados sobre os professores e funções específicas, a classe está criada.
  8. Registerbr/>
    • Motivação: Manejar todos os registros (ArrayLists).
    • Vantagens: Mantém a classe Main "limpa".
  9. Data
    • Motivação: Projetos e atividades tem dados em comum.
    • Vantagens: Facilidade em adicionar novas características em comum pra projetos e atividades.
  10. Project - Subclasse de Data
    • Motivação: Necessário gerenciar projetos.
    • Vantagens: Com uma classe para projetos, fica mais fácil trabalha-los como objetos, podendo guardar em Array Lists, passar como métodos.
  11. Activity - Subclasse de Data
    • Vantagens: Com uma classe para atividades, fica mais fácil trabalha-las como objetos, podendo guardar em Array Lists, passar como métodos.
  12. Task - Subclasse de Data
    • Motivação: Necessidades de criar tarefas associadas a cada tipo de membro.
    • Vantagens: Com uma classe para tarefas, fica mais fácil trabalha-las como objetos, podendo guardar em Array Lists, passar como métodos.
  13. Information
    • Motivação: Possível necessidade de alterar o tipo de informação.
    • Vantagens: Facilidade em alterar as informações adicionais

Distribuição de Métodos

  1. Métodos buscadores e de listagem:
  • find(MemberClass)() e list(MemberClass).

    • Motivação: Buscam/listam objetos de cada classe. Foram colocados todos na classe Register devido a localização dos ArrayLists de registro, como por exemplo o ArrayList de registro de todos os estudantes.
  1. addNewMember()

    • Motivação: Método colocado na classe Register devido a localização dos registros.
  2. readNumber()

    • Motivação: Função que lê inteiros com tratamento de exceções.
    • Vantagens: Caso seja necessário alterar o que é feito após capturar uma exceção ao ler inteiros, ao alterar este método, toda a leitura de inteiros do sistema está atualizada.
  3. readFloat()

    • Motivação: Função que lê números reais (floats) com tratamento de exceções.
    • Vantagens: Caso seja necessário alterar o que é feito após capturar uma exceção ao ler floats, ao alterar este método, toda a leitura de floats do sistema está atualizada.

Herança

  • Motivação: Aproveitar atributos em comum foi necessário na maioria das classes onde a herença foi usada. Nas classes derivadas da classe Person, é interessante pensar que o projeto pode ter mais funções e uma melhor distribuição das classes facilita a implementação e manutenção, após o código ter sido desenvolvido. Era necessário também uma classe Responsible por motivos explicados anteriormente na seção em que fala sobre essa classe.
  • Solução: Criar classes para possíveis responsáveis por projetos, e outras para cada tipo de membro.
  • Vantagens: Deste modo, a manutenção fica mais fácil e o surgimento de novas funções para o sistema também.
  • Desvantagem: As classes ainda não estão sendo muito bem utilizadas, nesta concepção inicial do sistema.

Polimorfismo

  • Motivação: O método showInformations() mostra as informações contidas nos atributos da classe em que está e nas superclasses, logo foi necessário usar de polimorfismo.

Tratamento de Exceções

  1. readNumber() - Tratamento InputMismatchException
    • Motivação: O sistema lê muitos inteiros e caso o usuário digite algo diferente quando o sistema espera esse tipo, aparece um erro ao qual o usuário comum dificilmente irá entender.
    • Solução: Criar um método de leitura para inteiros com tratamento de exceções.
    • Vantagens: Com a utilização de métodos, caso seja necessário alterar o que é feito após capturar uma exceção ao ler inteiros, ao alterar este método, toda a leitura de inteiros do sistema está atualizada e uma mensagem amigável irá aparecer ao usuário caso ele não digite um inteiro.
  2. readFloat() - Tratamento InputMismatchException
    • Motivação: O sistema lê valores reais e caso o usuário digite algo diferente quando o sistema espera esse tipo, aparece um erro ao qual o usuário comum dificilmente irá entender.
    • Solução: Criar um método de leitura para inteiros com tratamento de exceções.
    • Vantagens: Com a utilização de métodos, caso seja necessário alterar o que é feito após capturar uma exceção ao ler floats, ao alterar este método, toda a leitura de floats do sistema está atualizada e uma mensagem amigável irá aparecer ao usuário caso ele não digite um float.

Extensibilidade

  1. Novos tipos de estudante - Classe Student

    • Motivação: Pode ser necessário a implementação de novos tipos de estudantes.
    • Vantagens: A classe Students deverá ter todos os dados básicos e métodos básicos e permitirá que qualquer tipo de função possa ser adicionada ao sistema extendendo a essa classe.
  2. Novos tipos de pessoas - Classe Person

    • Motivação: A clase Person vem sendo extendida pois tem vários dados em comum, e poderá ser extender mais classes que tenham esses dados em comum.
    • Solução: A classe Person não tem dados que não sejam pertinentes a Responsible e Student ao mesmo tempo.

prova1's People

Contributors

yuridrcosta avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.