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).