JAVA - Apostila
532 pág.

JAVA - Apostila


DisciplinaProgramação Orientada A Objetos3.325 materiais50.895 seguidores
Pré-visualização28 páginas
(rterrabh@gmail.com) POO 11 de março de 2013 160 / 527
Java \u2013 Arranjos
Declarando, inicializando e iterando um arranjo de strings
String nomes[] = new String[5];
2
for ( int i = 0; i < nomes.length; i++ ) {
4 nomes[i] = Teclado.lerString( &quot;Digite nomes[&quot; + i + &quot;]&quot; );
}
6
for ( int i = 0; i < nomes.length; i++ ) {
8 System.out.printf( &quot;nomes[%d] = %s\n&quot;, i, nomes[i] );
}
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 161 / 527
Java \u2013 Arranjos
Arranjos - Acesso aos elementos
Arranjos permite recuperar ou alterar qualquer um de seus
elementos
Os arranjos em Java sempre iniciam-se na posição 0
Isto indica que ele termina em uma posição inferior ao
tamanho (n-1)
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 162 / 527
Java \u2013 Arranjos
Exemplo
char letras[] = new char[10];
2
letras[0] = \u2019A\u2019; /* Atribui a 1a posicao do arranjo */
4 System.out.printf( &quot;%c&quot;, letras[0] ); /* Imprime a 1a posicao */
6 letras[1] = \u2019B\u2019;
letras[2] = \u2019C\u2019;
8 /* ... */
letras[9] = \u2019H\u2019;
10 letras[10] = \u2019I\u2019; /* ERRO */
O erro acima ativa uma exceção do tipo
ArrayIndexOutOfBoundsException. Isso pode alterar o
funcionamento normal do programa ou até mesmo
\u201cderrubá-lo\u201d
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 163 / 527
Java \u2013 Arranjos
Arranjos Multidimensionais
Pode-se criar um arranjo de arranjos
O mais comum é o bidimensional que vemos como uma
matriz
A declaração é somente acrescentar o número de colunas
Por exemplo: int matriz[][] = new int[4][3]
declara-se uma matriz de 4 linhas e 3 colunas
int matriz[][] = {{1,0,0}, {0,1,2}, {2,3,4}, {0,6,7}};
Representação :
1 0 0
0 1 2
2 3 4
0 6 7
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 164 / 527
Java \u2013 Arranjos
Arranjo Bidimensional - Exemplo
Criando uma matriz 3x2, zerando e setando valores
1 int matriz[][] = new int[3][2]; /* Declara uma matriz 3x2 */
3 for ( int i = 0; i < matriz.length; i++ ) {
for ( int j = 0; j < matriz[i].length; j++ ) {
5 matriz[i][j] = 0;
}
7 }
9 matriz[0][0] = 1; /* Atribui o valor 1 ao canto superior esquerdo */
matriz[2][1] = 7; /* Atribui o valor 7 ao canto inferior direito */
matriz
1 0
0 0
0 7
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 165 / 527
Java \u2013 Arranjos
Arranjo Bidimensional \u2013 Curiosidade
Pode-se criar uma matriz com cada linha de um tamanho
1 int matriz[][]= new int[3][]; /* Cria uma matriz com 3 linhas */
matriz[0]= new int[4]; /* Atribui 4 colunas a linha 0 */
3 matriz[1]= new int[1]; /* Atribui 1 colunas a linha 1 */
matriz[2]= new int[2]; /* Atribui 2 colunas a linha 2 */
matriz
0 0 0 0
0
0 0
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 166 / 527
Java \u2013 Arranjos
Exemplo Completo
Leitura de cada elemento de uma matriz 2x3 e posterior
impressão
1 int matriz[][] = new int[2][3];
3 for ( int i = 0; i < matriz.length; i++ ) {
for ( int j = 0; j < matriz[i].length; j++ ) {
5 matriz[i][j] = Teclado.lerInteger(
&quot;Digite matriz[ &quot; + i + &quot;]&quot; + &quot;[&quot; + j + &quot;]&quot; );
7 }
}
9
for ( int i = 0; i < matriz.length; i++ ) {
11 for ( int j = 0; j < matriz[i].length; j++ ) {
System.out.printf( &quot;%d\t&quot;, matriz[i][j] );
13 }
System.out.println();
15 }
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 167 / 527
Java \u2013 Arranjos
Comandos de repetição \u2013 foreach
Para iterar um arranjo ou uma coleção, geralmente
fazemos um for bem conhecido:
String nomes[] = { &quot;Ricardo&quot;, &quot;Virgilio&quot;, &quot;Ralph&quot; };
for ( int i = 0; i < nomes.length; i++ ) {
String nomeAtual = nomes[i];
System.out.println( nomeAtual );
}
Como esse era um for bem comum, Java provê o foreach
que é um for com sintaxe simplificada:
String nomes[] = { &quot;Ricardo&quot;, &quot;Virgilio&quot;, &quot;Ralph&quot; };
for ( String nomeAtual : nomes ) {
System.out.println( nomeAtual );
}
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 168 / 527
Java
Métodos
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 169 / 527
Java \u2013 Métodos
Até agora, estamos trabalhando com a linguagem Java
como se fosse uma linguagem estruturada, isto é, sem a
orientação a objetos
Criamos uma classe com o método main e fazemos tudo
dentro desse método
No entanto, mesmo sem termos aprofundado nos conceitos
de POO, seria interessante para a familiarização com a
linguagem que o método main chamasse outros métodos a
fim de deixar o código fonte mais claro e organizado
Convém salientar que essa é só uma visão aplicada de
métodos quando se trabalha com Java como uma
linguagem estruturada
Quando abordarmos os conceitos de POO, vamos
aprofundar bem mais
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 170 / 527
Java \u2013 Métodos
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() { ... }
protected int dobro(int x) { ... }
public double somar(double a, double b) { ... }
private void listar(int notas[]) { ... }
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 171 / 527
Java \u2013 Métodos
Diretrizes (por enquanto)
Modificador static
Como o método main é um método estático, todos os
métodos que iremos criar, por enquanto, serão estáticos
Lembrem-se que um membro (atributo ou método) estático
só acessa membros estáticos
Visibilidade private
O método main é público, justamente porque a JVM deve
ter permissão para acessá-lo e iniciar a aplicação
Por enquanto, os métodos que vocês criarem somente serão
visíveis pela própria classe
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 172 / 527
Java \u2013 Métodos
Exemplo
1 public class Bhaskara {
3 public static void main( String[] args ) {
...
5 double d = Math.pow( b, 2 ) - 4 * a * c;
...
7 }
}
Pergunta-se
Porque o cálculo de delta não pode ser um método separado
para deixar o código mais legível?
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 173 / 527
Java \u2013 Métodos
Exemplo
public class Bhaskara {
2
public static void main( String[] args ) {
4 ...
double d = delta( a, b, c );
6 ...
}
8
private static double delta( double a, double b, double c ) {
10 return Math.pow( b, 2 ) - 4 * a * c;
}
12 }
Resumo
Agora, delta é um método privado e estático que pode ser
invocada por qualquer método da classe Bhaskara
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 174 / 527
Java \u2013 Métodos
Um programa Java é uma coleção de classes
Classes podem conter diversos métodos
A ordem de declaração não importa (ao contrário da
linguagem C)
Pelo menos uma classe deve possuir o método estático
main
É a partir dele que a aplicação se inicia
Um método pode:
receber parâmetros
declarar variáveis locais
conter instruções executáveis
retornar um valor
ativar exceção
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 175 / 527
Java \u2013 Métodos
Exemplo
public class Soma {
2
public static void main( String args[] ) {
4 int a = 2, b = 3, total;
total = soma( a, b );
6 System.out.printf( &quot;Soma: %d&quot;, total );
8 }
10 private static int soma( int x, int y ) {
return x + y;
12 }
14 }
Ricardo Terra (rterrabh@gmail.com) POO 11 de março de 2013 176 / 527
Java \u2013 Métodos
Retorno de métodos
Um método pode retornar valores de qualquer tipo, exceto
outros métodos
Um método que retorna nada, deve ter seu retorno
declarado como void
A expressão que segue o return é o valor retornado
não se deve colocar parênteses
return x+y; e não return (x+y);
O valor de retorno pode ser ignorado
Término de métodos
Ao encontrar a chave de fechamento
Ao ser retornado (return)
Ao ativar uma exceção
Ricardo Terra (rterrabh@gmail.com) POO