Você está na página 1de 17

Captulo anterior ( I )

1) 2) 3) 4) 5) 6)

O que so modelos? Exemplos de modelos O que POO? Encapsulamento, Herana e Polimorfismo Classes, Objectos, Instncias e Referncias Exerccios Prtico

Faa clique para editar o estilo

5/30/12

Programao Orientada por Objectos

CAPTULO II CONSTRUTORES E SOBRECARGA


1) O que so construtores?

Faa clique de mtodos 2) Sobrecargapara editar o estilo


2.1) A palavra chave this 3) Exerccios Prticos

5/30/12

Programao Orientada por Objectos

O que so Construtores?
So mtodos especiais, que so chamados automaticamente quando instncias so construtores criadas atravs da palavrachave new. Atravs da criao de construtores, podemos garantir que o cdigo que eles contm ser executado antes de qualquer outro cdigo em outros mtodos, j que uma instncia de uma classe s pode ser utilizada depois de ter sido criada com new, o que causar a execuo do construtor.

5/30/12

Programao Orientada por Objectos

3 3

Construtores so teis para inicializar campos de instncias de classes para garantir que, quando mtodos destas instncias forem chamados, elas contenham valores especficos e no os default. Caso os campos de uma instncia no sejam inicializados, os seguintes valores sero adoptados:

Campos do tipo boolean so inicializados automaticamente com a constante false.

Campos do tipo char so inicializados com o caracter cujo cdigo Unicode zero e que impresso como um espao.

Campos de tipos inteiros (byte, short, long, int) ou de ponto flutuante (float, double) so automaticamente inicializados com o valor zero, do tipo do campo declarado.

Instncias de qualquer classe, inclusive da classe String, so inicializadas automaticamente com null.

5/30/12

Programao Orientada por Objectos

4 4

As diferenas bsicas entre construtores e outros mtodos so: 1. Construtores devem ter exatamente o mesmo nome da

classe a que pertencem, inclusive considerando maisculas e minsculas.

2.

Construtores no podem retornar nenhum valor, nem

mesmo void, portanto devem ser declarados sem tipo de retorno.

3. Construtores no devem receber modificadores como public ou private, e sero pblicos se a classe for pblica.

5/30/12

Programao Orientada por Objectos

5 5

Notas: Quando as classes criadas pelo programador no tem um construtor declarado explicitamente, o compilador Java cria um construtor default, que no recebe argumentos nem executa nenhum cdigo.

Quando criamos um ou mais construtores na nossa classe, o compilador no inclui o construtor default.

5/30/12

Programao Orientada por Objectos

6 6

Sobrecarga e Mtodos
Em algumas ocasies, ser til ou interessante poder executar um mtodo em uma classe passando mais ou menos argumentos, conforme a necessidade.

O Java, permite a criao de mtodos com nomes iguais, desde que as suas assinaturas sejam diferentes. A assinatura de um mtodo composta de seu nome mais os tipos de argumentos que so passados para este mtodo, independente dos nomes de variveis usadas na declarao do mtodo.

5/30/12

Programao Orientada por Objectos

7 7

O tipo de retorno do mtodo no considerado como sendo parte da assinatura: no podemos ter dois mtodos com o mesmo nome, tipo de argumentos mas tipo de retorno diferente* A possibilidade de criar mais de um mtodo com o mesmo nome e assinaturas diferentes conhecida como Sobrecarga de mtodos. A deciso sobre qual mtodo ser chamado quando existem dois ou mais mtodos ser feita pelo compilador, baseado na assinatura dos mtodos.

Em alguns casos, til ter mtodos com o mesmo nome e nmero de argumento, mas tipo de retorno diferente.

5/30/12

Programao Orientada por Objectos

8 8

A palavra chave this


Em Java no podemos chamar um construtor directamente. Felizmente ela cria, internamente para cada instncia, uma autoreferncia, ou seja, uma referncia prpria instncia. Esta referncia representada pela palavra-chave this. Para chamar um construtor de dentro de outro, basta usar a palavra-chave this substituindo o nome do construtor.

Construtores no podem ser chamados indiscriminadamente de dentro de qualquer mtodo: existem algumas regras para chamada de construtores que so:

5/30/12

Programao Orientada por Objectos

9 9

1.

Somente subrotinas.

construtores

podem

chamar

construtores

como

2.

Se um construtor for chamado a partir de outro, a chamada deve ser a primeira linha de cdigo dentro do corpo do construtor.

3. 4.

Construtores no so chamados pelos seus nomes, e sim por this Construtores podem chamar outros mtodos. Por exemplo, pode ser interessante ter um construtor e um mtodo que inicializem as instncias, e chamar o mtodo de dentro do construtor. Mtodos no podem chamar construtores, nem mesmo com this.

5.

Construtores no podem ser chamados recursivamente: um construtor s pode chamar diretamente outro construtor, e no a si prprio.

5/30/12

Programao Orientada por Objectos

10 10

Exerccio Prtico
1.

Identifique e explique o(s) erro(s) na classe abaixo. a) class Ponto2D { private double x,y; ponto2d(double _x, double _y){ x = _x; y = _y; } }

5/30/12

Programao Orientada por Objectos

11 11

Soluo - a)
class Ponto2D { private double x,y; ponto2d(double _x, double _y){ x = _x; y = _y; O nome do } construtor } deve ser igual ao nome da classe

5/30/12

Programao Orientada por Objectos

12 12

b)
class Data { private byte dia, ms; private short ano; private Data(byte d, byte m, short a) { dia = d; ms = m; ano = a; } }

5/30/12

Programao Orientada por Objectos

13 13

C)
class Ponto2D { private double x,y; Ponto2D() { Ponto2D(0.0,0.0); } Ponto2D(double coord1,double coord2) { x = coord1; y = coord2; } }
5/30/12 Programao Orientada por Objectos 14 14

2. Escreva dois construtores para a classe Contador, um que no receba argumentos e considere que o contador comea a contar a partir do zero, e outro que aceita um valor inicial para contagem.

5/30/12

Programao Orientada por Objectos

15 15

3. Escreva dois construtores para a classe Ponto2D : um sem argumentos que considere que o ponto est na origem, ou seja, com coordenadas (0;0), e um que receba dois argumento do tipo double e que os utilize para inicializar os campos da classe.

?
5/30/12 Programao Orientada por Objectos 16 16

Prximos captulos

Campos e Mtodos Estticos Herana e

Encapsulamento,

Polimorfismo
UML

e Java

5/30/12

Programao Orientada por Objectos

17 17