Planeamento

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 privateprotected 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.

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.