Programação Orientada a Objetos (2014.1)

UFPB - Campus IV - Curso de Lic. em Ciência da Computação

Carga Horária: 60h

Período: 2014.1

Horário:

Quarta 8h-10h (Sala do P2 de LCC)

Quinta 8h-10h (Laboratório 2 ou Sala do P2 de LCC)

Horários de Atendimento: Quarta 13-15h e Quinta 13-15h (sempre combinar antes com a professora)

Horários dos Monitores: clique aqui

Plano de Ensino da Disciplina: clique aqui

Grupo de Discussões (facebook): https://www.facebook.com/groups/716433931771642/

Exercícios de Classe:

  • Roteiro 1 (divulgado em 16/10)

  • Exercício de Revisão sobre Testes: Implemente um teste para a classe MinhaAgendaDeAniversários, do Roteiro 3. Este teste deve verificar se de fato é lançada uma exceção quando é removido um aniversariante que não existe. Além disso, faça testes para a classe Aniversariante e DataAniversario para verificar se os métodos "equals" implementados em ambas estão corretos (veja casos em que retornam true e false).

  • Exercício de Revisão do 2o. Estágio

  • Exercício sobre concorrência 1: Faça o download do Objeto de Aprendizagem "Quero Bolo" (http://querobolo.esy.es/index.html) e "brinque" um pouco com ele. Depois realize uma avaliação dele usando o seguinte formulário

  • Exercício sobre concorrência 2: Fazer um robozinho usando o robocode e entregar por formulário o código do robô e um texto explicando a estratégia utilizada pelo seu robô. Dêem uma olhada na API do robocode (http://robocode.sourceforge.net/docs/robocode/) pra explorarem estratégias legais.

Exercícios de Casa:

  • Roteiro 2 (divulgado em 16/10)

  • Roteiro 3 (divulgado em 30/10, entrega em papel e manuscrito no dia 5/11)

  • Roteiro 4 (divulgado em 20/11) :Crie um diagrama UML em papel ou no Astah representando as classes principais do seu projeto referente ao Gerente de Exercícios e implemente o cadastro e pesquisa de algum dos tipos de questões e uma classe de testes para o que implementar. As funcionalidades principais do programa são as seguintes:

    • Cadastrar Exercício

    • Cadastrar Aluno

    • Cadastrar questão de múltipla escolha

    • Cadastrar questão de V ou F

    • Cadastrar questão dissertativa

    • Cadastrar resposta de questão de múltipla escolha

    • Cadastrar resposta de questão de V ou F

    • Cadastrar resposta de questão dissertativa

    • Pesquisar questão de exercício

    • Pesquisar exercício

    • Sortear exercício

    • Atualizar exercício (editar o exercício, alterando seu texto ou suas questões)

    • Corrigir exercício (verificar se as respostas do aluno estão corretas)

    • Enviar feedback para alunos (corrigir as respostas dadas pelos alunos)

    • Enviar feedback para professor (observar para cada exercício como foi o desempenho dos alunos, vendo percentual dos alunos que acertaram cada questão objetiva, vendo as respostas dadas às questões subjetivas, vendo as respostas de um dado aluno ou de uma turma como um todo).

    • Listar exercícios cadastrados

  • Roteiro 5: Trazer exemplos de uso dos padrões GRASP em seu projeto apontando onde estão sendo usados.

  • Roteiro 6 (05/02/14): Elaborar um menu para o programa, considerando as funcionalidades acima e criar este menu usando SWING.

  • Exercício sobre Threads: Baseado no exemplo das threads que incrementam e decrementam, implemente um programa que cria 2 threads que compartilham um objeto Conta (que guarda dentro dele o saldo da conta numa variável e que tem os métodos creditar e debitar). Uma dessas threads deve creditar 10 reais na conta e a outra deve debitar. Vocês devem garantir que as threads não podem creditar e debitar ao mesmo tempo (lembrar da palavra synchronized). No final o programa deverá imprimir o saldo da conta, que deve ser o mesmo saldo inicial.

Notas dos Alunos (incluindo roteiros): Clique AQUI

Repositórios GitHub das Equipes:

Links Importantes

Baixe o JDK aqui

Acesse a API de java a partir daqui

Baixe o Eclipse aqui

Dúvidas comuns dos alunos em Java

Aulas (para ver mais informações, acesse as discussões do grupo da disciplina)

08/10: Apresentação do plano de curso.

09/10: Revisão de Orientação a Objetos (criação e invocação de métodos)

15/10: Revisão de Orientação a Objetos (classes concretas e abstratas e interfaces)

16/10: Roteiro 1: Exercício de revisão

22/10: Revisão de Orientação a Objetos (exceções)

23/10: Roteiro 2: Exercício de Revisão

29/10: Revisão de Orientação a Objetos e Documentação de código com Javadoc

30/10: Testes de Unidade com JUnit

05/11: Desenvolvendo testes de unidade com JUnit

06/11: Exercício de revisão

12/11: Tópicos Avançados de OO: Annotations, Enum, testes JUnit com @Before, @After, @BeforeTest, @AfterTest

13/11: Primeiro estágio

19/11: Tópicos Avançados de OO: Annotations, Enum, testes JUnit com @Before, @After, @BeforeTest, @AfterTest. Herança x Composição. HashMap.

20/11: HashMap. Regras básicas de design OO, Acoplamento e Coesão. Introdução do projeto da disciplina. Tipos genéricos (Generics).

26/11: SESITEAC

27/11: SESITEAC

03/12: Git e GitHub.

04/12: Revisão sobre herança, acoplamento, delegação e coesão. Padrões Grasp: Alta coesão, baixo acoplamento, Information expert e creator.

10/12: Exercício de revisão.

11/12:Segundo Estágio

04/02: Exercício de revisão (Resolução do 2o. estágio)

05/02: Revisão sobre padrões GRASP. Regras básicas de design. Revisão de Testes JUnit.

11/02: Ciclo básico de desenvolvimento de software (Análise - Projeto - Implementação - Testes)

12/02: Acompanhamento dos projetos.

18/02: Refatoramento (Refactoring)

19/02: Acompanhamento dos projetos.

25/02: Criação de Threads e Runnable. Noções de concorrência.

26/02: Acompanhamento dos projetos.

04/03: Exercício sobre Threads e concorrência. Uso do OA Quero Bolo e Robocode.

05/03: Acompanhamento dos projetos.

11/03: Acompanhamento dos projetos.

12/03: Terceiro Estágio

18/03: Apresentação Final dos Projetos

19/03: Reposição

25/03: Prova Final