JAVA - Apostila
532 pág.

JAVA - Apostila


DisciplinaProgramação Orientada A Objetos3.976 materiais57.899 seguidores
Pré-visualização28 páginas
11 de março de 2013 177 / 527
Java \u2013 Métodos
Exemplo
public class ImprimeNome {
2
public static void main( String args[] ) {
4 String nome = "Ricardo";
imprimeRetornandoTamanho( nome );
6 }
8 private static int imprimeRetornandoTamanho( String nome ) {
System.out.println( nome );
10 return nome.length();
}
12
}
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 178 / 527
Java \u2013 Métodos
Exercícios
fatorial
escreveMaior
Recebe n e imprime: n > n-1 > n-2 > · · · > 1 > 0
retornaMenorElemento
retornaMaiorElemento
retornaMedia
Fazer com for e com foreach
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 179 / 527
Java \u2013 Métodos
Solução fatorial
1 public class Fatorial {
3 public static void main( String args[] ) {
int n = Teclado.lerInteger( "Digite n" );
5 System.out.printf( "%d! = %d", n, fat( n ) );
}
7
private static long fat( int n ) {
9 long res = 1;
if ( n == 0 || n == 1 ) {
11 return 1;
}
13 for ( int i = 2; i <= n; i++ ) {
res *= i;
15 }
return res;
17 }
19 }
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 180 / 527
Java \u2013 Métodos
Solução escreveMaior
public class EscreveMaior {
2
public static void main( String args[] ) {
4 int n = Teclado.lerInteger( &quot;Digite n&quot; );
escreveMaior( n );
6 }
8 private static void escreveMaior( int n ) {
for ( int i = n; i >= 0; i-- ) {
10 System.out.printf( &quot;%d &quot;, i );
System.out.printf( (i > 0) ? &quot;> &quot; : &quot;\n&quot; );
12 }
}
14
}
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 181 / 527
Java \u2013 Métodos
Solução retornaMenor
public class MenorElemento {
2
public static void main( String args[] ) {
4 int v[] = { 2, 4, 5, 1, 3 };
System.out.printf( &quot;Menor el.: %d&quot;, retornaMenor( v ) );
6 }
8 private static int retornaMenor( int v[] ) {
int menor = v[0];
10 int tam = v.length;
for ( int i = 1; i < tam; i++ ) {
12 if ( v[i] < menor ) {
menor = v[i];
14 }
}
16 return menor;
}
18
}
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 182 / 527
4. POO \u2013 Conteúdo
1 Introdução 3
2 UML 22
3 Java 60
4 POO 183
Conceitos Iniciais 184
Classe java.lang.Object 213
Herança 229
Modificadores 261
Interface 291
Herança Múltipla? 307
Classe Abstrata x Interface 314
Exceção 317
5 Padrões de Projeto 356
6 Tópicos Relevantes 386
7 Materiais Complementares 417
8 Extras 498Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 183 / 527
POO
Conceitos Iniciais
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 184 / 527
POO \u2013 Conceitos Iniciais
Classe
Como já foi abordado, \u201cuma classe encapsula
características comuns a grupos de objetos.\u201d (Mike
O\u2019Docherty, 2005)
Pode ser pensada como uma \u201creceita de bolo\u201d
Ela diz que tem tamanho, sabor e recheio. O que realmente
é pequeno, de chocolate e recheado de morango é um
objeto da classe (ou instância da classe)
Em OO, uma classe é a menor unidade modular, isto é, tudo
deve estar inserido em uma classe
Uma classe possui:
Atributos (propriedades)
Construtores (um tipo especial de método para criação de objetos)
Métodos (comportamentos)
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 185 / 527
POO \u2013 Conceitos Iniciais
Declaração de uma Classe
public class Conta {
...
}
Padrão BluePrints
Classes sempre devem iniciar com a 1a letra em caixa alta.
Por exemplo:
Conta, Bhaskara ...
Demais palavras em caixa baixa salvo início de novas
palavras. Por exemplo:
GuardaChuva, ContaCorrente ...
Sempre evitem (não usem) caracteres especiais ao
programar:
_, -, ç, ã, á, ê, é ...
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 186 / 527
POO \u2013 Conceitos Iniciais
Atributo
Sintaxe:
[visib] [mod] tipo nome { = valor-inicial }
visib = visibilidade (private, protected ou public)
mod = modificadores (static, final, ...)
Exemplos
public String nome;
private double salario = 1000.00;
protected int nota;
double cor;
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 187 / 527
POO \u2013 Conceitos Iniciais
Modificadores
final
Torna o atributo imutável
static
Torna o atributo estático, isto é, pertence à classe
Exemplos
/* O cpf nunca será alterado */
private final long cpf;
/*
Taxa de rendimento compartilhada entre todos
os objetos do tipo ContaPoupanca
*/
private static double taxaRendimento;
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 188 / 527
POO \u2013 Conceitos Iniciais
Declaração de atributos na classe Conta
public class Conta {
2 private static int autoIncremento = 1;
private final int numero;
4 private double saldo;
private Correntista correntista;
6 ...
}
Padrão BluePrints
Atributos sempre devem iniciar com a 1a letra em caixa
baixa. Por exemplo:
saldo, nome ...
Demais letras em caixa baixa salvo início de novas palavras.
Por exemplo:
nomeCompleto, registroGeral ...
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 189 / 527
POO \u2013 Conceitos Iniciais
Método
Sintaxe:
[visib] [mod] retorno nome ( < param {, param} > ) { corpo }
visib = visibilidade (private, protected ou public)
mod = modificadores (static, final, · · · )
Exemplos
private static void imprimir() { ... }
public double somar(double a, double b) { ... }
private void listar(int notas[]) { ... }
Padrão BluePrints
Mesma regra de atributos
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 190 / 527
POO \u2013 Conceitos Iniciais
Declaração de métodos na classe Conta
1 public class Conta {
...
3 public int getNumero() {
return this.numero;
5 }
7 public Correntista getCorrentista() {
return this.correntista;
9 }
11 public void setCorrentista( Correntista correntista ) {
this.correntista = correntista;
13 }
15 public double getSaldo() {
return this.saldo;
17 }
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 191 / 527
POO \u2013 Conceitos Iniciais
Declaração de métodos na classe Conta
1 public boolean retirar( double valor ) {
if ( valor <= this.saldo ) {
3 this.saldo -= valor;
return true;
5 }
return false;
7 }
9 public void depositar( double valor ) {
this.saldo += valor;
11 }
13 public boolean transferir( Conta contaDestino, double valor ) {
if ( this.retirar( valor ) ) {
15 contaDestino.depositar( valor );
return true;
17 }
return false;
19 }
}
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 192 / 527
POO \u2013 Conceitos Iniciais
Declaração de métodos na classe Conta
public class Conta {
2 ...
public int getNumero() {
4 return this.numero;
}
6
public Correntista getCorrentista() {
8 return this.correntista;
}
10
public void setCorrentista( Correntista correntista ) {
12 this.correntista = correntista;
}
14
public double getSaldo() {
16 return this.saldo;
}
18
public boolean retirar( double valor ) {
20 if ( valor <= this.saldo ) {
this.saldo -= valor;
22 return true;
}
24 return false;
}
26
public void depositar( double valor ) {
28 this.saldo += valor;
}
30
public boolean transferir( Conta contaDestino, double valor ) {
32 if ( this.retirar( valor ) ) {
contaDestino.depositar( valor );
34 return true;
}
36 return false;
}
38 }
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 193 / 527
POO \u2013 Conceitos Iniciais
Construtor
Tipo especial de método responsável pela criação de
objetos
Por exemplo, como eu crio uma conta? Como eu crio um
correntista?
Se você não cria um construtor, Java cria um vazio para
você. Esse construtor somente permite que você crie
objetos daquela classe utilizando o operador new
Contudo, se você cria um construtor, Java não mais cria um
vazio para você
Ricardo Terra (rterrabh@gmail.com) POO