Planeamento
Aulas Laboratoriais
L01
(esta aula não faz parte do plano)
Aula L02: Introdução ao ambiente Java
Instalação e compilação.
Programa "Hello world"
class Numero
Aula L03: As classes Gate e avaliação E1
Avaliação E1.1: regras de codificação. As classes AndGate e TernaryAndGate. Avaliação E1.2: erros de codificação.
Aula L04: javadoc e EP2
Introdução à ferramenta javadoc. Apoio à resolução do exercício EP2.
Aula L05: Avaliação EP3
Resolução na aula do exercício para avaliação EP3
Aula L06: Junit e excepções
Utilização de excepções. Utilização da ferramenta Junit-3.8 para desenvolvimento de testes.
Aula L07: UML e Contentores Java
Diagramas de classes em UML.
Contentores em Java: operações mais comuns.
O exemplo do Banco.
Aula L08: Padrão Command
Aplicação do padrão Command ao exemplo das contas bancárias.
Serialização: escrita e leitura de objectos para disco.
Obtenção de propriedades de sistema.
Aula L09: Padrão Composite
Exemplificação do Padrão Composite. Aplicação do Padrão Composite ao Editor Gráfico. Exercício de avaliação EP6: aplicação do padrão Command.
Aula L10: Comentários à entrega intermédia
Correcções a efectuar à entrega intermédia. Dúvidas do projecto.
Aula L11: Dúvidas do projecto
Dúvidas do projecto
Aula L11: Dúvidas do projecto
Dúvidas do projecto
Aula L13: Avaliação do projecto
Comunicação da avaliação do projecto.
Aulas Teóricas
Aula T01: Apresentação da Disciplina
Apresentação da disciplina: objectivos; programa; avaliação. Apresentação de alguns requisitos.
Aula T02: Operadores, Expressões
Continuação da introdução aos objectos e à programação em Java. Definição de classes simples: conceitos de variável e método. Passagem de UML para Java. Escrita e compilação de programas; exemplos simples com Gato de testes. O uso da palavra reservada static. Comparação com C. Apresentação e discussão de operadores, expressões e operações de conversão de tipos primitivos e objectos em Java. Restrições às operações sobre booleanos. Conversão para Strings (método toString).
Aula T03: Construção de Objectos
Método equals. Construção e iniciação de objectos em Java. Múltiplos construtores e chamadas a construtores. Ordem de iniciação de atributos de classes (static) e de objectos. Overloading de métodos. A referência this.
Aula T04: Organização de Código
Organização de código: interface/implementação; separação. Packages. Localização de classes: CLASSPATH. Controlo de acesso: public, protected, private, "package". Exemplos de código.
Aula T05: Herança e Composição
Herança e composição: diferenças. Quando usar cada uma. Discussão de aspectos relacionados com a modelação utilizando estes conceitos. Exemplos simples: classe Gato como subclasse de Animal. Composição de um Gato a partir de "peças básicas". Mecanismos para controlo de utilização de atributos e métodos. Uso de final, private, protected e public (Java). Discussão de aspectos relativos ao uso destas palavras chave. Revisões sobre "packages". Discussão sobre o funcionamento das referências this e super.
Aula T06: Polimorfismo
A palavra chave final (Java). Ordem de iniciação. Polimorfismo. Tipos primitivos e tipos compostos (classes). Herança e polimorfismo: upcasting e downcasting. Early binding e late binding: selecção do método a invocar. Polimorfismo e organização de código. Exemplo (Animais e Gatos).
Aula T07: Classes Abstractas e Interfaces
Noção de classe abstracta. Separação de interface e implementação. Polimorfismo e classes abstractas. Discussão de aspectos problemáticos. Interfaces em Java. Exemplos com e sem classes abstractas. Definição do método equals.
Aula T08: Excepções
Introdução às excepções. Uso do mecanismo de excepções no controlo da execução de programas. Mecanismo de excepções em Java. Excepções e erros. Classes de suporte às excepções: Throwable, Exception, Error. Tipos de excepções: checked exceptions (verificadas em tempo de compilação) e excepções durante a execução (RuntimeException). Exemplos simples de utilização de excepções. Uso de finally.
Aula T09: Testes; UML
Breve introdução à escrita de testes utilizando JUnit. Apresentação de alguns exemplos. Modelação com UML. Diagramas de classes (revisão geral) e de sequência. Primitivas de modelação para classes e suas associações. Correspondência entre modelos e linguagens de programação. Discussão de problemas associados à passagem de uma descrição para a outra.
Aula T10: Classes Internas e Enumerações
Classes internas e os vários aspectos de definição: classes internas simples; implementação de interfaces. Partilha de acesso entre classe externa e interna. Ligação implícita entre objectos de classes internas e a instância da classe externa. Sintaxe. Classes internas locais (métodos e blocos). Classes anónimas. Exemplos ilustrativos dos tópicos apresentados: Gato e Estômago. Tipos enumerados em Java. Enumerados como classes de domínio finito. Propriedades dos enumerados. Exemplos: estações do ano, planetas.
AULA EXTRAORDINÁRIA
Apresentação do material de apoio disponibilizado com o enunciado do projecto: Command.java, Form.java, Input.java, InputBoolean.java, InputFloat.java, InputInteger.java, InputNone.java, InputString.java, Interaction.java, Menu.java, Messages.java, TextInteraction.java, UserInteraction.java
Aula T11: Colecções
Organização de objectos em colecções. Colecções em Java: vectores primitivos e a hierarquia de colecções. Uso de tipos paramétricos (generics). Apresentação de interfaces de topo: Collection, Set, List e Map. Iteradores. Exemplo de utilização de iteradores. A interface Iterable e o uso de foreach: iteração implícita. Apresentação e discussão de exemplos básicos. Interfaces Comparable e Comparator. Discussão das diferenças. Apresentação e discussão de exemplos. API do Java.
Aula T12: Entradas e Saídas
Introdução aos mecanismos de entradas e saídas em Java. Streams, Readers, Writers, .... Composição de canais. Manipulação de ficheiros. Serialização.
Aula T13: Strategy (Padrão de Desenho)
Revisões sobre conceitos gerais sobre modelação e padrões de desenho. Padrão de desenho Strategy. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes. Apresentação e discussão de exemplos práticos: Duck, Fly, Quack. Discussão das semelhanças e diferenças entre os dois padrões (do ponto de vista de delegação de funcionalidade). Discussão sobre a aplicabilidade ao projecto.
Aula T14: Composite (Padrão de Desenho)
Revisões sobre conceitos gerais sobre modelação e padrões de desenho. Padrão de desenho Composite. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes. Apresentação e discussão de exemplos práticos: editor gráfico; rebanhos e ovelhas. Aplicação à refactorização de aplicação: Empregada e Ementa (aplicação Restaurante).
Aula T15: State e Template Method (Padrões de Desenho)
Padrão de desenho State. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes. Discussão de aspectos dos enumerados em Java face ao pradrão. Apresentação e discussão de exemplos práticos: porta automática.
Padrão de desenho Template Method. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes. Apresentação e discussão de exemplos práticos: Cafe, Cha, BebidaQuente.
Apoio à realização do projecto.
Aula T16: Adapter e Decorator (Padrões de Desenho)
Padrão de desenho Adapter. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes. Adaptadores de classes e de objectos. Apresentação e discussão de exemplos práticos: patos e perus.
Padrão de desenho Decorator. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes. Adaptadores de classes e de objectos. Apresentação e discussão de exemplos práticos: Streams no Java e editor de formas.
Apoio à realização do projecto.
Aula T17: Comando (Padrões de Desenho)
Padrão de desenho Comando. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes. Apresentação e discussão de um exemplo prático: Banco, Conta, Titular (aplicação bancaria). Discussão da aplicação ao projecto.
Aula T18: Observer (Padrão de Desenho)
Padrão de desenho Observer. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes. Apresentação e discussão de exemplos práticos: Flores, abelhas e beija-flores. Apoio à realização do projecto.
Aula T19: Abstract Factory (Padrão de Desenho)
Padrão de desenho Abstract Factory. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes. Apresentação e discussão de exemplos práticos: ambiente de jogo. Apoio ao projecto.
Aula T20: Visitor (Padrões de Desenho)
Padrão de desenho Visitor. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes. Apresentação e discussão de exemplos práticos: (i) produtos hortícolas; (ii) travessia de árvore sintáctica (aplicação ao contexto de um compilador).
Aula T21: Bridge, Façade e Proxy (Padrões de Desenho)
Padrão de desenho Bridge. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes. Apresentação e discussão de exemplos práticos: ambiente de janelas (e.g. X), telecomandos e televisores, clientes e servidores, pilhas e pilhas de Hanoi (com duas implementações).
Padrão de desenho Façade. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes.
Padrão de desenho Proxy. Princípios, estrutura, propriedades, aplicações, vantagens, inconvenientes. Apresentação e discussão de exemplos prático. Contraste com o padrão Decorator.
Apoio à realização do projecto.
Aula T22: Padrões de Desenho (conclusão)
Propriedades, vantagens e desvantagens dos Padrões de Desenho. Revisão dos objectivos de cada um dos padrões de desenho que tratam da iniciação e configuração de classes e objectos: Factory Method, Abstract Factory, Builder, Prototype e Singleton. Revisão dos objectivos de cada um dos padrões de desenho que se preocupam com a separação entre a interface e a realização de classes e objectos: Adapter, Bridge, Composite, Decorator, Façade, Flyweight e Proxy. Revisão dos objectivos de cada um dos padrões de desenho que tomam em atenção as interacções de sociedades de classes e objectos: Interpreter, Template Method, Chain of Responsability, Command, Iterator, Mediator, Memento, Observer, State, Strategy e Visitor.
Resolução de perguntas fechadas de testes de anos anteriores.
Aula T23: Resolução de perguntas de testes
Resolução de perguntas de testes teóricos de anos anteriores.
Aula T24: Resolução de perguntas de testes
Resolução de perguntas de testes teóricos de anos anteriores.
Aula T25: Aula de substituição
Esta aula foi substituída pela aula Aula Extraordinária de 21-10-2010 11:30 (Sala: A5)
Aula T26: Realização dos testes práticos
Realização dos testes práticos nas salas 1.27, 1.29 e 1.31.
Aula T27: Realização dos testes práticos
Realização dos testes práticos nas salas 1.27, 1.29 e 1.31.