Professional Documents
Culture Documents
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
5/30/12
5/30/12
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
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 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
4 4
As diferenas bsicas entre construtores e outros mtodos so: 1. Construtores devem ter exatamente o mesmo nome da
2.
3. Construtores no devem receber modificadores como public ou private, e sero pblicos se a classe for pblica.
5/30/12
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
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
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
8 8
Construtores no podem ser chamados indiscriminadamente de dentro de qualquer mtodo: existem algumas regras para chamada de construtores que so:
5/30/12
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
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
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
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
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
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
Encapsulamento,
Polimorfismo
UML
e Java
5/30/12
17 17