Programação Orientada a Objetos (POO/LCC) 2015.1

Grupo da Disciplina: Clique aqui

Plano de Ensino: Acesse o Sigaa.

Horário: Terça 9h50-11h30 e Quinta 8h-9h40

Horários dos monitores e tutores: Clique aqui.

Notas parciais: Clique aqui em breve.

Exercícios:

  • Exercício 1: Faça um diagrama das classes necessárias para construir um programa para gerenciar informações gerais sobre bulas de remédios como "nome", "interações medicamentosas", "indicações" (doenças para as quais é indicado o remédio), "reações adversas" ou "efeitos colaterais", "laboratório responsável", "apresentação", "composição" (substâncias que compõem o medicamento) ,"posologia" (forma de uso) e "contraindicações". A ideia é que o sistema apresente funcionalidades como as seguintes:

    • Cadastro/consulta/remoção de dados sobre medicamento

    • Pesquisa dos medicamentos indicados para certos problemas/doenças

    • Pesquisa dos medicamentos que apresentam em sua composição uma mesma substância

    • Pesquisa dos medicamentos produzidos por um certo laboratório

    • Pesquisa dos medicamentos que apresentam interação medicamentosa com um certo medicamento pesquisado

    • Pesquisa das reações adversas relacionadas a um certo medicamento.

  • Exercício 2 (4/2/16): Faça um V0 do sistema considerando o diagrama enviado para o grupo.

  • Exercício 3 (25/02/16): Faça com que a operação de cadastro possa gerar exceção caso já exista o medicamento e teste essa operação com um teste JUnit. Verifique se o cadastro foi efetuado com sucesso e verifique também se a exceção é lançada quando se cadastra novamente um mesmo medicamento. Depois disso, implemente as demais funcionalidades do Exercício 1 e teste-as em várias situações. Construa diferentes classes de teste, para diferentes classes e cada uma com pelo menos 2 testes.

  • Exercício 4 (08/03/16): Altere seu código para que guarde os medicamentos em um Map, cujo índice deve ser o identificador do medicamento, composto pelo seu nome e o nome do seu fabricante. O Fabricante do medicamento deve ser um Enum que armazene todos os fabricantes gerenciados pelo sistema.

  • Exercícios de Revisão: Agenda e Sistema de Passagens

  • Exercício 5 (22/03/16): Com base no código enviado no grupo faça com que o programa SisBulaGUI tenha também nos itens de menu uma opção para mostrar todos os medicamentos cadastrados. Você pode fazer isso mostrando com System.out.println os medicamentos, ou com JOptionPane, ou se preferir, use a classe JTable ou outras de Swing. Fique a vontade para acrescentar uma nova operação na interface SisBula para retornar uma Collection com todos os medicamentos cadastrados. Obs: o método "values" de Map já retorna um Collection. Outra coisa a ser feita no sistema é permitir o cadastro de doenças e sintomas e também o cadastro das indicações de um certo medicamento.

  • Exercício 6 (29/03/16): Crie uma camada de persistência para o sistema SisBula que permita a gravação dos medicamentos em arquivo e a recuperação desses dados.

  • Exercício 7 (07/04/16): Desenvolver as funcionalidades previstas no exercício 1, focando em um design com boa separação de interesses, usando padrões GRASP e Façade. Adicionar persistência de dados e tornar funcional a interface gráfica.

  • Exercício 8 (26/04/16): Evoluindo o SisBula para acrescentar as seguintes funcionalidades:

    • Cadastro de doenças, explicitando seus sintomas e possíveis causas.

    • Cadastro de sintomas.

    • Pesquisa de doenças associadas a uma certa causa.

    • Pesquisa das possíveis causas para uma certa doença

    • Pesquisa dos sintomas de uma certa doença.

  • Exercício 9 (05/05/16): Montar diagrama UML referente ao projeto novo da disciplina. Neste projeto deverá ser possível fazer diferentes exercícios envolvendo palavras. Para cada palavra, existe uma imagem e um áudio associados a ela. Além disso, na hora de exibí-la, pode ser usada letra cursiva ou bastão e letra maiúscula ou minúscula. Alguns dos exercícios de alfabetização que podem ser oferecidos são os seguintes:

    • a) Exercício de associação imagem a palavra

    • b) Exercício de completar letras que faltam em palavra cuja imagem é exibida.

  • Exercício 10 (19/05/16): Preparar a fachada para o projeto ABC com testes. Nesta fachada deve haver um método para cadastrar desafios e para obter um conjunto com n desafios (ex: obterQuiz(numDesafios)). Deve haver também uma classe para cada tipo de Exercício (associação ou completar) e pode haver uma classe abstrata que guarde atributos como o tipo de fonte em que são exibidos os desafios(bastão/cursiva/maiúscula/minúscula).

  • Exercício

Planejamento:

1a. Unidade:

1.1 Revisão de Orientação a Objetos

1.2 Uso do Framework de Coleções de Java e Generics

1.3 Composição x Herança

1.4 Enums e Annotations

1.5 Documentação de Código

1.6 Teste Automático de Software utilizando JUnit

1.7. Uso de ambientes integrados de desenvolvimento (IDEs).

2a. Unidade:

2.1. Regras básicas de design e refatoramento

2.2 Padrões GRASP e Padrão Facade

2.3. Separação de interesses

2.4 Uso de tecnologias e bibliotecas para a linguagem Java (ex: Android, Swing, Java FX, JSF, Servlets, etc).

3a. Unidade:

3.1 Projeto e Desenvolvimento de Software OO na Prática

3.2 Programação Concorrente em Java.

Aulas:

02/02/16: Apresentação do plano de curso e exercício inicial sobre análise e projeto Orientado a Objetos (OO).

04/02/16: Revisão de Análise e Projeto de Sistemas Orientados a Objetos. Exemplo de modelagem do sistema SisBula.

11/02/16: Não tivemos aula (planejamento pedagógico). Exercício 2 para casa.

16/02/16: Aula de Revisão de Orientação a Objetos com Java (Interface, Classes, Herança, Métodos e uso da IDE Eclipse). (Vídeo da Aula)

18/02/16: Exercício sobre criação de classes, métodos, interface e herança com o sistema SisBula. Exercício para criação do "main" para exercitar os métodos criados.

23/02/16: Revisão de exceções. Introdução a testes.

25/02/16: Exercício sobre exceções e testes.

01/03/16: Detalhamento sobre testes de Unidade com JUnit e introdução a Annotations.

03/03/16: Mais detalhes sobre exceções. Revisão de UML e do uso do Framework de Coleções e Generics.

08/03/16: Introdução a Enums. Exercício sobre o uso de Map e uso de Enum.

10/03/16: Revisão geral sobre o conteúdo visto.

15/03/16: Primeiro Estágio.

17/03/16: Correção da prova. Aprofundamento sobre composição x herança.

22/03/16: Construção de interfaces gráficas com Swing.

29/03/16: Padrões GRASP e revisão sobre manipulação de arquivos em Java (gravação de objetos em arquivo).

31/03/16: Padrão Façade e prática sobre padrões GRASP.

05/04/16:Detalhamento sobre o padrão Façade na prática.

07/04/16: Exercício sobre uso dos padrões GRASP e Façade no projeto

12/04/16: Mais detalhes sobre refatoramento.

14/04/16: Tipos de refatoramento e relação com padrões GRASP.

19/04/16: Uso do Git/GitHub e boas práticas de projeto OO.

26/04/16: Revisão sobre testes, padrões GRASP e Façade.

28/04/16: Acompanhamento do exercício do SisBula.

03/05/16: Segundo Estágio.

05/05/16: Acompanhamento do exercício do SisBula. Apresentação do novo projeto e breve introdução sobre programação concorrente.

10/05/16: Detalhamento do projeto e dicas de análise e design. Criação de threads e Runnables em Java.

12/05/16: Acompanhamento dos projetos.

17/05/16: Programação concorrente em Java. Sincronização entre threads.

19/05/16: Acompanhamento dos projetos.

24/05/16: Não tivemos aula (CTRL+E). Exercício: Avançar o projeto.

31/05/16: Exercício sobre Threads e concorrência.

02/06/16: Exercício prático sobre Threads com o Robocode.

07/06/16: Terceiro estágio

09/06/16: Reposição.

14/06/16: Apresentação final dos projetos.

16/06/16: Prova Final