Transcript Java - I520
Java
Parte 2
Uso de Classes e Objetos
Uso de Classes e Objetos
•
•
•
•
•
•
Documentação da Java API
A classe Object
As classes String e StringBuffer
As classes Wrapper
Uso de arrays fixos e a Classe Vector
A classe Math
Biblioteca de classes Java
• Programas Java são formados por partes
chamadas classes.
• Classes são formadas por métodos que
realizam tarefas e retornam informações após
seu término.
• Programadores devem tirar proveito de ricas
coleções de classe existentes em bibliotecas
de classes Java ou Java APIs.
Java API - Application Programming
Interface
• Interfaces de Programas Aplicativos Java é o
conjunto de classes já desenvolvidas e
testadas que devem ser usadas pelos
programadores.
• O “mundo” Java se divide em duas partes
– Desenvolvimento de suas próprias classes
– Como utilizar as classes presentes nas extensas
bibliotecas Java.
Documentação Java API
Utilização da instrução package
• package é um diretório no sistema de
arquivos que contém classes que são
logicamente relacionadas.
• Deve estar na primeira linha do arquivo
(sem considerar os comentários e espaços
em branco) e deve ser único.
• Sintaxe:
package nome do package;
Alguns packages da Java API
• java.lang - Java Language Package
• javax.swing - J. Swing GUI Components Package
• javax.swing.event - J. Swing Event Package
• java.awt- J. Abstract Windowing Toolkit Package
• java.awt.event - J. AWT Event Package
• java.text - J. Text Package
• java.sql - J. Database Connectivity Package
UA “Classes, Objetos e Encapsulamento” - Teoria
Utilização da instrução import
• Para usar classes definidas em outros
packages use a instrução import.
• Vem antes da declaração da classe e depois
da declaração package (se houver).
• Sintaxe:
import nome do package[.subpackages].nome da classe;
OU
import nome do package[.subpackages].*;
UA “Classes, Objetos e Encapsulamento” - Teoria
Funcionamento do import
• Sem o import:
public class DesenhaPontos2{
public static void main(String args[]) {
...
javax.swing.JTextArea areaDeTexto = new javax.swing.JTextArea(200,150);
strNum = javax.swing.JOptionPane.showInputDialog("Entre com o número de pontos: ");
• Com import da classe:
import javax.swing.JOptionPane; //importa apenas a classe indicada
public class DesenhaPontos2{
...
javax.swing.JTextArea areaDeTexto = new javax.swing.JTextArea(200,150);
strNum = JOptionPane.showInputDialog("Entre com o número de pontos: ");
• Com import do pacote:
import javax.swing.*; //importa todas as classes do pacote mas NÃO os pacotes dentro do pacote
public class DesenhaPontos2{
...
JTextArea areaDeTexto = new JTextArea(200,150);
strNum = JOptionPane.showInputDialog("Entre com o número de pontos: ");
A classe Object
• A classe Object é a classe pai de todas as
classes dentro da linguagem.
• Nunca se cria uma classe “a partir do zero”.
Cada classe Java é uma subclasse de object.
Portanto, cada classe herda os 11 métodos
definidos pela classe object. Dois desses
importantes métodos são o toString( ) e o
equals(), que estudaremos mais adiante.
Classe String
• Uma string é uma seqüência de caracteres.
• A classe String representa todas as strings em
Java.
• São objetos somente leitura, ou seja, não podem
ter seu valor modificado após a sua criação.
• Como são objetos, valem todas as regras que
aprenderemos, entretanto como são muito
importantes, algumas simplificações podem
acontecer em sua criação.
Criando objetos String
• Algumas formas de criação.
String campo1 = “Tênis”;//forma simplificada
//Concatenação de objetos String
String campo1 = “Tênis” + “ “ + “nas Olimpíadas”;
//Forma comum de criação de objetos usando o operador new.
String campo1 = new String(“Tênis”);
Exemplo de método da
classe String: substring()
• O método substring() pode receber um ou
dois parâmetros inteiros e retorna um
subconjunto do String original:
public class TestaString{
public static void main(String args[]){
String url = "http://www.xxxxxx.com.br/curso/javaprogramming1/index.htm";
String dominio, teste;
dominio = url.substring(7,24);//objeto - ponto - nome_metodo - (parâmetros)
System.out.println("Dominio = " + dominio);
teste = url.substring(25);
System.out.println("teste = " + teste);
}
Dominio = www.xxxxxx.com.br
teste = curso/javaprogramming1/index.htm
Press any key to continue . . .
• Este é um exemplo prático de um método
sobrecarregado que estudaremos adiante.
}
Exemplo de método da
classe String: toString()
• O método toString() da classe String não
aceita parâmetros e retorna o próprio
string.
public class TestaString{
public static void main(String args[]){
String url = "http://www.xxxxxx.com.br/curso/javaprogramming1/index.htm";
String dominio, teste;
...
System.out.println("url = " + url.toString());
}
}
Dominio = www.infnet.com.br
teste = curso/javaprogramming1/index.htm
url = http://www.xxxxxx.com.br/curso/javaprogramming1/index.htm
Press any key to continue . . .
Generalização do método toString
• Todos os objetos herdam o método
toString() de Object que pode ser
sobrescrito pelo programador.
public class Homem {
...
public String toString() {
return nome + “ “ + idade;
}
}
• Qualquer referência adicionada a um String
invoca o método toString() do objeto.
System.out.println("url = " + url.toString());
System.out.println("url = " + url);//Exatamente o mesmo que a linha anterior
Exemplo de método da
classe String: equals()
• O método equals() é herdado de Object e é
sobrescrito em String. Nesta classe tem o
objetivo de comparar Strings.
public class TestaEquals{
public static void main(String args[]){
String url = "http://www.xxxxxx.com.br/curso/javaprogramming1/index.htm";
String dominio, teste;
dominio = url.substring(7,24);
if (dominio.equals("www.xxxxxx.com.br"))
System.out.println("Site de educacao em TI.");
else
System.out.println("Outro site.");
}
}
Exemplo de método da
classe String: valueOf()
• Método valueOf() – converte qualquer
variável de tipo primitivo em um String.
String quarenta = String.valueOf(40);
String cincoPontoDois = String.valueOf(5.2);
Outros métodos da
classe String
Métodos mais importantes
concat(), replace(), substring()
toLowerCase(), toUpperCase(), indexOf()
length(), charAt()
equals(), equalsIgnoreCase()
Classe StringBuffer
• Representa uma seqüência mutável de
caracteres Unicode. Por ser mutável, é a
candidata natural quando uma série de
concatenações se faz necessária.
• Não tem relação alguma com a classe
String.
//Método para ler um string do final para o início
public String reverter(String s) {
StringBuffer sb = new StringBuffer();
for (int i = s.length() – 1; i >= 0; i--)
sb.append(s.charAt(i));
return sb.toString();
}
Classes Wrapper
• Permite a utilização de tipos primitivos
como objetos.
boolean
byte
char
short
int
long
float
double
Boolean
Byte
Character
Short
Integer
Long
Float
Double
Operações com arrays
Você aprenderá
•
•
•
•
•
Declaração.
Criação.
Inicialização.
Matrizes.
Classe Vector e outras Classes.
Características dos
arrays em Java
• Tamanho fixo
• É referenciado com o mesmo identificador
• Todos os elementos possuem o mesmo tipo
de dado
• Cada elemento possui um índice
• Cada posição (índice) só pode guardar um
único dado
• Todo objeto armazenado em um array deve
ser inicializado antes de ser utilizado.
Declaração de arrays
tipo [] nome_do_array;
tipo nome_do_array [];
String [] args;
float notas[];
double [] salario;
ATENÇÃO:
//Só documento é um vetor
String nome, documento[], endereco;
// time e titulo são vetores de Strings
String[] time, titulo;
Criação de arrays
• Uma vez declarados faz-se a criação do
array em memória com o operador new
seguido do tipo e do tamanho que não
poderá ser alterado.
//arrays tem o primeiro índice igual a zero. Na instrução
//abaixo teremos os elementos notas[0]...notas[3]
notas = new float[4];
salario = new double[1000];
int numeroTimes = 64;
time = new String[numeroTimes];
int qualquer = umMetodo();//método umMetodo() retorna um int
titulo = new String[qualquer];
float f[] = new float[4]; //declaração e criação feitas na mesma linha
Inicialização de arrays
• Para arrays de tipos primitivos essa fase não é
obrigatória.
• Para arrays de objetos é necessária a inicialização
antes da utilização dos objetos. Enquanto não
forem inicializados seus valores serão null. Na
verdade arrays de objetos são arrays de
referências
• Duas maneiras de se inicializar:
– Inicialização dos elementos individualmente;
– Usar inicializadores de array.
demonstração
Inicialização de arrays: exemplo
public class TestaArray{
public static void main(String args[]){
int numeros[] = new int[4];
System.out.println("numeros[2] = " + numeros[2]);
float[] notas = {10, 8.5f, 4, 7};
System.out.println("\nnotas[2] = " + notas[2]);
String cores[] = new String[10];
System.out.println("\ncores[3] = " + cores[3]);
cores[0] = new String("Amarelo");
cores[1] = "Verde";
for (int i = 2 ; i < cores.length; i++){
cores[i] = new String();
}
for (int i = 0 ; i < cores.length; i++){
System.out.println("cores[" + i + "] = " +
cores[i]);
}
}
}
numeros[2] = 0
notas[2] = 4.0
cores[3] = null
cores[0] = Amarelo
cores[1] = Verde
cores[2] =
cores[3] =
cores[4] =
cores[5] =
cores[6] =
cores[7] =
cores[8] =
cores[9] =
Press any key to continue . . .
demonstração
Arrays
Multidimensionais
• Java implementa arrays multidimensionais
permitindo a alocação de arrays em cada
elemento do array.
String cores[][][] = new String[10][2][3];//mesmo número de colunas em todas as dimensões.
• É possível ter um número
de colunas diferentes
para cada linha e defini-las dinâmicamente
ou na inicialização.
/*Número de colunas é diferente
para cada linha
C0
C1
C2
C3
L0 - 44 | 32 | 21 | 12 |
L1 - 15 | 28 |
7 |
*/
int a[][] = new int[2][];
a[0] = new int[4];//4 cols na lin 0
a[1] = new int[3];//3 cols na lin 1
a[0][1] = 44;
a[0][2] = 32;
//...
a[1][1] = 28;
a[1][2] = 7;
demonstração
Matriz
• Matriz é um array bidimensional com o
mesmo número de colunas para cada linha.
public class TestaMatriz{
public static void main(String args[]){
String cores[][] = new String[10][2];
cores[0][0] = "Vermelho";
cores[0][1] = "#ff0000";
cores[1][0] = "Verde";
cores[1][1] = "#00ff00";
for (int i = 0 ; i < 10; i++){
for (int j = 0 ; j < 2 ; j++){
System.out.println("cores[" + i + "]"
+ "[" + j + "] = " + cores[i][j]);
}
}
}
}
cores[0][0] = Vermelho
cores[0][1] = #ff0000
cores[1][0] = Verde
cores[1][1] = #00ff00
cores[2][0] = null
cores[2][1] = null
cores[3][0] = null
cores[3][1] = null
cores[4][0] = null
cores[4][1] = null
...
A classe Vector()
• Implementa um array redimensionável de
qualquer tipo de objeto.
• Não aceita tipos primitivos como
elementos, apenas instâncias de objetos.
• Para guardar tipos primitivos devemos usar
as classes wrapper.
• Declarado no pacote java.util
demonstração
A classe Vector():
exemplo
import java.util.Vector;
public class TestaVector{
public static void main(String args[]){
Vector nomes = new Vector();
//adiciona elementos no final do vetor
nomes.addElement("Sergio");
nomes.addElement("Zair");
nomes.addElement("Leonardo");
nomes.addElement("Eduardo");
System.out.println("\nElemento 'Zair' esta na posicao "
+ nomes.indexOf("Zair"));
System.out.println("\nO elemento na posicao 3 eh "
+ nomes.elementAt(3));
System.out.println("\nInserindo 'Roberto' na posicao 2...");
nomes.insertElementAt("Roberto",2);
System.out.println("\nConteudo do vetor:");
for (int i = 0 ; i < nomes.size() ; i++){
System.out.println("[" + i + "] " + nomes.elementAt(i));
}
System.out.println("'Eduardo' foi para posicao 4 de ” +
nomes.size());
}
}
Elemento 'Zair' esta na posicao 1
O elemento na posicao 3 eh Eduardo
Inserindo 'Roberto' na posicao 2...
Conteudo final do vetor:
[0] Sergio
[1] Zair
[2] Roberto
[3] Leonardo
[4] Eduardo
'Eduardo' foi para posicao 4 de 5
Press any key to continue . . .
A classe Math
• Definida no pacote java.lang.
• Nenhum objeto dessa classe pode ser criado pois
seu construtor é privado (private*)
• Seus métodos estáticos (static*) e por isso
acessamos com o nome da classe.
• Não pode ser estendida (classe final*) por
herança.
• Possui duas constantes para cálculos.
* - Este termo será estudado adiante
Alguns métodos da
classe Math
• ceil(), floor(), round().
• abs(), min(), max().
• sin(), cos(), tan(), asin(), acos(), atan(),
toDegrees(), toRadians().
• log(), exp().
• sqrt(), pow(), random().
• Constantes PI, E
demonstração
A classe Math: exemplo
import java.text.DecimalFormat;
Sorteio entre 50 e 80: 64
Entre 65 e 64 o maior valor eh 65
Area de um circulo de raio 5 eh 78.53981633974483
Area de um circulo de raio 5 eh 78,54
Press any key to continue . . .
public class TestaMath{
public static void main(String args[]){
//Sorteando um numero entre 50 e 80
double valSorteado = Math.random();
int resultado = 50 + (int) (valSorteado*30);
System.out.println("Sorteio entre 50 e 80: " + resultado );
//Maior entre dois números
int maior;
maior = Math.max(resultado,65);
System.out.println("Entre 65 e " + resultado +
" o maior valor eh " + maior);
//Área de um círculo de raio 5
double area = Math.PI * Math.pow(5,2);
System.out.println("Area de um circulo de raio 5 eh " + area);
//Passando para duas casas decimais
DecimalFormat doisDigitos = new DecimalFormat("0.00");
System.out.println("Area de um circulo de raio 5 eh " +
doisDigitos.format(area));
}
}
instanceof para interfaces
• Podemos usar o operador instanceof para
saber se uma classe implementa uma
determinada interface.
public boolean yyz (Object obj) {
if (obj instanceof Aereo) {
(if not ((Aereo)obj).checkDecolagem())
return false;
}
}