|
|
Line 30: |
Line 30: |
| | | |
| ===Programa=== | | ===Programa=== |
| + | ====Paradigma de programação com Objectos e a Linguagem Java==== |
| + | |
| + | *Introdução aos objectos: tudo é um objecto; interface; polimorfismo; tempos de vida |
| + | *Tudo é um objecto: definição; longevidade; classes; métodos; programas; regras de codificação |
| + | *Instruções de controlo: precedências; atribuição; operadores; moldagem; literais; controlo de execução |
| + | *Iniciação e Limpeza; construtores; métodos sobrecarregados; "this"; colector de lixo; iniciação |
| + | *Esconder a realização: bibliotecas; acesso aos membros; acesso à classe |
| + | *Reutilização: composição; herança; desenvolv. Incremental;palavra reservada "final"; carregamento de classes |
| + | *Polimorfismo: ligação na chamada de métodos; carregar vs. substituir; classes abstractas |
| + | *Interfaces |
| + | *Classes internas |
| + | *Excepções: apanhar uma excepção; criar nobvas excepções; "finally" |
| + | *Guardar os objectos: vectores; contentores; iteradores; colecções; "list"; "set"; "map" |
| + | *Entradas /saÃdas: a classe "File"; "streams"; compressão; serialização de objectos |
| + | *Classe "Class" |
| + | |
| + | ====Linguagem UML==== |
| + | * Diagrama de classes |
| + | * Diagrama de sequência |
| + | |
| + | ====Padrões de Desenho==== |
| + | *Introdução, como seleccionar um PD; como usar um PD |
| + | *Padrão ''Composite'' |
| + | *Padrão ''Command'' |
| + | *Padrão ''State'' |
| + | *Padrão ''Template Method'' |
| + | *Padrão ''Decorator'' |
| + | *Padrão ''Strategy'' |
| + | *Padrão ''Observer'' |
| + | *Padrão ''Abstract factory'' |
| + | *Padrão ''Bridge'' |
| + | *Padrão ''Visitor'' |
| + | *Catálogo de Padrões de Desenho |
| + | |
| ===Avaliação=== | | ===Avaliação=== |
| | | |
Revision as of 17:18, 5 October 2005
A definição oficial do conteúdo de cada aula pode ser encontrada na página dos sumários mantida pelo Fénix.
Aula 01: Apresentação
Objectivos Gerais
A disciplina de Programação com Objectos tem como objectivo que os alunos fiquem a conhecer o paradigma da programação baseada em objectos, assim como as metodologias e tecnologias a ela associadas. Pretende-se que os alunos conheçam as suas vantagens, inconvenientes e limitações.
Assim, parecem ser quatro as principais competências e atitudes que identificam os processos cognitivos internos do aluno, uma vez finalizado o processo educativo:
- Conhecer e utilizar o paradigma da programação baseada em objectos
- Conhecer e utilizar a linguagem Java
- Conhecer e utilizar padrões de desenho
- Conhecer e utilizar as técnicas de escrita de testes de avaliação para o código produzido
Objectivos Operacionais
As condutas observáveis e mensuráveis, uma vez concluÃda com sucesso esta disciplina, são:
- Justificar os princÃpios da programação baseada em objectos e os conceitos de encapsulamento, abstracção, herança e polimorfismo
- Explicar como o mecanismo de classes permite codificar, encapsular e esconder informação
- Comparar as noções de overloading e overriding de métodos
- Modelar problemas usando uma linguagem baseada em objectos
- Usar a linguagem Java (programação, teste e depuração) para resolver problemas modelados com objectos
- Usar a Unified Modeling Language (UML) para representar relações estáticas entre classes (herança, agregação e referência) e de colaboração (diagramas de sequência)
- Usar uma convenção para os nomes das entidades de um programa durante a codificação
- Seleccionar e utilizar padrões de desenho no desenvolvimento de aplicações;
- Programar testes para avaliar código
Programa
Paradigma de programação com Objectos e a Linguagem Java
- Introdução aos objectos: tudo é um objecto; interface; polimorfismo; tempos de vida
- Tudo é um objecto: definição; longevidade; classes; métodos; programas; regras de codificação
- Instruções de controlo: precedências; atribuição; operadores; moldagem; literais; controlo de execução
- Iniciação e Limpeza; construtores; métodos sobrecarregados; "this"; colector de lixo; iniciação
- Esconder a realização: bibliotecas; acesso aos membros; acesso à classe
- Reutilização: composição; herança; desenvolv. Incremental;palavra reservada "final"; carregamento de classes
- Polimorfismo: ligação na chamada de métodos; carregar vs. substituir; classes abstractas
- Interfaces
- Classes internas
- Excepções: apanhar uma excepção; criar nobvas excepções; "finally"
- Guardar os objectos: vectores; contentores; iteradores; colecções; "list"; "set"; "map"
- Entradas /saÃdas: a classe "File"; "streams"; compressão; serialização de objectos
- Classe "Class"
Linguagem UML
- Diagrama de classes
- Diagrama de sequência
Padrões de Desenho
- Introdução, como seleccionar um PD; como usar um PD
- Padrão Composite
- Padrão Command
- Padrão State
- Padrão Template Method
- Padrão Decorator
- Padrão Strategy
- Padrão Observer
- Padrão Abstract factory
- Padrão Bridge
- Padrão Visitor
- Catálogo de Padrões de Desenho
Avaliação
Informação Adicional
Aula 02: Introdução
Introdução aos objectos
- O que é um objecto
- Aspectos da captura de caracterÃsticas: como capturar a natureza das coisas, tendo em consideração os aspectos de interesse para o fim em causa.
Introdução à programação em Java
Exemplos
Aula 03: Operadores, Expressões e Controlo de Fluxo
Operadores e expressões
- Apresentação e discussão de operadores, expressões e operações de conversão de tipos primitivos e objectos em Java
- Aspectos relacionados noutras linguagens (C/C++/Smalltalk)
- Método
equals
- Casts
- Restrições à s operações sobre booleanos
Exemplos
Controlo de fluxo
Aula 04: Construção de Objectos
Construção e iniciação de objectos
- Construção e iniciação de objectos em Java;
- Ordem de iniciação de atributos de classes (
static
) e de objectos.
A Referência this
- Uso como auto-referência
- Sintaxe especial para chamada a múltiplos construtores
Overloading
Exemplos
Exemplos de aplicação.
Discussão de aspectos problemáticos e comparação com outras linguagens (PHP e C/C++).
Destruição de objectos
Discussão de aspectos relacionados com a destruição de objectos: o caso do Java (comparação com outras linguagens). Este tópico foi discutido na Aula 06.
Aulas 05 e 06: Organização de Código e Packages
Organização de código
- Revisão do conceito de tipo de dados abstracto;
- Organização de código: interface/implementação; separação;
O caso Java
Exemplos
Aulas 07 e 08: Herança e Composição
Herança e composição
- Diferenças
- Quando usar cada uma das técnicas
- Discussão de aspectos relacionados com estes conceitos
Exemplos
Mecanismos do Java
Exemplos
Aula 09: Polimorfismo
Tipos
- Polimorfismo e tipos primitivos
- Polimorfismo e tipos compostos (classes).
- Herança e polimorfismo: upcasting e downcasting.
Organização de Código
- Definição de métodos: overloading vs. overriding
- Selecção do método a invocar: early binding e late binding
Exemplos
Aula 10: Polimorfismo e Classes Abstractas
Classes Abstractas
- Noção de classe abstracta
- Separação de interface e implementação
- Propriedades
- Polimorfismo e classes abstractas
- Discussão de aspectos problemáticos
Exemplos
- Editor gráfico sem classes abstractas
- Editor gráfico com classes abstractas
Aula 11: Interfaces
Interfaces
- Revisão dos conceitos subjacentes à s classes abstractas e suas propriedades
- PrincÃpios e propriedades
Interfaces em Java
- Comparação entre classes abstractas e interfaces
Exemplos
- Exemplos simples em Java e C++ (classes virtuais puras)
- Exemplo completo em Java: Cão, Vigilante, CãoDeGuarda, CãoPastor