Programação com Objectos
From Wiki**3
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
Programa
Avaliação
Informação Adicional
- Página oficial (Fénix)
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
- Tipos primitivos: dados atómicos simples;
- Objectos e referências em Java: referências e estruturas compostas;
- Contraste com C/C++: diferenças e semelhanças;
- Organização da memória: zonas e memória e respectiva utilização pelos conceitos da linguagem;
- Definição de classes simples: conceitos de variável e método;
- O uso da palavra reservada
static
: definição de dados e funções partilhados; - Convenções de escrita de programas em Java: melhoramento da legibilidade de um programa;
- Escrita e compilação de programas.
Exemplos
- Exemplo simples: "Hello world".
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
- Exemplos de aplicações simples: atribuição; comparador; conversão para
Strings
.
Controlo de fluxo
- if-else
- while, for, do-while
- break, continue, return
- switch-case-default
- Comparação com outras linguagens semelhantes
- Exemplos simples
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
- Overloading de métodos.
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
- Packages e bibliotecas;
- Localização de classes:
CLASSPATH
. - Controlo de acesso:
public
,protected
,private
, "package". - Comparação com outras linguagens.
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
- Chamadas a construtores
- Ordem de iniciação
- Controlo de utilização de atributos e métodos
- A palavra chave final
- Uso de private, protected e public: discussão de aspectos relativos ao uso destas palavras chave
- Funcionamento das referências this e super
Exemplos
- Apresentação e discussão de exemplo completo: classes
Evento
,RefeiçãoComSopa
,Almoço
,Jantar
,Sopa
eBolo
. - Referências this e super: exemplo prático no contexto da aplicação
Evento
.
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
- Exemplo simples:
Animal
,MamÃfero
,Gato
- Exemplo com vector.
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