Programação Avançada

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.