Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e...
Transcript of Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e...
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Expressões, controle de fluxo, wrappers e strings Profa. Isabel Harb Manssour(Material adaptado das aulas dos Profs.: Luciana Nedel, Júlio Machado e Bernardo Copstein)
Revisão de ConceitosTipos básicos de dadosEscopo de variáveisOperadoresComandos da linguagemWrappersStringsExemplos de programa JavaExercícios
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
ReferênciaDeclaração de uma variável cujo tipo é um objeto Variável capaz de apontar para instâncias daquele tipo de
objetoA alocação do objeto
propriamente dita só ocorre após a execução do operador new
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
Limpando os objetos Eliminar um objeto significa garantir que nenhuma referência
aponta mais para o mesmo Exemplo: atribuir null para a referência
O objeto aparentemente fica “perdido” na memória, porém, Java dispõem de um mecanismo de coleta de lixo (garbage colector) que garante a remoção destes objetos
O sistema de coleta de lixo é ativado automaticamente toda a vez que a quantidade de memória livre fica abaixo de um determinado limite, mas é possível acioná-lo manualmente através da chamada: System.gc()
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
Atributo de Objeto X Atributo de Classe (static)
Método de Objeto X Método de Classe (static)
Métodos construtoresAcionados automaticamente quando da criação de uma
instânciaEm Java o método construtor é identificado pelo fato de ter o
mesmo nome que a classe e não ter parâmetro de retornoToda classe Java possui um método construtor, que se não for
providenciado explicitamente, o compilador providencia um construtor implícito (Obs: os construtores implícitos são vazio, ou seja, não fazem nada)
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
Sobrecarga de métodos Métodos com nomes idênticos mas com listas de
parâmetros diferentes (no tipo ou na quantidade de parâmetros)
ATENÇÃO: sobrecarga de métodos só tem sentido na medida que todas as versões semanticamente fizerem a mesma coisa. É um péssimo estilo de programação que dificulta muito a leitura do programa contrariar esse princípio.
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Revisão de Conceitos
Constantes final double PI = 3.1415;
Modificadores de acesso
private: visível apenas na classe atual
public: visível para qualquer classe externa
protected: em breve...
Atributos
Métodos
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Tipos básicos de dados
Nome do tipo Tamanho Variação
long 8 bytes 9.223.372.036.854.775.808int 4 bytes 2.147.483.648short 2 bytes 32768byte 1 byte - 128 até +127double 8 bytes 1,79769313486231570E+308float 4 bytes 3,40292347E+38char 2 bytes ‘\u0000’ a ‘\uFFFF’ (conj. caracteres Unicode ISO)
boolean 1 byte true ou false
Obs.: em Java os tipos de dados primitivos são portáveis através de todas plataformas que suportam Java (diferente de C/C++)
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Tipos básicos de dados
Quando variáveis de instância dos tipos de dados primitivos são declaradas em uma classe, atribuem-se a elas automaticamente valores-padrão, a menos que especificado de maneira contrária pelo programador
byte, short, int, long: 0char: \u0000float, double: 0.0boolean: falseObject: null
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Tipos básicos de dados
Na linguagem Java, as únicas coisas que não são objetos são os tipos de dados básicos (por essa razão, por vezes, Java não é considerada uma linguagem puramente orientada a objetos)
Os operadores aritméticos, de atribuição, relacionais e lógicos, assim como os literais são os mesmos da linguagem C
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Tipos básicos de dados
Exemplos: double sunDistance = 1.496E8; long big = 329484958L; float massa = 9E-28F; float peso = 185.2F; byte numero = 7;
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Escopo de Variáveis
O escopo de uma variável informa onde ela pode ser utilizada
Exemplo:1: class VerificaEscopo{
2: int escopoA;
3: public void metodo(int escopoB){
4: int escopoC;
5: }
6: int escopoD;
7: }
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Escopo de Variáveis
No exemplo anterior: escopoA e escopoD são atributos da classe
“VerificaEscopo” e seu escopo vale a partir da linha 1 escopoB e escopoC são variáveis cujo escopo é válido
somente dentro do método
Variáveis locais podem ser declaradas a qualquer momento dentro de um método; exemplo:
for (int i=1; i<5; i++){ int j = 0; //i e j só valem dentro do for
}System.out.println(i);//erro
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Escopo de Variáveis
Variáveis locais declaradas dentro de método, obrigatoriamente, devem ser inicializadas
O compilador Java irá indicar um erro se não inicializarmos as variáveis. Exemplo:
class Aluguel { private int numero; public void adicItem(){ float itemCusto; int numDias; System.out.println("Numero="+numero);//OK System.out.println("ItemCusto="+itemCusto);
//Erro }}
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Operadores (já visto) aritméticos: +, -, *, /, % (resto da divisão) relacionais: >, >=, <, <= igualdade: ==, != lógicos: &&, & (and), ||, | (or), ^ (xor), ! (not) atribuição: =, +=, -=, *=, /=, %= incremento, decremento: ++, --
Precedência de operadoresVer “Aprenda em 21 Dias Java 2”, pág. 83
Operadores
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Precedência de Operadores (livro texto pg. 287) ( ) [ ] ++ -- + - ! (unário) * / % + - > >= < <= == != & ^ (xor) | && || ?: = += -= *= /= %=
Precedência de operadoresVer “Aprenda em 21 Dias Java 2”, pág. 83
Operadores
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Operadores
Incremento e decremento: int count = 10; ++count; // count = count + 1; count++; --count; // count = count - 1; count--;
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Operadores
Operadores binários: AND
4 & 6 = 4 = 0100 & 0110 = 0100 OR
4 | 6 = 6 = 0100 | 0110 = 0110 XOR
Resultado é verdadeiro se e somente se um de seus operandos resulta em um valor true e um resulta em um valor false
4 ^ 6 = 2 = 0100 ^ 0110 = 0010 COMPLEMENTO
~4 = 11 = ~0100 = 1011
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Operadores
Operadores aritméticos: c += 5; c = c + 5; c -= 6; c = c - 6; c = a * b; c = a / b; c = a % b; // resto da divisão
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Operadores
Funções matemáticas (classe Math) Alguns métodos
sqrt(x): cálculo da raiz quadrada de x (x é do tipo double)abs(x): valor absoluto de x (x pode ser float, int, long)ceil(x): arredonda x para o menor inteiro não menor que x
(ceil(9.2)=10.0, ceil(-9.8)=-9.0)cos(x): coseno trigonométrico de x (x em radianos)exp(x): método exponencial ex pow(x,y): x elevado a potência y (xy)random(): gera valor double v (0.0 <= v < 1.0)
Exemplo:double raio;raio = Math.sqrt(area/Math.PI);
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Operadores
Observação: Não é necessário importar a classe Math em um
programa para utilizar os seus métodos, pois esta classe é parte do pacote java.lang que automaticamente é importado pelo compilador
Outras classes do pacote java.langStringSystem
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Comandos da linguagem
if (expressão) {expressão}
else {expressão}
Exemplo:if (i % 2 == 0)
System.out.println(“Par”);else
System.out.println(“Ímpar”);
Operador condicional: expressão_lógica ? expressão1 : expressão 2 Exemplo: c = a>b ? a : b;
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Comandos da linguagem
switch (expressão){ case valor1:
expressão1;break;
case valor2:expressão2;break;
default:expressão;
}
Utilizado para cobrir múltiplas escolhas sobre valores alternativos de variáveis int, byte, short, long ou char.
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Comandos da linguagemExemplos:
switch (menuItem){case 0:
System.out.println(“zero”);break;
case 1:System.out.println(“um”);break;
default: System.out.println(“inválido”);}
switch (nota){case ‘A’:case ‘B’:case ‘C’: System.out.println(“Passou”);
break;default: System.out.println(“Rodou”);
}
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Comandos da linguagem
for (i=0; i < 8; i++)
{
// código}
Exemplo:
int soma = 0;
for (int i=1; i<=3; i++)
soma +=i;
System.out.println(“Soma “+soma);
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Comandos da linguagem
while (expressão)
{
// código
}
Exemplo:
int i = 0;
while (i<10) {
System.out.println(“i= “ + i);
i++;
}
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Comandos da linguagem
do
{
// código
} while (expressão);
Exemplo:
int i = 0;
do {
System.out.println(“i= “ + i);
i++;
} while (i<10);
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Comandos da linguagem
continue e break continue: abandona a iteração atual do laço e passa para a próxima iteração break: transfere o controle para o primeiro comando após o laço (forçando o
seu término imediato) ou switch Exemplo:soma = 0; soma = 0;for (i=0; i < 5; i++) for (i=0; i < 5; i++) { {
if (i == 3) continue; if (i == 3) break; soma += i; soma += i; } }
soma(break)= 3soma(continue)= 7
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Wrappers
Como em Java apenas objetos podem ser passados por referência para subrotinas, a linguagem oferece os chamados wrappers ou objetos empacotadores dos tipos básicos
Além da vantagem de serem passados por referência, os wrappers possuem diversos métodos úteis
Sempre que possível deve-se dar preferência ao uso dos wrappers ao invés dos tipos básicos diretamente
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Wrappers
Para cada um dos tipos de dados básicos existe um tipo “empacotador” correspondente. São eles:
Tipo primitivo Classe correspondente
boolean Booleanchar Characterint Integerlong Longfloat Floatdouble Double
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Os tipos byte e short não possuem classe correspondente porque o valor armazenado em objetos da classe Integer poderão ser convertidos para esses tipos
Wrappers
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplo:Integer n1 = new Integer(10);Integer n2 = new Integer(20);if (n1.equals(n2) == true) System.out.println(“Valores iguais!”);else
System.out.println(“Valores diferentes!”);
Obs: o método equals deve ser usado no lugar do operador “== ” porque o teste “if (n1 == n2) ... ” vai comparar as referências e não os valores. No caso, as referências nunca serão iguais.
Wrappers
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Alguns métodos da classe Integer:int compareTo(Integer anotherInteger)//retorna 0 se =static Integer decode(String nm)//string->Integerboolean equals(Object obj) double doubleValue()//retorna valor de Integer como doublefloat floatValue() int intValue() long longValue() short shortValue()String toString()//retorna objeto String que representa o
//valor do objeto Integerstatic String toString(int i)//retorna objeto String que
//representa int especificado
Consulte a documentação do JDK sobre os métodos das classes wrapper
Wrappers
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Wrappers
Exemplos de métodos de conversão de strings: Um método parse para cada tipo de dado.
String texto = "12345";
int inteiro = Integer.parseInt(texto);
byte - Byte.parseByte(aString)
short - Short.parseShort(aString)
int - Integer.parseInt(aString)
long - Long.parseLong(aString)
float - Float.parseFloat(aString)
double - Double.parseDouble(aString)
boolean - Boolean.valueOf(aString).booleanValue();
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Strings
Grupo de caracteres tratados como uma unidade
Podem incluir letras, dígitos e caracteres especiais (+,- *...)
Strings são objetos da classe String
Sequência de caracteres entre aspas "João da Silva" ou "111222333"
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Strings
Podem ser atribuídos na declaração String color = "blue";
color é a referência a um String"blue" é um objeto do tipo String anônimo
String color=new String("blue sky");
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Construtores da classe String s1 = new String()
s1 é um string vazio s2 = new String(anotherString)
s2 é uma cópia de anotherString s3 = new String(charArray)
s3 contém todos os caracteres do array charArray s4 = new String(charArray, offset,
numElements)s4 contém numElements caracteres do array charArray,
começando na localização offset etc.
Strings
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Quando utilizamos um literal string (Ex: “Ola”) em Java, a JVM automaticamente cria uma instância da classe String que armazena o literal utilizado. Isso é fácil de verificar na medida em que podemos acionar os métodos da classe String a partir de um literal.
Exemplo:
int x;x = “Ola”.length(); // método length()-retorna tamanhoSystem.out.println(“Tamanho do string \”Ola”:“,x);
Strings
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Pode-se também criar explicitamente referências e instâncias da classe String
O operador “+” no caso de strings é um operador de concatenaçãoString texto1 = "Início ";
String texto2 = "Fim ";
String tudo = texto1 + texto2;
System.out.println(tudo);
Strings
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Comparando stringsString string1 = “texto”;
string1 == string2 // compara endereço
ou
String string1 = “texto”;
string1.equals(string2); // compara conteúdo
Strings
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Alguns métodos da classe String:char charAt(int index)//retorna o caracter do índice especificado
int compareTo(String anotherString)//retorna zero se forem iguais
String concat(String str)//concatena str no final do string
static String copyValueOf(char[] data)//retorna objeto String que
//representa a seqüência de caracteres
boolean endsWith(String suffix)//testa se termina c/suffix
boolean equals(Object anObject)
boolean equalsIgnoreCase(String anotherString)
int indexOf(int ch)//retorna índice 1a ocorrência de ch
int lastIndexOf(int ch)//retorna índice última ocorrência de ch
int length()
String replace(char oldChar, char newChar)//troca todas
//ocorrências de oldChar por newChar
Strings
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
boolean startsWith(String prefix)//testa se começa por prefix
String substring(int beginIndex)
String substring(int beginIndex, int endIndex)
char[] toCharArray()//converte String para array de caracteres
String toLowerCase()
String toUpperCase()
static String valueOf(boolean b)//retorna representação String
//do argumento
static String valueOf(char c)
static String valueOf(char[] data)
static String valueOf(char[] data, int offset, int count)
static String valueOf(double d)
static String valueOf(float f)
static String valueOf(int i)
static String valueOf(long l)
Strings
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplos:String s1 = “As uvas estão verdes”;
String s2 = “Mad dog”;
String s3 = “Mad cat”;
s1.startsWith(“As”) trues1.startsWith(“As uvas”) trues1.startsWith(“uvas”,3) true s2.compareTo(s3) > 0s3.compareTo(s2) < 0s2 = s2.toLowerCase() “mad dog”char c = ‘a’
Strings
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Character.isLetter(c) trueCharacter.isWhitespace(c) falseint i = 0;i = s1.indexOf(‘e’); 8i = s1.lastIndexOf(‘e’); 18i = s1.indexOf(‘e’,10); 15i = s1.indexOf(“uvas”); 3c = s1.charAt(1); ‘s’c = Character.toLowerCase(s1.charAt(0)) ‘a’String s4 = “hamburger”.substring(4); “urger”String s5 = “hamburger”.substring(4,8); “urge”String s6 = (new Integer(2)).toString(); “2”String s7 = Integer.toString(2); “2”
Strings
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplos de programa Java (dialog box)
Java program using dialog box
Program Output
1 // Fig. 2.6: Welcome4.java
2 // Printing multiple lines in a dialog box
3 import javax.swing.JOptionPane; // import class JOptionPane
4
5 public class Welcome4 {
6 public static void main( String args[] )
7 {
8 JOptionPane.showMessageDialog(
9 null, "Welcome\nto\nJava\nProgramming!" );
10
11 System.exit( 0 ); // terminate the program
12 }
13 }
Saída
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplos de programa Java (dialog box)
Chama método showMessageDialog da classe JOptionPaneRequer dois argumentosPor enquanto, o primeiro argumento será sempre nullO segundo argumento é o string a apresentar
showMessageDialog é um método static da classe JOptionPanemétodos static são chamados usando o nome da classe,
ponto (.) e o nome do método.
8 JOptionPane.showMessageDialog(
9 null, "Welcome\nto\nJava\nProgramming!" );
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplos de programa Java (dialog box)
Chama método estático exit da classe SystemTermina a aplicaçãoComo o método é estático, é necessário o uso do nome da classe e do
ponto (.)Identificadores começando com maiúsculas usualmente referem-se a
nomes de classes (convenção) O argumento 0 (zero) indica que a aplicação foi terminada
corretamenteNão-zero indica que um erro aconteceu
A classe System é parte do pacote java.langNão é necessário fazer import desta classejava.lang é automaticamente importada
11 System.exit( 0 ); // terminate the program
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplos de programa Java (uso de wrappers)
Próximo programa: soma dois valores
Usa input dialogs para entrada de 2 valores pelo usuário
Usa message dialog para exibir resultado da soma dos 2 valores fornecidos
Demonstra uso de wrappers e entrada de dados
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
1 // Fig. 2.8: Addition.java2 // An addition program 34 import javax.swing.JOptionPane; // import class JOptionPane56 public class Addition {
7 public static void main( String args[] )8 {9 String firstNumber, // first string entered by user10 secondNumber; // second string entered by user11 int number1, // first number to add12 number2, // second number to add13 sum; // sum of number1 and number21415 // read in first number from user as a string16 firstNumber =17 JOptionPane.showInputDialog( "Enter first integer" );1819 // read in second number from user as a string20 secondNumber =21 JOptionPane.showInputDialog( "Enter second integer" );2223 // convert numbers from type String to type int24 number1 = Integer.parseInt( firstNumber ); 25 number2 = Integer.parseInt( secondNumber );2627 // add the numbers28 sum = number1 + number2;2930 // display the results
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
1 // Fig. 2.8: Addition.java2 // An addition program 34 import javax.swing.JOptionPane; // import class JOptionPane56 public class Addition {
7 public static void main( String args[] )8 {9 String firstNumber, // first string entered by user10 secondNumber; // second string entered by user11 int number1, // first number to add12 number2, // second number to add13 sum; // sum of number1 and number21415 // read in first number from user as a string16 firstNumber =17 JOptionPane.showInputDialog( "Enter first integer" );1819 // read in second number from user as a string20 secondNumber =21 JOptionPane.showInputDialog( "Enter second integer" );2223 // convert numbers from type String to type int24 number1 = Integer.parseInt( firstNumber ); 25 number2 = Integer.parseInt( secondNumber );2627 // add the numbers28 sum = number1 + number2;2930 // display the results
Declara variáveis
Entra primeiro inteiro como um String e armazena em firstNumber.
Converte string para inteiro
Adiciona e coloca resultado em sum.
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplos de programa Java (uso de wrappers)
31 JOptionPane.showMessageDialog(
32 null, "The sum is " + sum, "Results",
33 JOptionPane.PLAIN_MESSAGE );
34
35 System.exit( 0 ); // terminate the program
36 }
37 }
Saída
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplos de programa Java (uso de wrappers)
VariáveisfirstNumber e secondNumber são variáveis do
tipo String (package java.lang)• strings encapsuladas (wrapper)
9 String firstNumber, // first string entered by user
10 secondNumber; // second string entered by user
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplos de programa Java (uso de wrappers)
Lê String do usuário, representando o primeiro número a ser adicionadoMétodo JOptionPane.showInputDialog apresenta:
Note que o argumento da função aparece como texto.
15 // read in first number from user as a string16 firstNumber =17 JOptionPane.showInputDialog( "Enter first integer" );
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplos de programa Java (uso de wrappers)
Método Integer.parseIntConverte um argumento String em um inteiro (tipo int)
• Classe Integer em java.langO inteiro retornado por Integer.parseInt é atribuído
a variável number1 (line 24)• Lembre que number1 foi declarada como sendo do tipo int
23 // convert numbers from type String to type int24 number1 = Integer.parseInt( firstNumber ); 25 number2 = Integer.parseInt( secondNumber );
27 // add the numbers
28 sum = number1 + number2;
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplos de programa Java (uso de wrappers)
Usa showMessageDialog para mostrar os resultados
"The sum is " + somaUsa o operador + para concatenar a string "The sum is" e a variável sum
Concatenação de String com outros tipos de dados• Resultado gera um novo string
31 JOptionPane.showMessageDialog(
32 null, "The sum is " + sum, "Results",
33 JOptionPane.PLAIN_MESSAGE );
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplos de programa Java (uso de wrappers)
Outras versões de showMessageDialog Requerem 4 argumentos Primeiro argumento continua null por enquanto… Segundo: string a apresentar Terceiro: string para a barra de título Quarto: tipo de mensagem no diálogo
• JOptionPane.PLAIN_MESSAGE - sem ícone• JOptionPane.ERROR_MESSAGE • JOptionPane.INFORMATION_MESSAGE• JOptionPane.WARNING_MESSAGE• JOptionPane.QUESTION_MESSAGE
31 JOptionPane.showMessageDialog(
32 null, "The sum is " + sum, "Results",
33 JOptionPane.PLAIN_MESSAGE );
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplos de programa Java (uso de strings)
O programa a seguir demonstra os seguintes métodos da classe String:
length
charAt
getChars
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exemplo de uso de strings1 // Fig. 10.2: StringMisc.java2 // This program demonstrates the length, charAt and getChars3 // methods of the String class.4 //5 // Note: Method getChars requires a starting point6 // and ending point in the String. The starting point is the7 // actual subscript from which copying starts. The ending point8 // is one past the subscript at which the copying ends.9 import javax.swing.*;1011 public class StringMisc {12 public static void main( String args[] )13 {14 String s1, output;15 char charArray[];1617 s1 = new String( "hello there" );18 charArray = new char[ 5 ];1920 // output the string21 output = "s1: " + s1;2223 // test the length method
2424 output += "\nLength of s1: " + s1.length();2526 // loop through the characters in s1 and display reversed27 output += "\nThe string reversed is: ";2829 for ( int i = s1.length() - 1; i >= 0; i-- )
3030 output += s1.charAt( i ) + " ";
Retorna o tamanho do String.
Método charAt(posição)
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
33 // copy characters from string into char array3434 s1.getChars( 0, 5, charArray, 0 );
35 output += "\nThe character array is: ";
36
37 for ( int i = 0; i < charArray.length; i++ )
38 output += charArray[ i ];
39
40 JOptionPane.showMessageDialog( null, output,
41 "Demonstrating String Class Constructors",
42 JOptionPane.INFORMATION_MESSAGE );
43
44 System.exit( 0 );
45 }
46 }
Copia caracteres para charArray
public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
Saída
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exercícios
1) Escreva um programa em Java que calcule o número de vogais, consoantes e espaços em branco de um string digitado pelo usuário e imprima o resultado (use dialog boxes).
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exercícios
2) Dada a seguinte classe, que define um objeto Esfera, resolva as próximas questões.
class Esfera{
private float x, y, z; //centro
private float raio; //raio
public Esfera(float x1, float y1, float z1, float r1) {//construtor
x = x1;
y = y1;
z = z1;
raio = r1;
}
}
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Exercícios
2a) Através da sobrecarga, defina dois novos construtores, um que recebe o raio como parâmetro e cria uma esfera de centro (0,0,0) e outro sem parâmetros que cria uma esfera de raio 1 e centro (0,0,0).
2b) Altere a classe (seus atributos e métodos) para que seja possível guardar o número de esferas criadas e mostrá-lo ao usuário.
2c) Implemente um método para visualizar os atributos de uma esfera e escreva um programa em Java para testar a classe Esfera, utilizando dois objetos Esfera diferentes.
Introdução à Programação OO Usando Java - Desenvolvido pela Profa. Luciana Porcher Nedel e alterado pela Profa. Isabel Harb Manssour
Respostas dos exercícios1)import javax.swing.JOptionPane;public class DialogString{ public static void main() { String texto, msg; int espacos = 0, vogais = 0, letras = 0; texto = JOptionPane.showInputDialog("Digite um string:"); for (int i = 0; i < texto.length(); i++){ char c = Character.toLowerCase(texto.charAt(i)); if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') ++ vogais; if (Character.isLetter(c)) ++letras; if (Character.isWhitespace(c)) ++espacos; } msg = "O texto contem " + vogais + " vogais \n" + (letras - vogais)
+ " consoantes e " + espacos + " espacos."; JOptionPane.showMessageDialog(null, msg, "Resultado",
JOptionPane.INFORMATION_MESSAGE); System.exit( 0 ); }}