Programação III – 2017/1
Ementa: programação Orientada a Objetos: Classes e Objetos, Atributos e Métodos, Especificadores de Acesso, Herança, Classes e Métodos Abstratos, Polimorfismo, Classes e Métodos Genéricos, Tratamento de Exceções, Tratamento de Eventos, Estudo aprofundado de uma linguagem de programação orientada a objetos.
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: terças-feiras das 11h às 13h e sextas-feiras das 9h às 11h.
Local: CT-9, sala 207 (aulas teóricas), CT-9, sala 105 (LabGrad, aulas práticas) – UFES (Av. Fernando Ferrari, 514 – Goiabeiras – Vitória, ES).
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:
- 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 2017/1 inicia em 27/03/2017 e termina em 31/07/2017. A semana de provas finais 2017/1 vai de 01 a 07/08/2017. 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 |
---|---|
28/03/2017 | Primeira aula do curso. |
14/04/2017 | Não haverá aula – Feriado: Paixão de Cristo. |
21/04/2017 | Não haverá aula – Feriado: Tiradentes. |
28/04/2017 | Prazo para definição dos grupos para trabalho prático. |
02/06/2017 | Prova Parcial. |
16/06/2017 | Não haverá aula – Feriado: Corpus Christi. |
06/07/2017 | Prazo para entrega e entrevistas sobre T1. |
28/07/2017 | Última aula do curso (completando 60 horas-aula). |
31/07/2017 | Prazo para entrega e entrevistas sobre T2. |
04/08/2017 | Prova Final. |
Download de material
Se desejar, consulte o material da última vez que lecionei este curso.
- Apresentação do curso;
- Exercício de Revisão de C;
- O Paradigma Orientado a Objetos;
- Modelagem OO com UML;
- About Stack Overflow Developer Survey 2017;
- Java, parte 01: O que é Java;
- Java, parte 02: Variáveis primitivas e controle de fluxo;
- Java, parte 03: Orientação a objetos básica;
- Java, parte 04: Um pouco de vetores;
- Exercícios, partes 01 a 04: lista / exercícios resolvidos;
- Java, parte 05: Modificadores de acesso e atributos de classe;
- Java, parte 06: Herança, reescrita e polimorfismo;
- Java, parte 07: Classes abstratas e interfaces;
- Exercícios, partes 05 a 07: lista / exercícios resolvidos;
- Java, parte 08: Exceções e controle de erros;
- Java, parte 09: Organizando suas classes;
- Java, parte 10: Utilitários da API Java;
- Exercícios, partes 08 a 10: lista / exercícios resolvidos;
- Exercícios: lista de questões retiradas de provas anteriores;
- Java, parte 11: Conteúdo extra.
- 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 cpp-utils. 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/vitorsouza/cpp-utils.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
Arquivos disponíveis: