|
|
Line 261: |
Line 261: |
| * [[PO 2005/06: Exemplos da Aula 12|Exemplos de classes internas e externas]]: <code>Gato</code> e <code>Estômago</code> | | * [[PO 2005/06: Exemplos da Aula 12|Exemplos de classes internas e externas]]: <code>Gato</code> e <code>Estômago</code> |
| * [[PO 2005/06: Exemplos da Aula 13|Exemplos de herança com classes internas e externas]]: <code>Carro</code> e <code>Motor</code> | | * [[PO 2005/06: Exemplos da Aula 13|Exemplos de herança com classes internas e externas]]: <code>Carro</code> e <code>Motor</code> |
| + | |
| + | == Enumerações == |
| + | |
| + | Material correspondente à Aula 14. |
| + | |
| + | ===Tipos Enumerados=== |
| + | |
| + | * Tipos enumerados em Java |
| + | * Enumerados como classes de domÃnio finito |
| + | * Propriedades dos enumerados |
| + | * Constraste com a definição de enumerações noutras linguagens (C, C++) |
| + | |
| + | ===Exemplos=== |
| + | |
| + | * [[PO 2005/06: Exemplos da Aula 14|Exemplos]]: estações do ano, planetas |
| + | |
| | | |
| [[category:OOP]] | | [[category:OOP]] |
| [[category:Aulas]] | | [[category:Aulas]] |
Revision as of 18:06, 12 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.
Apresentação
Material correspondente à Aula 01.
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 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
Objectos e a Linguagem Java
Os seguintes tópicos correspondem ao paradigma de programação baseada em objectos e à linguagem Java.
- Introdução aos objectos: definição, interface, polimorfismo, longevidade, classes, métodos, programas, regras de codificação
- Operadores e controlo de execução: precedências, atribuição, moldagem, literais, instruções de controlo de fluxo
- 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: herança, composição, desenvolvimento incremental e palavra reservada
final
, carregamento de classes
- Polimorfismo: binding de métodos; overloading vs. overriding; classes abstractas e interfaces
- Classes internas
- Excepções: apanhar uma excepção; criar novas excepções;
finally
- Guardar os objectos: vectores; contentores; iteradores; colecções; "list"; "set"; "map"
- Entradas e saÃdas: a classe
File
; streams; compressão; serialização
- Classe
Class
Linguagem UML
- Diagrama de classes
- Diagrama de sequência
Padrões de Desenho
- Introdução: como seleccionar um padrão; como usar um padrão
- Padrões Composite, Command, State, Template Method, Decorator, Strategy, Observer, Abstract factory, Bridge, Visitor
- Catálogo de padrões de desenho
Avaliação
O método de avaliação é como se indica na página oficial
A informação disponibilizada aqui é apenas um resumo com fins meramente informativos.
1ª Componente - 50%
Projecto (sem nota mÃnima) com as seguintes datas:
- Entrega intermédia: 14 de Novembro de 2005
- Entrega final: 30 de Novembro de 2005
- Discussões finais decorrem de 13 a 15 de Dezembro de 2005. A discussão final inclui um teste prático.
2ª Componente - 40%
Teste (nota mÃnima de 7.5 valores) a realizar em 20 de Dezembro de 2005.
Repescagem a 4 de Fevereiro de 2006.
3ª Componente - 10%
Seis Séries de ExercÃcios (sem nota mÃnima) a realizar nas aulas práticas e em casa.
Informação Adicional
Introdução
Material correspondente à Aula 02.
Introdução aos objectos
Introdução à programação em Java
Exemplos
Operadores, Expressões e Controlo de Fluxo
Material correspondente à Aula 03.
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
Construção de Objectos
Material correspondente à Aula 04.
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.
Organização de Código e Packages
Material correspondente às Aulas 05 e 06.
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
Herança e Composição
Material correspondente às Aulas 07 e 08.
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
Polimorfismo
Material correspondente à Aula 09.
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
Polimorfismo e Classes Abstractas
Material correspondente à Aula 10.
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
Interfaces
Material correspondente à Aula 11.
Interfaces
- Revisão dos conceitos subjacentes à s classes abstractas e suas propriedades
- PrincÃpios e propriedades
Interfaces em Java
Exemplos
Classes Internas
Material correspondente às Aulas 12 e 13.
Classes internas em Java.
PrincÃpios Básicos
- Classes internas e os vários aspectos de definição: classes internas simples; implementação de interfaces
- Ligação implÃcita entre objectos de classes internas e a instância da classe externa
- Partilha de acesso entre classe externa e interna
- Herança e classes internas e externas
Organização de código
- Sintaxe
- Organização de interfaces e classes e acesso ao código
- Classes internas locais (métodos e blocos)
- Classes anónimas
Exemplos
Enumerações
Material correspondente à Aula 14.
Tipos Enumerados
- Tipos enumerados em Java
- Enumerados como classes de domÃnio finito
- Propriedades dos enumerados
- Constraste com a definição de enumerações noutras linguagens (C, C++)
Exemplos