Difference between revisions of "Classes Internas (Java)"

From Wiki**3

(Exemplos)
(Exemplos)
Line 23: Line 23:
 
Estes exemplos ilustram o uso de classes internas, evidenciando vantagens relativamente à ocultação de pormenores de implementação e consequente melhoria na abstracção e organização de código.
 
Estes exemplos ilustram o uso de classes internas, evidenciando vantagens relativamente à ocultação de pormenores de implementação e consequente melhoria na abstracção e organização de código.
  
 +
=== Gatos Iteráveis ===
 
O exemplo dos gatos iteráveis mostra como iterar um gato constituído por várias partes.
 
O exemplo dos gatos iteráveis mostra como iterar um gato constituído por várias partes.
 
Começa-se com uma implementação menos elegante e termina-se com a "melhor" implementação.
 
Começa-se com uma implementação menos elegante e termina-se com a "melhor" implementação.
Line 28: Line 29:
 
* [[Classes Internas (Java)/Gatos Iteráveis|Gatos Iteráveis]] -- como iterar um gato?
 
* [[Classes Internas (Java)/Gatos Iteráveis|Gatos Iteráveis]] -- como iterar um gato?
  
 +
=== Gato e Estômago ===
 
Os exemplos apresentados nos vários com um gato e um estômago são semelhantes aos anteriores, mostrando como localizar a definição de uma classe interna junto do código onde é utilizada.
 
Os exemplos apresentados nos vários com um gato e um estômago são semelhantes aos anteriores, mostrando como localizar a definição de uma classe interna junto do código onde é utilizada.
  
 
* [[Classes Internas (Java)/Gato e Estômago|Gato e Estômago]] -- gatos e estômagos (várias configurações) (exemplo antigo -- ver iteradores acima)
 
* [[Classes Internas (Java)/Gato e Estômago|Gato e Estômago]] -- gatos e estômagos (várias configurações) (exemplo antigo -- ver iteradores acima)
  
 +
=== Comparadores em Java ===
 +
Os exemplos seguintes dizem respeito a interfaces Java.
 +
 +
* [[Classes Internas (Java)/Comparações em Java|Comparações em Java]] -- definição de comparadores usando interfaces Java pré-definidas.
 +
 +
=== Carros e Motores ===
 
Os exemplos de carros e motores apresentam casos em que existe herança, tanto nas classes externas, como nas classes internas e casos mistos.
 
Os exemplos de carros e motores apresentam casos em que existe herança, tanto nas classes externas, como nas classes internas e casos mistos.
 
Note-se que alguns destes casos não são "normais" e apenas se apresentam para evidenciar consequências relativas à programação com classes internas e herança.
 
Note-se que alguns destes casos não são "normais" e apenas se apresentam para evidenciar consequências relativas à programação com classes internas e herança.
  
 
* [[Classes Internas (Java)/Carros e Motores|Carros e Motores]] -- aspectos e problemas de herança com carros e motores
 
* [[Classes Internas (Java)/Carros e Motores|Carros e Motores]] -- aspectos e problemas de herança com carros e motores
 
Os exemplos seguintes dizem respeito a interfaces Java.
 
 
* [[Classes Internas (Java)/Comparações em Java|Comparações em Java]]
 
  
 
[[Category:Ensino]]
 
[[Category:Ensino]]

Revision as of 01:01, 16 October 2013

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)

As classes internas em Java são mais que classes definidas dentro de outras classes. A definição destas classes é tal que as suas instâncias têm acesso implícito a instâncias das classes exteriores. Como se verá abaixo esta ligação é muito importante para os aspectos interessantes da programção utilizando este tipo de abstracções.

Aspectos 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

Estes exemplos ilustram o uso de classes internas, evidenciando vantagens relativamente à ocultação de pormenores de implementação e consequente melhoria na abstracção e organização de código.

Gatos Iteráveis

O exemplo dos gatos iteráveis mostra como iterar um gato constituído por várias partes. Começa-se com uma implementação menos elegante e termina-se com a "melhor" implementação.

Gato e Estômago

Os exemplos apresentados nos vários com um gato e um estômago são semelhantes aos anteriores, mostrando como localizar a definição de uma classe interna junto do código onde é utilizada.

  • Gato e Estômago -- gatos e estômagos (várias configurações) (exemplo antigo -- ver iteradores acima)

Comparadores em Java

Os exemplos seguintes dizem respeito a interfaces Java.

Carros e Motores

Os exemplos de carros e motores apresentam casos em que existe herança, tanto nas classes externas, como nas classes internas e casos mistos. Note-se que alguns destes casos não são "normais" e apenas se apresentam para evidenciar consequências relativas à programação com classes internas e herança.

Exercícios