Difference between revisions of "Construção, Iniciação e Destruição de Objectos"

From Wiki**3

 
(27 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
{{NAVPO}}
 
{{TOCright}}
 
{{TOCright}}
Material correspondente à Aula 04.
+
Esta secção está dedicada ao processo de criação, iniciação (definição de valores iniciais) e destruição de objectos.
  
 
==Construção e iniciação de objectos==
 
==Construção e iniciação de objectos==
 +
 +
Construção e iniciação correspondem ao processo de reservar uma zona de memória e nela colocar valores que correspondam à definição de um objecto numa dada linguagem. A forma como as várias linguagens abordam esta questão é, naturalmente, muito dependente da estrutura da própria linguagem: C++, por exemplo, dá ao programador controlo fino sobre aspectos como a origem da zona de memória do objecto; Java, por outro lado, tende a esconder aqueles pormenores do programador.
 +
 +
Onde há concordância é na sequência de iniciação: um objecto não pode ser utilizado sem primeiro ser iniciado. As várias linguagens dispõem de várias formas, aparentemente diferentes, mas que conduzem ao mesmo resultado prático: o objecto que acabou de ser criado é iniciado de forma a poder ser utilizado pelos métodos da classe a que pertence. Há aspectos desta iniciação (e.g., ponteiros para tabelas de métodos virtuais em C++ ou outros da mesma natureza noutras linguagens, mais ligados a implementações particulares do que à semântica do objecto) que não interessa aqui discutir em pormenor, pelo que a discussão incide apenas nos dados disponíveis para o programador.
 +
 
* Construção e iniciação de objectos em Java;
 
* Construção e iniciação de objectos em Java;
* Ordem de iniciação de atributos de classes (<code>static</code>) e de objectos.
+
* Ordem de iniciação de atributos de classes ('''static''') e de objectos.
 
 
==A Referência <code>this</code>==
 
* Uso como auto-referência
 
* Sintaxe especial para chamada a múltiplos construtores
 
  
==Overloading==
+
==''Overloading'' de Construtores==
  
* ''[[Overloading]]'' de métodos.
+
* ''Overloading'' de métodos.
  
 
==Exemplos==
 
==Exemplos==
  
[[PO 2005/06: Exemplos da Aula 04|Exemplos de aplicação]].
+
Exemplos de aplicação.
Discussão de aspectos problemáticos e [[Comparação de Linguagens de Programação|comparação com outras linguagens]] (PHP e C/C++).
+
Discussão de aspectos problemáticos e comparação com outras linguagens (C/C++ e PHP).
  
 
==Destruição de objectos==
 
==Destruição de objectos==
  
Discussão de aspectos relacionados com a destruição de objectos: o caso do Java ([[Comparação de Linguagens de Programação|comparação com outras linguagens]]). Este tópico foi discutido na Aula 06.
+
Discussão de aspectos relacionados com a destruição de objectos: o caso do Java (comparação com outras linguagens).
 +
 
 +
== Construção de Objectos em Linguages Específicas ==
 +
 
 +
* [[Construção, Iniciação e Destruição de Objectos/Construção de Objectos em Java|Construção de Objectos em Java]]
 +
* [[Construção, Iniciação e Destruição de Objectos/Construção de Objectos em C++|Construção de Objectos em C++]]
  
[[category:PO 2005/2006]]
+
[[category:Ensino]]
 +
[[category:PO]]

Latest revision as of 11:45, 27 October 2015

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)

Esta secção está dedicada ao processo de criação, iniciação (definição de valores iniciais) e destruição de objectos.

Construção e iniciação de objectos

Construção e iniciação correspondem ao processo de reservar uma zona de memória e nela colocar valores que correspondam à definição de um objecto numa dada linguagem. A forma como as várias linguagens abordam esta questão é, naturalmente, muito dependente da estrutura da própria linguagem: C++, por exemplo, dá ao programador controlo fino sobre aspectos como a origem da zona de memória do objecto; Java, por outro lado, tende a esconder aqueles pormenores do programador.

Onde há concordância é na sequência de iniciação: um objecto não pode ser utilizado sem primeiro ser iniciado. As várias linguagens dispõem de várias formas, aparentemente diferentes, mas que conduzem ao mesmo resultado prático: o objecto que acabou de ser criado é iniciado de forma a poder ser utilizado pelos métodos da classe a que pertence. Há aspectos desta iniciação (e.g., ponteiros para tabelas de métodos virtuais em C++ ou outros da mesma natureza noutras linguagens, mais ligados a implementações particulares do que à semântica do objecto) que não interessa aqui discutir em pormenor, pelo que a discussão incide apenas nos dados disponíveis para o programador.

  • Construção e iniciação de objectos em Java;
  • Ordem de iniciação de atributos de classes (static) e de objectos.

Overloading de Construtores

  • Overloading de métodos.

Exemplos

Exemplos de aplicação. Discussão de aspectos problemáticos e comparação com outras linguagens (C/C++ e PHP).

Destruição de objectos

Discussão de aspectos relacionados com a destruição de objectos: o caso do Java (comparação com outras linguagens).

Construção de Objectos em Linguages Específicas