Polimorfismo, Interfaces, Classes Abstractas: Difference between revisions

From Wiki**3

Root (talk | contribs)
No edit summary
Root (talk | contribs)
No edit summary
Line 1: Line 1:
{{NAVPO}}
{{NAVPO}}
<!--{{TOCright}}-->
{{TOCright}}
Vários aspectos de polimorfismo:
Vários aspectos de polimorfismo:


Line 7: Line 7:
* Herança e polimorfismo: ''upcasting'' e ''downcasting''.
* Herança e polimorfismo: ''upcasting'' e ''downcasting''.


=Organização de Código=
* Definição de métodos: ''overloading'' vs. ''overriding''


* Definição de métodos: ''overloading'' vs. ''overriding''
* Selecção do método a invocar:  
* Selecção do método a invocar: ''early binding'' e ''late binding'' - [[Comparação de Linguagens de Programação|comparação com outras linguagens]]
** ''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++)
 
[[Comparação de Linguagens de Programação|comparação com outras linguagens]]


=Interfaces=
=Interfaces=

Revision as of 18:04, 8 November 2010

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++)

comparação com outras linguagens

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

  • Editor gráfico sem classes abstractas
  • Editor gráfico com classes abstractas

Exercícios