Difference between revisions of "Programação com Objectos"

From Wiki**3

m (Padrões de Desenho)
(Aula 01: Apresentação)
Line 6: Line 6:
 
A definição oficial do conteúdo de cada aula pode ser encontrada na [https://fenix.ist.utl.pt/publico/viewSite.do?method=summaries&objectCode=8711&executionPeriodOID=83 página dos sumários] mantida pelo Fénix.
 
A definição oficial do conteúdo de cada aula pode ser encontrada na [https://fenix.ist.utl.pt/publico/viewSite.do?method=summaries&objectCode=8711&executionPeriodOID=83 página dos sumários] mantida pelo Fénix.
  
== Aula 01: Apresentação ==
+
== Apresentação ==
 +
Material correspondente à Aula 01.
  
 
===Objectivos Gerais===
 
===Objectivos Gerais===

Revision as of 17:24, 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.

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:

  1. Conhecer e utilizar o paradigma da programação baseada em objectos
  2. Conhecer e utilizar a linguagem Java
  3. Conhecer e utilizar padrões de desenho
  4. 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:

  1. Justificar os princípios da programação baseada em objectos e os conceitos de encapsulamento, abstracção, herança e polimorfismo
  2. Explicar como o mecanismo de classes permite codificar, encapsular e esconder informação
  3. Comparar as noções de overloading e overriding de métodos
  4. Modelar problemas usando uma linguagem baseada em objectos
  5. Usar a linguagem Java (programação, teste e depuração) para resolver problemas modelados com objectos
  6. 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)
  7. Usar uma convenção para os nomes das entidades de um programa durante a codificação
  8. Seleccionar e utilizar padrões de desenho no desenvolvimento de aplicações;
  9. 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: 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 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

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