Desenvolvimento de sistemas de software de complexidade média utilizando o paradigma de orientação a objetos. Estudo e análise dos conceitos de herança e polimorfismo. Discussão de aspectos avançados sobre classes. Discussão sobre empacotamento e distribuição de aplicações. Implementação de estruturas de dados encadeadas. Uso de bibliotecas de coleções. Projeto de sistemas orientados a objetos.
1.2. Revisão de Conceitos
1.2.1. Classes e objetos
1.2.2. Atributos e métodos: classe e instância
1.2.3. Tipos de dados: referência e valor
1.2.4. Visibilidade de atributos e métodos
1.2.5. Construtores e destrutores
1.3. Sobrecarga de métodos
1.4. Modelagem orientada a objetos
1.4.1 Associações e dependências
1.4.2 Diagramas de classe UML
1.4.3 Problemas de modelagem
1.5. Introdução ao teste unitário
2.1. Relacionamento de generalização/especialização
2.1.1 Herança simples
2.1.2 O princípio da substituição
2.1.3 Sobrescrita de métodos
2.2. Polimorfismo
2.2.1. Explorando polimorfismo
2.2.2. Classes abstratas
2.2.3. A classe Object
2.2.4. O operador instanceof
2.2.5. Interfaces
2.4. Parametrização de tipos
2.5. Problemas de modelagem
3.1. Tratamento de exceções
3.1.1. Lançamento de exceções
3.1.2. Captura de exceções
3.1.3. Entendendo a hierarquia de exceções padrão
3.1.4. Modelando exceções
3.2. Leitura e escrita de arquvios texto
3.2.1. Leitura de dados
3.2.2. Gravação de dados
3.2.3. Formatação de dados
3.2.4. Armazenamento e recuperação de objetos
4.1. Princípios de Projeto Orientado a Objetos
4.1.1 Encapsulamento, coesão, acoplamento
4.1.2 Heurísticas de projeto
4.2. Introdução à reutilização
4.2.1 Padrões de projeto
4.2.2 Frameworks
4.2.3 Componentes
5.1. Coleções
5.1.1. A estrutura da API de coleções
5.1.2. Listas, filas e pilhas
5.1.3. Conjuntos
5.1.4. Mapas
5.1.5. Resolução de problemas
5.2. Expressões lambda e predicados
5.1. O framework de interface de usuário
5.2. Hierarquia de componentes
5.3. Eventos e ações
5.4. Janelas e painéis
5.5. Menus
1. HORSTMANN, C. Java for everyone: late objects. 2nd ed. Danvers: Wiley, 2013. 589 p.
2. RAMNATH, S.; DATHAN, B. Object-oriented analysis and design. New York: Springer, 2010. 440 p.
3. WEISFELD, M. The object-oriented thought process. 4th ed. Addison Wesley, 2013. 36 p.
1. BOOCH, G.; MAKSIMCHUK, R. A.; ENGLE, M. W.; YOUNG, B. J.; CONALLEN J.; HOUSTON, K. A. Object-oriented analysis and design with applications. 3rd ed. Addison Wesley, 2007. 720 p.
2. DEITEL, P.; DEITEL, H. Java: how to program. 9th ed. Prentice Hall, 2011. 1496 p.
3. FARRELL, J. An object-oriented approach to programming logic and design. 4th ed. Cengage Learning, 2012. 560 p.
4. GAMMA, E.; JOHNSON, R.; VLISSIDES, J.M.; HELM, R.; FOWLER, M. Padrões de projeto: soluções reutilizáveis de software orientado a objetos. Porto Alegre: Bookman, 2002. 364 p.
5. GOODRICH, M. T.; TAMASSIA, R. Estruturas de dados e algoritmos em Java. 4ª ed. Porto Alegre: Bookman, 2012. 600 p.
Onde:
PS - Prova de substituição, abrangendo toda a matéria. Apenas os alunos que não compareceram a uma das 2 provas (P1 ou P2) têm direito que realizar esta prova
G1 = Para aprovação em G1 é necessário média maior ou igual a 7 e freqüência mínima de 75%
G2 = Os alunos que não obtiveram aprovação em G1 devem realizar a prova de G2, desde que:
A média de G2 é calculada da seguinte forma:
G2 = (G1 + nota da prova de G2) / 2
Se o aluno obtiver média de G2 maior ou igual a 5 será aprovado.