Polimorfismo, Interfaces, Classes Abstractas

From Wiki**3

Revision as of 17:31, 23 October 2013 by Root (talk | contribs) (→‎Exemplos)
Programação com Objectos
Introduction
Creation and Destruction
Inheritance & Composition
Abstraction & Polymorphism
Code Organization
Java Topics
Inner Classes
Enumerations
Data Structures
Exceptions
Input/Output
RTTI
Other Topics
JUnit Tests
UML Topics
Design Patterns
"Simple" Factory
Composite & Visitor
Command
Strategy & State
Template Method
Observer
Abstract Factory
Decorator & Adapter
Façade (aka Facade)

Vários aspectos de polimorfismo:

  • Polimorfismo e tipos primitivos
  • Polimorfismo e tipos compostos (classes).
  • Herança e polimorfismo: upcasting e downcasting.
  • Definição de métodos: overloading vs. overriding
  • Selecção do método a invocar:
    • early binding -- o método a invocar é conhecido em tempo de compilação (e.g., final em Java e não-virtual em C++)
    • late binding -- o método a invocar é apenas conhecido em tempo de execução (habitual em Java; única possibilidade em PHP e outras linguagens semelhantes; e métodos declarados com virtual em C++)

Interfaces

  • Princípios e propriedades
  • Separação de interface e implementação

Classes Abstractas

  • Noção de classe abstracta
  • Propriedades
  • Polimorfismo e classes abstractas
  • Discussão de aspectos problemáticos
  • Contraste com interfaces

Exemplos e Exercícios

Exemplos

Exercícios