(22 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | {{NAVPO}} | ||
{{TOCright}} | {{TOCright}} | ||
− | + | 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 ( | + | * Ordem de iniciação de atributos de classes ('''static''') e de objectos. |
− | |||
− | |||
− | |||
− | |||
==''Overloading'' de Construtores== | ==''Overloading'' de Construtores== | ||
− | * '' | + | * ''Overloading'' de métodos. |
==Exemplos== | ==Exemplos== | ||
− | + | Exemplos de aplicação. | |
− | Discussão de aspectos problemáticos e | + | 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 ([[ | + | 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: | + | [[category:Ensino]] |
+ | [[category:PO]] |
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 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.
Exemplos de aplicação. Discussão de aspectos problemáticos e comparação com outras linguagens (C/C++ e PHP).
Discussão de aspectos relacionados com a destruição de objectos: o caso do Java (comparação com outras linguagens).