Programação Aplicada de Computadores – 2015/2
Ementa: introdução à programação orientada a objetos: abstrações de dados, classes e objetos, atributos e métodos, reuso de código por composição, reuso por herança, polimorfismo, classes abstratas. Interfaces gráficas: noções de programação concorrente (processos, threads), programação orientada a eventos, componentes de programação gráfica (janelas, painéis, botões, menus), gerenciamento de layout de interfaces gráficas. Utilização de aplicativos gráficos.
Objetivo: projetar e programar usando os conceitos de Programação Orientada a Objetos. Aprender a usar linguagens de programação orientadas a objetos.
Metodologia: aulas expositivas e aulas práticas em laboratório.
Dia/horário das aulas: segundas e quartas-feiras, das 11h às 13h.
Local: CT-12, sala 104 (aulas teóricas), CT-2, LCEE/sala 16 (aulas práticas).
Carga horária semestral: 60 horas.
Mais informações:
- Programa detalhado;
- Sistema de avaliação;
- Bibliografia;
- Cronograma / datas importantes;
- Download de material do curso (slides, exercícios, etc.);
- Agende um horário para atendimento.
Programa detalhado
- Orientação a Objetos:
- Princípios fundamentais, conceitos básicos e avançados;
- Modelagem e projeto orientados a objetos;
- Classes e Objetos:
- Abstração de Dados;
- Classes e Objetos;
- Atributos e Métodos;
- Encapsulamento e Ocultamento de Informação;
- Classes internas;
- Herança:
- Composição x Derivação;
- Herança Simples de Métodos e Atributos;
- Sobrescrição de Métodos;
- Polimorfismo;
- Amarração Dinâmica de Métodos;
- Ampliação e Estreitamento de Tipos;
- Classes e Métodos Abstratos;
- Herança Múltipla;
- Genéricos:
- Funções e Métodos Genéricos;
- Classes Genéricas;
- Estruturas de Dados Genéricas;
- Genéricos e Herança;
- Exceções:
- Tipos;
- Tratamento;
- Lançamento;
- Propagação;
- Criação;
- Tópicos avançados:
- Interfaces Gráficas com Usuário;
- Programação Orientada a Eventos;
- Concorrência e Sincronização;
- Estudo de Outras Linguagens de Programação OO.
Sistema de avaliação
A avaliação será constituída de 1 prova (P) valendo 10 e 2 trabalhos computacionais (T1 e T2) valendo 10 cada. A nota parcial será obtida com a seguinte fórmula:
Alunos que obtiverem nota parcial igual ou superior a 7 não farão prova final, tendo sua nota final igual à nota parcial. Demais alunos terão sua nota final calculada pela média aritmética simples entre a nota parcial e a nota da prova final e deverão obter nota final igual ou superior a 5 para serem aprovados.
Observação: o aluno que tiver mais de 25% (vinte e cinco por cento) de faltas, contadas em relação ao número de horas-aulas previstas para a disciplina, será privado do direito de prestar exame final e estará, independentemente de qualquer outra condição, reprovado. (Art. 51 Regimento CT, art. 104 Regimento Geral Ufes). Além disso, a média final da disciplina será arredondada para valores inteiros ou fração de 0,5, de acordo com o art. 63, parágrafos 1º e 2º do Regimento CT.
Bibliografia
Livros:
- BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML guia do usuário: o mais avançado tutorial sobre Unified Modeling Language (UML), elaborado pelos próprios criadores da linguagem, 2ª Edição. Elsevier, 2012;
- P. Deitel, H. Deitel. Java – Como Programar, 8a Edição. Pearson Prentice Hall, 2010;
- P. Deitel, H. Deitel. C++ Como Programar, 5ª Edição. Pearson Education, 2010;
A lista de livros da bibliografia complementar está disponível no programa da disciplina arquivado junto à secretaria do Departamento de Informática.
Materiais disponíveis online:
- Notas de Aula – Engenharia de Requisitos (Ricardo de A. Falbo) – o capítulo 6 fala sobre o diagrama de classes da UML;
- Apostila Programação Orientada a Objetos em Java (Flávio M. Varejão);
- Apostila Programação Orientada a Objetos em C++ (Berilhes B. Garcia, Flávio M. Varejão);
- Apostila do curso FJ-11: Java e Orientação a Objetos (Caelum);
- Livro “Thinking in Java”, 3a edição (Bruce Eckel);
- Livro “Thinking in C++”, 2a edição, volume 1 (Bruce Eckel).
Ambos os livros do Bruce Eckel podem ser obtidos mais diretamente na página de downloads de livros da MindView. É possível chegar a ela usando os links acima, porém este link é mais direto.
Cronograma / Datas importantes
O período 2015/2 inicia em 03/08/2015 e termina em 04/12/2015. A semana de provas finais 2015/2 vai de 07 a 11/12/2015. A tabela abaixo resume eventos importantes durante o curso. O programa de aulas com o cronograma completo do curso é exibido em seguida.
Data | Descrição |
---|---|
03/08/2015 | Não haverá aula – Semana da Engenharia. |
05/08/2015 | Não haverá aula – Semana da Engenharia. |
10/08/2015 | Primeira aula do curso. |
01/09/2015 | Prazo para definição dos grupos para trabalho prático. |
07/09/2015 | Não haverá aula – Feriado da Independência do Brasil. |
07/10/2015 | Prova Parcial. |
12/10/2015 | Não haverá aula – Feriado de Nossa Senhora Aparecida. |
28/10/2015 | Não haverá aula – Feriado do Dia do Servidor Público. |
02/11/2015 | Não haverá aula – Feriado de Finados. |
06/11/2015 | Prazo para entrega e entrevistas sobre T1. |
09/12/2015 | Prazo para entrega e entrevistas sobre T2. |
14/12/2015 | Prova Final. |
Download de material
- Apresentação do curso;
- Exercício de Revisão de C;
- O Paradigma Orientado a Objetos;
- Modelagem OO com UML;
- Exercícios de modelagem OO com UML: Clínica Médica;
- Slides do curso de Java – parte 01: Introdução;
- Slides do curso de Java – parte 02: Tipos, variáveis e operadores;
- Slides do curso de Java – parte 03: Estruturas de controle e programação básica;
- Slides do curso de Java – parte 04: Classes e objetos;
- Lista de Exercícios Java 01 (Partes 1 a 4 do curso): lista / exercícios resolvidos;
- Slides do curso de Java – parte 05: Reuso de Classes;
- Slides do curso de Java – parte 06: Polimorfismo;
- Slides do curso de Java – parte 07: RTTI e Interfaces;
- Slides do curso de Java – parte 08: Classes Internas;
- Lista de Exercícios Java 02 (Partes 5 a 8 do curso): lista / exercícios resolvidos;
- Slides do curso de Java – parte 09: Exceções;
- Slides do curso de Java – parte 10: Arquivos e fluxos;
- Slides do curso de Java – parte 11: Utilidades;
- Slides do curso de Java – parte 12: Tipos genéricos;
- Lista de Exercícios Java 03 (Partes 9 a 12 do curso): lista / exercícios resolvidos;
- Curso Rápido de C++: slides;
- Lista de Exercícios C++: lista / exercícios resolvidos;
- Código-fonte de exemplo de "tokenização" em C++;
- Encontra-se disponível o nemo-utils-cpp. Para obtê-lo como projeto no Eclipse e executar o programa de testes, siga os seguintes passos:
- Abra o Eclipse C/C++ e clique em File – Import…;
- Na pasta Git, selecione Projects from Git e clique Next;
- Selecione URI e clique Next;
- No campo URI, preencha https://github.com/nemo-ufes/nemo-utils-cpp.git e clique Next;
- A opção master deve estar marcada. Apenas clique Next;
- Verifique onde o projeto será salvo no campo Directory, alterando-o caso deseje. Clique Next;
- Deixe a opção Import existing projects selecionada e clique Next;
- Na lista Projects o projeto nemo-utils-cpp deve ter aparecido. Clique Finish;
- Clique com o botão direito no projeto e escolha Run As… – Local C/C++ Application.
- Exemplo de Makefile.
Trabalho prático
- Especificação do trabalho prático;
- Roteiro para o T1 (Java);
- Script de testes T1 (Java);
- Script de testes T2 (C++).
Para o trabalho de C++, sugere-se "traduzir" o trabalho Java para C++ classe a classe (a mesma ordem de desenvolvimento do roteiro pode ser usada também neste caso).