Você está na página 1de 38

JAVA

Programação Java

Prof. M. Sc. Edgar Gurgel

Primeiro Aplicativo JAVA


// Código fonte: AloMundo.java
/* Este é um exemplo de programa JAVA
JAVA, que imprime uma
mensagem. */

public class AloMundo


{
public static void main (String args[])
{
System.out.println ("Alô Mundo, vocês estão aprendendo JAVA!");
}
}

POO II 2

1
Executando o Aplicativo JAVA
Comentários
 Usando
Usa do duas barras
ba as adjacentes,
adjace tes, //, e
em qua
qualquer
que po
ponto
to de u
umaa
linha: O compilador Java ignora as barras e o restante da linha
na qual elas aparecem. Ex:
// Um pequeno comentário
 uma barra seguida de um asterisco, /* : O compilador Java
ignora tanto os caracteres /* e todos os caracteres que os
seguem até que seja encontrado um asterisco imediatamente
seguido de uma barra,
barra *//. Ex:
/* Um comentário
que se estende por
várias linhas */

POO II 3

Executando o Aplicativo JAVA


Entendendo o programa
 Todo programa em java começa com a palavra class seguido
pelo nome da classe (no nosso caso AloMundo)

public class AloMundo


{
public static void main (String args[])
{
System.out.println ("Alô Mundo, vocês estão aprendendo JAVA!");
}
}
OBS: o corpo de uma classe é delimitado pelos símbolos { e }, e
corresponde à descrição dos atributos e métodos da classe.

POO II 4

2
Executando o Aplicativo JAVA
Entendendo o programa
 A linha public static void main (String args[]) aparece em
todas as classes executáveis. Praticamente todas as
aplicações possuem esta linha. A única coisa que pode ser
alterada é na linha é a variável args que pode receber outro
nome de acordo com o desejo do programador.

public
bli static
i void
id main
i (String
(S i args[])
[])
modificadores tipo do nome do parâmetros
valor de método
retorno

POO II 5

Executando o Aplicativo JAVA


Entendendo o programa
 public: é um qualificador de método, que indica que ele é acessível
externamente a esta classe. Isto é útil quando uma classe necessita
utilizar alguma funcionalidade de outra classe, característica muito
comum na linguagem JAVA.
 static: É um outro qualificador ele indica que o método deve ser
compartilhado por todos os objetos que são criados a partir desta
classe.
classe
 void: É o valor de retorno do método. Quando não retorna nenhum
valor ele retorna void, uma espécie de valor vazio que tem que ser
especificado.

POO II 6

3
Executando o Aplicativo JAVA

Entendendo o programa
p g
 main: É o nome do método que indica ao compilador o
início do programa. É o método principal.
 (Strings args[]): É o argumento do método principal
(main). É um vetor de strings formados por todos os
argumentos passados ao programa na linha de comando
do sistema operacional quando o programa é invocado.

POO II 7

Executando o Aplicativo JAVA


public class Caracteres
{
public static void main (String args[])
{
String nome=“Joao";
String sobreNome=“Silva";

System.out.print(nome);
y p ( );
System.out.print(" ");
System.out.println(sobreNome);
}
}

POO II 8

4
Declarando Variáveis
 Um identificador Java é um nome que pode consistir de letras e
dígitos e dos caracteres _ e $, devendo-se iniciar sempre com uma
letra.
letra
 Uma variável é um espaço da memória do computador que contém um
valor. O nome de uma variável é um identificador que faz referência
àquela variável.
 O tipo de dado de uma variável determina o tamanho do espaço de
memória e a forma como os bits armazenados naquele espaço são
interpretados.
 E Java,
Em J o tipo
ti ded uma variável
iá l deve
d ser sempre declarado,
d l d de d forma
f
que o compilador java aloca o espaço de memória correto para cada
tipo de variável do programa.
 Quando se conta ao compilador o tipo e nome de uma variável, diz-se
que se está declarando a variável.

POO II 9

Declarando Variáveis
public class PrimeiroPrograma{
public static void main(String argv[]){
int var1;
int var2;
int var3;
...
}
}

POO II 10

5
Declarando Variáveis
public class PrimeiroPrograma{
public static void main(String argv[]){
int var1, var2, var3;
...
}
}

POO II 11

Declarando Variáveis
 O armazenamento de um valor no espaço de memória alocado para
uma variável é feito através de uma atribuição a uma variável.
 P
Para se fazer
f uma atribuição
t ib i ã a uma variável,
iá l usa-se o sinal
i l de
d igual
i l
(=).
 É possível inicializar uma variável no mesmo comando em que ela é
declarada:

public class PrimeiroPrograma{


public static void main(String argv[]){
int var1 = 10;
int var2 = 20;
int var3 = 30;
...
} }

POO II 12

6
Declarando Variáveis
 Também é possível combinar diversas declarações com
inicializações em um comando conciso:

public class PrimeiroPrograma{


public static void main(String argv[]){
int var1 = 10, var2 = 20, var3 = 30;
...
}
}

POO II 13

Declarando Variáveis
 As declarações de variáveis não precisam ocorrer antes de todos os
outros comandos (como é regra em algumas outras linguagens). Muitos
preferem declará-las p
p próximo ao local do pprograma
g aonde elas são
primeiramente usadas, como no seguinte exemplo:

public class PrimeiroPrograma{


public static void main(String argv[]){
int resultado, script = 6;
resultado = script;
;
int atuacao = 9;
resultado = resultado + atuacao;
int direcao = 8;
resultado = resultado + direcao;
System.out.print("A pontuação do filme é ");
System.out.println(resultado); } }
POO II 14

7
Tipos de Dados

Tipo
p Bytes
y Armazena
Tipo Bytes Armazena
byte 1 inteiro
short 2 inteiro float 4 número em
ponto flutuante
int 4 inteiro double 8 número em
ponto flutuante
long 8 inteiro

O tipo de data char é usado ordinariamente para o armazenamento de caracteres.


Entretanto, como os códigos de caracteres podem ser vistos como inteiros, char
também é tido como um dos tipos de dados para inteiros, assim como byte, short,
int e long. O tipo de dados char ocupa 2 bytes de memória.

POO II 15

Expressões Aritméticas
 Os operadores aritméticos (binários) básicos são +, -, *, e /
usados respectivamente para as operações de adição,
subtração, multiplicação e divisão:

6 + 3 // Adiciona os valores, resultando em 9


6 - 3 // Subtrai um valor do outro, resultando em 3
6 * 3 // Multiplica os valores, resultando em 18
6 / 3 // Divide um valor pelo outro, resultando em 2

POO II 16

8
Expressões Aritméticas
 Quando um numerador inteiro não é divisível por um
denominador inteiro, o operador de divisão arredonda para
baixo o resultado produzindo um outro inteiro.

5 / 3 // Divide um valor pelo outro, resultando em 1


-5 / 3 // Divide um valor pelo outro, resultando em -1

 O operador módulo, %, fornece o resto da divisão inteira de


d i valores
dois l i t i
inteiros.

5 % 3 // Resulta no resto da divisão de 5 por 3 que é 2


-5 % 3// Resulta no resto da divisão de 5 por 3 que é -2

POO II 17

Expressões Aritméticas
 Ao se dividir dois valores em ponto flutuante, o resultado
também é em ponto flutuante.
flutuante

5.0 / 3.0// Divide um valor pelo outro, resultando em 1.66667

 Expressões aritméticas podem conter um operador ou


mais.

6 + 3 + 2 // Resulta em 11
6 - 3 - 2 // Resulta em 1
6 * 3 * 2 // Resulta em 36
6 / 3 / 2 // Resulta em 1

POO II 18

9
Expressões Aritméticas
 As regras de precedência seguidas pelos operadores
aritméticos são aquelas da matemática:

6 + 3 * 2 // Resulta em 12, e não em 18

 Quando uma expressão contém operadores de igual


precedência, tal como multiplicação e divisão, o compilador
Java tratará a expressão,
expressão como nos exemplos:

6 / 3 * 2 // Equivalente a (6 / 3) * 2 = 4
6 * 3 / 2 // Equivalente a (6 * 3) / 2 = 9

POO II 19

Expressões Aritméticas
 É sempre possível fazer uso de parênteses em
torno de sub-expressões para forçar com que uma
expressão seja interpretada como se queira.

6 + 3 * 2 // Resulta em 12, e não em 18


(6 + 3) * 2 // Resulta em 18, e não em 12

POO II 20

10
Expressões Aritméticas
 Alguns operadores, tais como o operador de negação, -, e
o operador mais unário,
unário +,
+ possuem apenas um operando,
operando
que deve ser posicionado imediatamente à direita do
operador. Tais operadores são operadores unários.

 A precedência do operador de negação, -, é maior do que a


dos operadores de adição, +, subtração, -, multiplicação, *,
e divisão,
divisão /.
/

- 6 * 3 / 2 // Equivalente a ((-6) * 3) / 2 = -9

POO II 21

Conversão de Tipos
Supondo a Variável x Converter em A variável y recebe o valor convertido

int x = 10 float Float y = (float) x


int x = 10 double Double y = ((double)) x
float x = 10.5 int Int y = (int) x
String x = “10” int Int y = Integer.parseInt(x)
String x = “20.54” float Float y = Float.parseFloat(x)
String x = “20.54” double Double y = Double.parseDouble(x)
String x = “java” Vetor de bytes Byte b[] = x.getBytes()
int x = 10 String String y = String
String.valueOf(x)
valueOf(x)
float x = 10.35 String String y = String.valueOf(x)
double x = 254.54 String String y = String.valueOf(x)
Byte x[] – (x é um vetor de String String y = String.valueOf(x)
bytes)

POO II 22

11
Exemplos
/* Essa classe demonstra a utilização de variáveis em uma classe em Java. São
declaradas variáveis do tipo int e double. O exemplo também demonstra
como imprimir o conteúdo das variáveis na tela */
public
bli class
l Ti
Tipos
{
public static void main ( String args [] )
{
int x=10, y =20; //declaração de variáveis do tipo inteiro
double dolar = 2.62;
/* As linhas seguintes enviam o conteúdo das
variáveis ppara a tela */
System.out.println(x);
System.out.println(y);
System.out.println(dolar);
}
}

POO II 23

Exemplos
public class Operacoes
{
public static void main ((String
p g args[])
g [])
{
//declaração e inicialização de variáveis
int x = 10; int y = 3;
//várias operações com as variáveis
System.out.println("X = "+ x);
System.out.println("Y = "+ y);
System.out.println("X/Y = "+(x/y));
S t
System.out.println("Resto
t i tl ("R t d de X por Y = "+ ((x%y));//resulta
% )) // lt 1
System.out.println("Inteiro de X por Y = "+ (int)(x/y)); //resulta 3
System.out.println("X + 1 = "+ (++x)); //resulta 11
}
}

POO II 24

12
Definindo Métodos
Simples

Objetivo:: Aprender como definir métodos simples além do método main


Objetivo main.. No processo
processo,,
aprende--se a trabalhar com argumentos
aprende argumentos,, parâmetros e valores a serem retornados.
retornados.

POO II 25

Exemplos
• A fim de computar a pontuação de vários filmes, é necessário definir
um método que faça isto, chamado pontuarFilme. Uma vez definido o
método,
ét d é possível
í l invocá-lo
i á l como no seguinte
i t exemplo:
l

public class Filme{


public static void main(String argv[]){
int script = 6, atuacao = 9, direcao = 8;
System.out.print("A pontuação do filme é ");
System.out.println(pontuarFilme(script,atuacao,direcao));
}

public static int pontuarFilme(int s, int a, int d){


return s + a + d;
}
} Resultado:
A pontuação do filme é 23

POO II 26

13
Exemplos

 No exemplo, o método pontuarFilme tem três argumentos: 6, 9, e 8.

 Em Java, os argumentos de métodos são separados por vírgulas.

 Os argumentos do exemplo são todos expressões constantes, mas


argumentos também podem ser expressões variáveis ou expressões
contendo operadores.
operadores

POO II 27

Exemplos

pontuarFilme

POO II 28

14
Exemplos
 Note também que se deve especificar tipos de dados para
os parâmetros e valores retornados quando se define um
método em Java:
 Se especifica o tipo de dado de cada parâmetro em um método no
local onde se introduz o parâmetro;
 Se especifica o tipo de dado do valor retornado por um método no
l l onde
local d se dá nome ao método.
é d

POO II 29

Exemplos
 Finalmente, usa-se palavras chave para indicar que tipo
d método
de d se está definindo:
d fi i d
 A palavra chave static indica que o método pontuarFilme é
um método de classe. Se omitir a palavra-chave static, será
definido um método de instância.
 A palavra chave public indica que qualquer outro método
definido em qqualquer
q classe ppode chamar o método
pontuarFilme. Se ao invés fossem usadas as palavras chave
protected ou private, indicaria que o acesso ao método
pontuarFilme é restrito.

POO II 30

15
Exemplos
 Por convenção, muitos programadores Java iniciam o nome de
cada método por uma letra minúscula.

 O tipo de dado de cada um dos parâmetros deve ser especificado


individualmente, porque tipos de dados em declarações de
parâmetros, diferentemente de tipos de dados em declarações de
variáveis, não se propagam através das vírgulas. Assim, o exemplo
seguinte está incorreto:
Errado

public static int pontuarFilme


movieRating(int s, a, d){
... }

POO II 31

Exemplos
 O compilador Java não requer que os programas em Java sejam
ordenados tal qque uma definição
ç de método apareça
p ç sempre p antes
que uma chamada aquele método seja feita. Assim, pontuarFilme
não precisa ser definido antes do método main, aonde é feita uma
chamada a pontuarFilme. Neste sentido, Java é mais fácil de se
trabalhar do que C e C++.

 Não se pode nunca deixar de especificar o tipo de dado do valor


de retorno de um método. Neste sentido, Java é diferente das
linguagens C e C++, que permitem que se omita o tipo de retorno
de uma função se este tipo for int.

POO II 32

16
Exemplos
 Alguns métodos não retornam valores. Eles podem ser executados
apenas para exibir um valor, por exemplo. Neste caso, usa-se a
palavra
l chave
h void como se void fosse
f um tipo
i ded dado
d d para
valores de retorno. Quando Java encontra a palavra chave void
sendo usada como um tipo de dado de valor de retorno, Java sabe
que nada deverá ser retornado.

 Por exemplo, na seguinte variação do programa anterior, a tarefa de


mostrar a pontuação do filme é executada no método
mostrarPontuacaoFilme de forma que não há nenhum valor a ser
mostrarPontuacaoFilme,
retornado. De acordo com isto, aparece a palavra-chave void ao invés
de um nome de tipo de dados na definição de
mostrarPontuacaoFilme e mostrarPontuacaoFilme não contém
nenhum comando return.

POO II 33

Exemplos

public class Filme{


public static void main( String argv[]){
int script = 6, atuacao = 9, direcao = 8;
mostrarPontuacaoFilme(script, atuacao, direcao);
}
public static void mostrarPontuacaoFilme(int s, int a, int d){
System.out.print("A pontuação do filme é ");
System.out.println(s + a + d);
}
}

POO II 34

17
Exemplos
 Não é necessário definir um método chamado a
partir do método main na mesma classe em que o
método main é definido. Por exemplo, pode-se
definir pontuarFilme dentro da classe Filme, no
arquivo Filme.java:

// Classe Filme definida em Filme.java


public
bli class
l Fil {
Filme{
public static int pontuarFilme(int s, int a, int d){
return s + a + d; }
}

POO II 35

Exemplos
 Então, pode-se definir o método main() dentro da
classe
l P i i l no arquivo
Principal i Principal.java:
Pi i lj
// Classe Principal definida em Principal.java
public class Principal {
public static void main (String argv[]){
int script = 6, atuacao = 9, direcao = 8;
System.out.print("A pontuação do filme é ");

System.out.println(Filme.pontuarFilme(script,atuacao,direcao));
}
}

POO II 36

18
Exemplos
 Conforme mostrado no exemplo anterior, se define
pontuarFilme em uma classe que é diferente daquela na qual
pontuarfilme é chamada, deve-se prefaciar o nome do
método, pontuarFilme, pelo nome da classe na qual o mesmo
é definido (pois trata-se de um método de classe: static), e
entre os dois nomes deve-se colocar um ponto.

 A razão da aparição do nome da classe e do operador ponto


é que Java
J permite
it que se defina
d fi métodos
ét d com o nome de d
pontuarFilme em mais de uma classe. Assim, é necessário
sempre se especificar qual é o particular pontuarFilme que se
tem em mente.

POO II 37

Exemplos
 Poderia-se, por exemplo, definir não somente a classe
Filme, mas também a classe JamesBondFilme, na qual o
método pontuarFilme reflete, digamos, a crença de que 10
deveria ser o valor usado ao invés do valor do parâmetro
script, s, quando se desse a pontuação para filmes do James
Bond:

public class JamesBondFilme{


public static int pontuarFilme(int s, int a,
int d){
return 10 + a + d;
}

POO II 38

19
Exemplos
 Uma vez definidas e compiladas ambas as classes Filme e
JamesBondFilme,, p
pode-se usar ambas:

public class Principal{


public static void main(String argv[]){
int script = 6, atuacao = 9, direcao = 8;

System.out.print("A pontuação de um filme é ");


System.out.println(Filme.pontuarFilme(script,atuacao,
direcao));

System.out.print("A pontuação do filme do James Bond é ");


System.out.println(JamesBondFilme.pontuarFilme(script,
atuacao, direcao));
}
}
POO II 39

Exemplos
 Sempre que há mais de uma definição para um método, o nome
do método é dito ser sobrecarregado.
g

 Java também permite que se defina múltiplos métodos com o


mesmo nome em uma mesma classe, se cada versão do método
tiver um arranjo diferente de tipos de dados de parâmetros.

 Poderia-se, por exemplo, definir um método


mostrarPontuacaoFilme que trabalhe com parâmetros inteiros e
um outro mostrarPontuacaoFilme que trabalhe com parâmetros
em ponto flutuante. Então, ambos os métodos podem fazer parte
de um mesmo programa:

POO II 40

20
Exemplos
public class Principal{
public static void main (String argv[]){
int intScript = 6, intActing = 9, intDirecting = 8;
d bl doubleScript
double d bl S i t = 6.0,
6 0 doubleActing
d bl A ti = 9.0,
9 0 doubleDirecting
d bl Di ti = 8.0;
8 0
mostrarPontuacaoFilme(intScript, intActing, intDirecting);
mostrarPontuacaoFilme (doubleScript, doubleActing, doubleDirecting);
}
// Definindo primeiro mostrarPontuacaoFilme com inteiros:
public static void mostrarPontuacaoFilme(int s, int a, int d){
System.out.print("A pontuação inteira do filme é ");
System.out.println(s + a + d);
return;
}
// Em seguida, definindo mostrarPontuacaoFilme com números em ponto-flutuante
public static void mostrarPontuacaoFilme (double s, double a, double d){
System.out.print("A pontuação em ponto flutuante do filme é ");
System.out.println(s + a + d);
return;
}
}

POO II 41

Exemplos
 Por permitir a sobrecarga de métodos, Java é dita ser uma
linguagem polimórfica.

 O operador +, que normalmente significa adicionar, tem um


significado inteiramente diferente quando um de seus operandos
é uma string. Em tais situações, o operador + converte o outro
operando em uma string, se aquele operando não for uma string,
e concatena as duas strings, produzindo uma terceira string.

 Como o operador + possui dois significados diferentes, + é dito


ser um operador sobrecarregado.

POO II 42

21
Exemplos
 Freqüentemente encontra-se o operador + como
operador de concatenação sendo usado
conjuntamente com métodos de impressão (print,
println). Tal uso do operador + permite uma
compactação maior dos comandos.

 Por exemplo,
exemplo ao invés de escrever:
System.out.print("A pontuação do filme é ");
System.out.println(s + a + d);

POO II 43

Exemplos
 poderia-se igualmente combinar as duas linhas de
comando em apenas uma, por meio do uso do operador de
concatenação:

System.out.print("A pontuação do filme é " +


(s + a + d));
 Note que o parênteses em torno das variáveis somadas é
essencial De outro modo,
essencial. modo Java assumiria que se quer
concatenar a primeira string com o valor de s, transformado
em uma string, depois a e depois d. Desta forma, Java faria
uma concatenação, mas não faria nenhuma adição.

POO II 44

22
Tratamento de Exceções
 Para capturar uma exceção, é necessário montar a seguinte
estrutura de código;
 O código que pode lançar a exceção deve ser inserido num
bloco precedido da palavra chave try;
 O processador então tentará executar o bloco, até que
eventualmente uma exceção seja lançada, seja por um
comando contido dentro do bloco, seja por um método
chamado dentro do bloco;
 O bloco try deve ser seguido de um bloco que será executado
caso houver de fato lançamento de uma exceção do tipo em
questão;

POO II 45

Tratamento de Exceções
 Este bloco deve ser anunciado pela palavra chave catch;
 Vários tipos de exceções podem ser lançadas no bloco
try, então deve-se fornecer um bloco catch para cada tipo
de exceção;
 Se uma exceção do tipo em questão for lançada no bloco try, o
bloco try é encerrado e a execução salta para o bloco catch
apropriado. Os blocos catch são chamados manipuladores
de exceções;
 Ainda é possível acrescentar, após o(s) bloco(s) catch, um
bloco precedido da palavra chave finally, que será executado
após a execução completa do bloco try ou após a execução de
um bloco catch, conforme o caso.

POO II 46

23
Tratamento de Exceções
 Sintaxe do bloco try-catch-finally
try {
código
....
} catch (<Exception> <var>) {
Código de tratamento da Exception
....
} finally {
código
....
}

POO II 47

Exemplo
import java.io.*; //* indica a utilização de todas as classes do pacote /biblioteca para io fluxo de dados.
import java.util.Scanner; //biblioteca pra entrada de dados.
public class EntraDados
{
public static void main (String args[]) {
float nota1=0, nota2=0, trabalho=0, media=0;
Scanner sc = new Scanner(System.in); /*Declara um objeto chamado sc do tipo
Scanner que possibilita a entrada via teclado*/
try { //Inicio do Try
System.out.println("Entre com a nota 1");
nota1=sc.nextFloat(); //A variável nota1 recebe o conteúdo do teclado
System.out.println("Entre com a nota 2");
nota2=sc.nextFloat();
System.out.println("Entre com a nota do Trabalho");
trabalho=sc.nextFloat();
media=(nota1+nota2+trabalho)/3;
di ( t 1+ t 2+t b lh )/3
System.out.println("Media : "+ media);
} //Fim do Try
catch (Exception e)
{
System.out.println("Houve erro na entrada de dados");
}
}
POO II 48

24
Exercícios

Exercícios da Lista 1

POO II 49

Métodos de Classe

POO II 50

25
Definição
 Quando se tem uma tarefa que deva ser executada
repetidas vezes em um programa, convém que as
linhas de comando responsáveis pela execução
deste cômputo sejam inseridas em um método
(subrotina, função) à parte;
 Desta forma, toda vez que se deseja que a tarefa
em questão seja j executada,
d faz-se
f uma chamada
h d
ao método correspondente.

POO II 51

Vantagens

 As vantagens advindas da organização de um


programa feita desta forma são várias, tais como a
facilidade de manutenção de código e maior
clareza de leitura do mesmo.

POO II 52

26
Exemplos
Exemplo1:
public
bli class
l C
CalculaRaiz1
l l i 1
{
public static void main(String argv[]){
double a = 3.1, b = 6.7, c = -4.2;
double delta = b*b - 4*a*c;
double r = (-b+Math.sqrt(delta))/(2*a);

System.out.println("Raiz de "+a+"x^2+"+b+"x+"+c+"=0 :" +r);

a = 1; b = 3; c = 2;
delta = b*b - 4*a*c;
r = (-b+Math.sqrt(delta))/(2*a);
System.out.println("Raiz + de "+a+"x^2+"+b+"x+"+c+"=0 :" +r);

}
}

POO II 53

Exemplos
 No programa acima uma das raízes da equação quadrática
ax2+bx+c=0 é calculada para dois conjuntos de valores dos
coeficientes a,b e c;

 A repetição de código em um programa pode causar


problemas posteriores, já que, se por um acaso, descobre-se
que existe algum erro nestas linhas de código que se
repetem, a alteração necessária deve ser feita em vários
pontos do programa.
programa Há então uma chance grande de que
haja algum esquecimento e o programa fique, então,
incorreto.
 Este problema pode ser resolvido conforme mostrado no Exemplo2.

POO II 54

27
Exemplos
Exemplo2:
public class CalculaRaiz2{

public static void main(String argv[]){


double a = 3.1, b = 6.7, c = -4.2;
double r = raiz(a, b, c);
System.out.println("Raiz de "+a+"x^2+"+b+"x+"+c+"=0 :" +r);

a = 1; b = 3; c = 2;
r = raiz(a, b, c);
System.out.println("Raiz de "+a+"x^2+"+b+"x+"+c+"=0 :" +r);
}

public static double raiz(double val1, double val2, double val3){


double delta = val2*val2 - 4*val1*val3;
return (-val2+Math.sqrt(delta))/(2*val1);
}
}

POO II 55

Exemplos
 Nesta segunda versão do programa tem-se dois métodos.
Além do método main, cuja presença é obrigatória em
q alq er aplicativo
qualquer aplicati o stand-alone,
stand alone tem-se
tem se o método raiz
rai que
q e
contém as linhas de código necessárias para o cômputo da
raiz da equação.
 Todo método tem um cabeçalho (ou assinatura), contendo
as seguintes informações essenciais:
 O nome do método: raiz;
 O tipo
ti d valor
do l retornado
t d pelol método,
ét d que deve
d ser colocado
l d
imediatamente antes do nome do mesmo: double;
 A lista de parâmetros do método, que deve ser colocada entre
parênteses, imediatamente após o nome do mesmo: (double val1,
double val2, double val3);

POO II 56

28
Exemplos
 A lista de parâmetros deve corresponder às informações
que devem
d ser passadas
d para o método,
é d a fimfi de
d que ele
l
execute a sua tarefa;
 Deve-se atentar para a sintaxe: os parâmetros devem ser
especificados colocando-se o tipo seguido do nome dos
mesmos, separados por vírgulas, quando houver mais de
um parâmetro. Os nomes adotados para os parâmetros
podem
d ser quaisquer,
i seguindo
i d as regras de
d formação
f ã de
d
identificadores da linguagem;

POO II 57

Exemplos
 A palavra public, que aparece na declaração do cabeçalho
do método raiz, indica que ele pode ser acessado a partir de
qualquer
l ponto
t dod programa, inclusive
i l i a partir
ti de
d qualquer
l
outra classe que possa vir a fazer parte deste mesmo
programa posteriormente;

 A palavra static indica tratar-se de um método de classe;

 Após o cabeçalho do método,


método segue-se
seg e se o corpo do mesmo,
mesmo
que consiste nos comandos responsáveis pela execução da
tarefa à qual ele está associado. Estes comandos devem
estar delimitados por um par de abre e fecha chaves;

POO II 58

29
Exemplos
Observação:
1. Na linguagem
g g Java,, um método não p pode ser
declarado dentro de outro. Note que o cabeçalho
do método raiz seguido do corpo do mesmo só
pode ser declarado após o fecha-chaves que
delimita o método main;
2. A ordem de implementação dos métodos não é
importante
importante. Assim
Assim, também poder-se-ia ter
disposto os métodos do programa CalculaRaiz2 na
ordem inversa, ou seja: primeiro o método raiz e
depois o método main;

POO II 59

Exemplos
 A chamada a um método é feita simplesmente mencionando-
se o nome do método, seguido de uma lista de argumentos
separados
d por vírgulas
í l e delimitados
d li it d por um par de
d
parênteses. O número e tipo dos argumentos deve ser
compatível com o número e tipo dos parâmetros declarados
no cabeçalho do método, na seqüência em que são
declarados;
 Na versão CalculaRaiz2 ocorrem duas chamadas ao método
raiz, nas seguintes
g linhas:
double r = raiz(a, b, c);
e
r = raiz(a, b, c);

POO II 60

30
Exemplos

 Poder-se-ia também ter feito a chamada ao método


raiz dentro de um outro método, como, por exemplo,
o método println, conforme abaixo:

System.out.println("Raiz:" + raiz(a, b, c));

POO II 61

Exemplos
Exemplo3:
public class CalculaRaiz3{

public static void main(String argv[]){


double a = 3.1, b = 6.7, c = -4.2;
raiz(a, b, c);

a = 1; b = 3; c = 2;
raiz(a, b, c);
}

public static void raiz(double val1, double val2, double val3){


double delta = val2*val2 - 4*val1*val3;
double r = (-val2+Math.sqrt(delta))/(2*val1);
System.out.println("Raiz + de " +
val1+"x^2+"+val2+"x+"+val3+"=0 :" +r);
}
}
POO II 62

31
Exemplos
 No exemplo 3 acima, deve-se notar as modificações que
foram introduzidas. Na versão anterior do programa o método
raiz retornava o valor calculado da raiz,
raiz a fim de que o
mesmo pudesse ser impresso a partir do método main. Nesta
última versão, a tarefa de impressão também foi inserida
dentro do método raiz. Desta forma, não é mais necessário
que ele retorne o valor calculado;

 O fato de o método raiz não mais retornar um valor é indicado


pela palavra void, usada no lugar do tipo double. Além disso,
deve-se atentar para o fato de que não há mais nenhum
comando return dentro do método.

POO II 63

Exemplos
 Pode ocorrer também de um método não precisar de
nenhuma informação para a execução de sua tarefa.
tarefa
Neste caso, a sua lista de parâmetros é vazia.
Contudo, a presença do abre e fecha parênteses é
obrigatória na declaração do cabeçalho do método,
bem como na chamada ao mesmo. É o caso da
versão seguinte do programa, em que foi introduzido
o método imprimeExplicacao();
 A única função deste método é imprimir uma frase e
ele não precisa receber nenhuma informação a fim
de executar esta tarefa.

POO II 64

32
Exemplos
Exemplo4:
public class CalculaRaiz4{

public
bli static
t ti void
id main(String
i (St i argv[]){
[]){
double a = 3.1, b = 6.7, c = -4.2;
imprimeExplicacao();
raiz(a, b, c);

a = 1; b = 3; c = 2;
imprimeExplicacao();
raiz(a, b, c);
}

public static void raiz(double val1, double val2, double val3){


double delta = val2*val2 - 4*val1*val3;
double r = (-val2+Math.sqrt(delta))/(2*val1);
System.out.println("Raiz + de " + val1+"x^2+"+val2+"x+"+val3+"=0 :" +r);
}

public static void imprimeExplicacao(){


System.out.println("Calculando raiz...");
}
}
POO II 65

Exemplos
 Em Java, é ppossível q
que se defina, dentro de
uma mesma classe, vários métodos com o
mesmo nome e mesmo tipo de retorno, que
difiram somente quanto à lista de parâmetros;
 Quando se faz uso desta possibilidade, diz-se
que se está sobrecarregando (overloading) o
método;

POO II 66

33
Exemplos
Exemplo5:
public class CalculaRaiz5{

public static void main(String argv[]){


double a = 3.1, b = 6.7, c = -4.2;
imprimeExplicacao();
raiz(a, b, c);

int d = 1, e = 3, f = 2;
imprimeExplicacao();
raiz(d, e, f);
}

public static void raiz(double val1, double val2, double val3){


double delta = val2*val2 - 4*val1*val3;
double r = (-val2+Math.sqrt(delta))/(2*val1);
System.out.println("Raiz + de " + val1+"x^2+"+val2+"x+"+val3+"=0
:" +r);
}
POO II 67

Exemplos
public static void raiz(int v1, int v2, int v3){
double delta = v2
v2*v2
v2 - 4
4*v1*v3;
v1 v3;
double r = (-v2+Math.sqrt(delta))/(2*v1);
System.out.println("Raiz + de " +
v1+"x^2+"+v2+"x+"+v3+"=0 :" +r);
}

public static void imprimeExplicacao(){


System.out.println("Calculando raiz...");
}
}

POO II 68

34
Exemplos
 Nos exemplos anteriores, tem-se duas versões do método
raiz O nome é o mesmo,
raiz. mesmo bem como o tipo de retorno (void),
(void)
contudo diferem pela lista de parâmetros, já que a lista do
primeiro consiste de três parâmetros do tipo double e a do
segundo de três parâmetros do tipo int. Diz-se, assim que o
método raiz está sobrecarregado;
 As listas de parâmetros podem diferir entre si quanto ao
número e/ou tipo de parâmetros.
parâmetros O sistema de tempo de
execução saberá quando executar uma ou outra versão do
método em função da lista de argumentos usados na
chamada;

POO II 69

Exemplos
 Um programa em Java pode consistir de várias
classes,
l cada
d quall com um número
ú qualquer
l d
de
métodos. O nome do programa é dado pelo nome
da classe que contém o método main. Desta forma,
pode-se escrever uma outra versão do programa em
questão, aonde o método main, juntamente com o
método imprimeExplicacao estejam inseridos na
classe CalculaRaiz6 e o método raiz em uma
segunda classe, chamada, por exemplo, de
RaizPlus;

POO II 70

35
Exemplos
Exemplo6:
public class CalculaRaiz6{ A classe CalculaRaiz6 deve ser salva em
um arquivo chamado CalculaRaiz6.java
public static void main(String
p ( g argv[]){
g []){ e a classe RaizPlus em um arquivo
double a = 3.1, b = 6.7, c = -4.2; RaizPlus.java. Para compilar o
imprimeExplicacao(); programa, basta compilar a classe que
RaizPlus.raiz(a, b, c); contém o método main: javac
CalculaRaiz5.java. Para executá-lo: java
a = 1; b = 3; c = 2; CalculaRaiz5. É claro que, se
imprimeExplicacao(); posteriormente, for feita uma
RaizPlus.raiz(a, b, c); } modificação apenas no código contido na
classe RaizPlus, ela pode ser compilada,
public static void imprimeExplicacao(){ em seguida, independentemente.
System.out.println("Calculando raiz..."); }
}

public class RaizPlus{


{
public static void raiz(double val1, double val2, double val3){
double delta = val2*val2 - 4*val1*val3;
double r = (-val2+Math.sqrt(delta))/(2*val1);
System.out.println("Raiz + de " +
val1+"x^2+"+val2+"x+"+val3+"=0 :" +r); }
}
POO II 71

Exemplos
 Deve-se notar a alteração necessária na forma com
que o método raiz é invocado a partir do método
main;
 Por ele ter sido transferido para uma outra classe,
faz-se necessário que na chamada, se informe em
que classe ele está, visto tratar-se de um método
de classe (static).
( ) Faz-se isso, prefixando
f o nome
do método com o nome da classe seguido do
operador ponto (.): RaizPlus.raiz(a, b, c);

POO II 72

36
Funções Matemáticas
•Estas funções em Java são provenientes de métodos da classe Math do pacote default java.lang
definidos como static.
•Sintaxe : Math.<nome do método>(<lista de argumentos>); - Possui duas constantes PI e E.
•Método max(<valor1>,<valor2>): Calcula o maior entre <valor1> e <valor2> retornando o maior tipo
encontrado.
Ex Math.max(10,3.5); -> 10.0
•Método min(<valor1>,<valor2>): Calcula o menor entre <valor1> e <valor2> retornando o menor tipo
encontrado.
Ex Math.min(10,3.5); -> 3.5
•Método sqrt(<valor1 double>): Calcula a raiz quadrada de <valor1> retornando um double.
Ex Math.sqrt(900); -> 30.0
•Método p
pow(<base>,<pot>):
( , p ) Calcula a potência
p de <base> p
por <pot>
p retornando um double.
Ex Math.pow(25,0.5); -> 5.0
•Método round(<valor double>): Calcula o arredondamento do valor retornando um long.
Ex. Math.round(30.5); -> 31
•Método random(): Retorna um valor double aleatório entre [0.0 e 1.0[
Ex. Para sortear um nº entre 0 e 99 -> (int) (Math.random() * 100)

POO II 73

Funções String
Em Java, String é uma classe que possui métodos para manipulação e que pode ser utilizada como uma
variável.
•Sintaxe: (Declaração) String s = “Linguagem Java”; (Utilização) s.<método>(argumento/s)
“Os literais String deverão estar entre aspas”.
• Método length(): Retorna um inteiro equivalente ao tamanho da string
string. Ex
Ex. int tamanho = s.length();
s length();
(tamanho = 14)
• Método charAt(<índice>): Retorna um char correspondendo a posição relativa [0...(n-1)] do caracter na string. Ex. char
c = s.charAt(5); (c = ‘a’)
• Métodos toUpperCase() e toLowerCase(): Estes métodos convertem os caracteres de uma string para maiúsculo e
minúsculo respectivamente retornando um string. Ex. String x = s.toUpperCase() ( x = “LINGUAGEM JAVA” ) –
String x = s.toLowerCase() ( x = “linguagem java” )
• Método substring(<índice1>,[<índice2>]): Retorna um String com os caracteres a partir de <índice1> até ]<índice2>[. Se
<índice2> não for especificado, será até o final da string. Ex. String x = s.substring(0,9); (x = “Linguagem”)
• Método
Mé d trim():
i () R
Remove todos
d os espaços antes e d
depois
i dda string
i retornando
d uma S
String.
i S
String
i x=“ E
Espaços ““; x =
x.trim(); ( x = “Espaços” )
• Método replace(<char1>,<char2>): Substitui todas as ocorrências de <char1> por <char2> na string retornando um
String. Se nenhuma ocorrência de <char1> for encontrada, a string original é retornada. Ex. String x = s.replace(‘a’,’ ‘);
(x = “Lingu gem J v “)
• Método valueOf(<nomevar>): Converte vários tipos de dados em String.
Ex. String x = String.valueOf(45.74); (x = “45.74”)

POO II 74

37
Formatação de Dados
Formatando a saída com a classe DecimalFormat(
DecimalFormat(string_formatacao
string_formatacao))

Importe o pacote: java.text.DecimalFormat;

Dentro do método main():

Ex: Decimalformat df = new Decimalformat(#.###,##);


System.out.println("Numero formatado:"+df format(x));  3.333,33
System out println("Numero formatado:"+df.format(x)); 3 333 33

POO II 75

Exercícios

Exercícios da Lista 2

POO II 76

38

Você também pode gostar