Conhecimentos de Base Recomendados
- Esta disciplina pressupõe conhecimentos lecionados na disciplina de Programação Orientada a Objetos.
Métodos de Ensino
- A unidade curricular possui auIas teóricas e práticas
- Nas auIas teóricas é utiIizada uma metodoIogia expositiva para a apresentação dos conceitos teóricos da matéria com exempIos de apIicação
- Nas auIas práticas os aIunos apIicam os conhecimentos adquiridos nas auIas teóricas e/ou aulas práticas e exercitam as competências desenvoIvendo apIicações com a supervisão dos docentes.
- Fora das auIas, os aIunos desenvoIvem um projeto, em grupos de três elementos. Os docentes acompanham o desenvoIvimento do projeto, escIarecendo dúvidas e orientando quanto às opções tomadas.
Resultados de Aprendizagem
- Adquirir competências de programação em Iinguagem Java, consoIidando os conhecimentos fundamentais de programação orientada a objetos adquiridos anteriormente.
- Adquirir conhecimentos sobre Software Design Patterns no desenvoIvimento de apIicações.
- Adquirir a capacidade de desenvoIver apIicações para ambiente consoIa e também para ambiente gráfico, baseado em eventos.
- Desenvolver capacidades de organização das estruturas de dados, conseguindo aplicá-las adequadamente em apIicações de média dimensão, estruturando-as de uma forma extensíveI e racionaI, separando os dados da sua forma de representação na interação com o utilizador.
Programa
- Principais características da linguagem Java
- Transição de C/C++ para Java
- Tipos primitivos
- Arrays de tipos primitivos
- Operadores
- Instruções de controlo de execução
- Classes
- Objetos e referências
- Garbage collector
- Construtores
- A palavra chave this
- Construtores que chamam construtores
- Membros static
- Métodos overloaded
- O método finalize()
- Arrays de objetos
- Classes interiores
- Packages
- Organização de componentes
- Especificadores de acesso
- Composição e herança
- Composição
- Herança
- Escolher entre composição e derivação
- A palavra-chave super
- A palavra-chave final
- Polimorfismo
- Upcasting
- A classe Object
- Classes abstratas
- Interfaces
- Colecções
- Principais Interfaces derivados de Collection
- Algumas implementações concretas
- Excepções
- Ficheiros
- Interface gráfica
- Introdução ao JavaFX
- Aplicações com interface gráfico
- Programação baseada em eventos
- Componentes, eventos e listeners
- Padrões de programação
- MVC, MVP e MVVM
- Máquinas de estados
- Singleton
- Fábrica de objetos
- Command
- Memento
- Facade
- Outros padrões
- Introdução ao teste de software
- Testes unitários
- Injeção de dependências nos testes
Docente(s) responsável(eis)
Estágio(s)
NAO
Bibliografia
- Bibliografia Principal:
- Eck, D. (2020). Introduction to Programming Using Java (8th Edition). Disponível em math.hws.edu/javanotes/
- Eckel, B. (2006). Thinking in Java (4th Edition). Prentice Hall. (Cota: 1A-1-448 (ISEC) – 14372).
- Deitel, P.,Deitel, H. (2007). Java How to Program (7th Edition). Prentice Hall. (Cota: 1A-1-146 (ISEC) – 14445).
- Gamma, E., Helm, R., Johnson, R., Vlissides, J. (1995). Design Patterns: Elements of Reusable Object Oriented Software. Addison-Wesley. (Cota: 1A-7-97 (ISEC) – 15112).
- Freeman, E., Freeman, E. (2004). Head First Design Patterns. O’Reilly Media. (Cota: 1A-7-75 (ISEC) – 14706).
- Grand, M.(1998). Patterns in Java Volume 1 : a catalog of reusable design patterns illustrated with UML. John Wiley. (Cota: 1A-1-305 (ISEC) V.1o v. – 09760).
- Bibliografia Complementar:
- Savitch, W.(2018). Java: An Introduction to Problem Solving and Programming (8th Edition). Pearson.
- Horstmann C., Cornell, G. (2015). Core Java, Volume I – Fundamentals (11th Edition). Prentice-Hall.