Introdução à linguagem de programação java. - fcfrp

Transcrição

Introdução à linguagem de programação java. - fcfrp
INTRODUÇÃO À LINGUAGEM DE PROGRAMAÇÃO
TULIO MARCUS R. CALIXTO
Centro de Informática de Ribeirão Preto - CIRP - USP
INTRODUÇÃO: JVM (JAVA VIRTUAL MACHINE)
Código Fonte
Código Fonte
Bytecode java
Aplicação
VJM
Sistema Operacional
Sistema Operacional

Write once, run anywhere
2
PLATAFORMA JAVA
Versão Atual: 6.0.
 Compatibilidade.
 Case sensitive
 JRE (Java Runtime Enviroment)



JVM + Bibliotecas: Tudo que precisamos para
executar uma aplicação java.
JDK (Java Developer Kit): Necessário para
desenvolver aplicações java.
3
PLATAFORMA JAVA
JSE (Java Standard Edition): Aplicações desktop
 JEE (Java Enterprise Edition): Especificação
para aplicações multicamadas – Web.
 JME (Java Micro Edition): API para pequenos
disposivitos.

4
AMBIENTES DE DESENVOLVIMENTO

IDE (Integrated Development Environment)
Eclipse (http://www.eclipse.org)
 NetBeans (http://www.netbeans.org)
 JCreator (http://www.jcreator.com)


Referências
http://www.javapassion.com/javaintro/
 http://java.sun.com/
 http://www.guj.com.br/
 http://java.sun.com/docs/books/tutorial/

5
PREPANDO O AMBIENTE

Download JDK (JAVA Developer Kit)


Download Eclipse (IDE para desenvolvimento)


http://www.sun.com
http://www.eclipse.org
Download MySQL

http://www.mysql.com




mysql-gui-tools-5.0-r10-win32.msi
mysql-5.0.37-win32.zip
mysql-connector-java-5.0.5.zip
C:\Program Files\Java\jdk1.6.0\jre\lib\ext (mysqlconnector-java-5.0.5-bin.jar)
6
PRIMEIRO EXEMPLO
public class Exemplo1 {
public static void main(String[] args) {
String mensagem = "Primeiro Exemplo em java";
System.out.println(mensagem);
}
}
7
TIPOS DE VARIÁVEIS
public class Variaveis {
public static void main(String[] args) {
int inteiro = 50;
double ponto = 1.098123;
String texto = "Texto";
char caracter = 'c';
boolean tf = true;
// Este é um comentario por linha
/*
* Este é um Comentario
* Por bloco
*/
System.out.println("Variavel inteira: " + inteiro);
System.out.println("Variavel com ponto: " + ponto);
System.out.println("Variavel String: " + texto);
System.out.println("Variavel caracter: " + caracter);
System.out.println("Variavel booleana: " + tf);
}
}
8
CONVENÇÕES SORE NOME DE VARIÁVEIS
O nome da variável deve começar com letra
minúscula e nomes de classes devem começar
com letras maiúsculas.
 Se o nome da variável contiver mais de uma
palavra, a primeira letra de cada palavra
subsequente deve iniciar em maiúscula.
 O underscore ( _ ) deve ser utilizado apenas para
separar palavras em constates.
 Não podemos utilizar palavras chaves como nome
de variáveis.

9
PALAVRAS CHAVES
abstract
assert
boolean
break
byte
case
catch
char
class
const
while
throws
continue
default
do
double
else
enum
extends
final
finally
float
volatile
throw
for
new switch
goto package
if
private
implements protected
import
public
instanceof
return
int
short try
interface
static
long
strictfp
native
super
void
transient
this
synchronized
10
ESCOPO DA VARIÁVEL

Região, dentro do programa, onde a variável pode ser
referenciada, simplesmente pelo nome.
public class Escopo {
public static void main(String[] args) {
int num1 = 20;
for (int i = 0; i<=2; i++){
System.out.println("Interacao:" + i);
num1 = num1 + 10;
}
System.out.println(num1);
// System.out.println(i);
}
}
11
VARIÁVEL FINAL


CONSTANTE
Após inicializada, seu valor não poderá mais ser alterado.
public class Final {
public static void main(String[] args) {
final int I = 10;
final int J = 5;
// I = 5;
// J = 2;
System.out.println("Soma: " + (I + J));
}
}
12
OPERADORES
public class Operadores {
public static void main(String[] args) {
int i = 4;
int j = 2;
System.out.println("i + j: " + (i + j));
System.out.println("i - j: " + (i - j));
System.out.println("i * j: " + (i * j));
System.out.println("i / j: " + (i / j));
System.out.println("i % j: " + (i % j));
}
}
13
OPERADORES (INCREMENTO E DECREMENTO)
public class Operadores {
public static void main(String[] args) {
int i = 1;
System.out.println("i: " + i);
i = i + 2;
System.out.println("i + 2: " + i);
i += 3;
System.out.println("i += 3: " + i);
i -= 2;
System.out.println("i -= 2: " + i);
}
}
14
PRÉ E PÓS INCREMENTOS
public class Operadores {
public static void main(String[] args) {
i = 2;
System.out.println("i: " + i);
System.out.println("i++: " + i++);
System.out.println("i: " + i);
System.out.println("++i: " + ++i);
}
}
15
CONTROLE DE FLUXO - WHILE
public class Fluxo {
public static void main(String[] args) {
int i = 0;
while (i <= 5){
System.out.println("Valor de i: " + i);
i++;
}
}
}
16
CONTROLE DE FLUXO – DO...WHILE
public class Fluxo {
public static void main(String[] args) {
int i = 0;
do{
System.out.println("Valor de i: " + i);
i++;
} while (i <= 5);
}
}
17
CONTROLE DE FLUXO - FOR
public class Fluxo {
public static void main(String[] args) {
for (int a = 0; a <= 5; a++){
System.out.println("Valor de a: " + a);
}
}
}
18
CONTROLE DE FLUXO – FOR
public class Fluxo {
public static void main(String[] args) {
int i = 1;
for (;;) { // loop infinito
System.out.println("Valor de i: " + i);
if (i == 6){
break;
}
i++;
}
}
}
19
CONTROLE DE FLUXO - IF
public class Fluxo {
public static void main(String[] args) {
double nota = 7.0;
if (nota >= 5.0){
System.out.println("Aprovado!");
}
if (nota < 5.0){
System.out.println("Reprovado!");
}
}
}
20
CONTROLE DE FLUXO - IF
public class Fluxo {
public static void main(String[] args) {
double nota = 7.0;
if (nota >= 5.0){
System.out.println("Aprovado!");
}
else{
System.out.println("Reprovado!");
}
}
}
21
CONTROLE DE FLUXO - IF
public class Fluxo {
public static void main(String[] args) {
double nota = 4.8;
System.out.println((nota >= 5.0) ?
Aprovado!" : "Reprovado!");
}
}
22
CONTROLE DE FLUXO - IF
public class Fluxo {
public static void main(String[] args) {
double teste = 1.2;
char conceito;
if (teste >= 9.0){
conceito = 'A';
}else if (teste >= 7.5){
conceito = 'B';
}else if (teste >= 5.0){
conceito = 'C';
}else{
conceito = 'D';
}
System.out.println("Conceito: " + conceito);
}
}
23
CONTROLE DE FLUXO - SWITCH
public class Fluxo {
public static void main(String[] args) {
int semana = 3;
switch(semana){
case 1:
System.out.println("Domingo");
break;
case 2:
System.out.println("Segunda");
break;
…
default:
System.out.println("Dia Inválido");
break;
}
}
}
24
CLASSE STRING
Utilizada para trabalhar com textos
 Pricipais métodos







indexOf
length
replace
substring
toUpperCase
equals
25
EXEMPLOS
public class DemoString {
public static void main(String[] args) {
String dominio = "www.cirp.usp.br";
//obtendo a posicao de um caracter ou string dentro da string
int posicao = dominio.indexOf("cirp");
System.out.println(posicao);
//obtendo o tamanho da string
int tamanho = dominio.length();
System.out.println(tamanho);
26
EXEMPLOS
//substituindo caracteres na string
String dominioAlterado = dominio.replace(".", "-");
System.out.println(dominioAlterado);
//obtendo uma parte da string
String parteDominio = dominio.substring(4, 10);
System.out.println(parteDominio);
//obtendo uma parte da string
String parteDominio2 = dominio.substring(5);
System.out.println(parteDominio2);
27
EXEMPLOS
//convertendo a string para maiuscula
String dominioMaiuscula = dominio.toUpperCase();
System.out.println(dominioMaiuscula);
}
}
28
CONVERSÃO DE TIPOS DE DADOS

Inteiro pra double


Double pra inteiro


Conversão explicita (int) variavel
Inteiro ou double pra String


Conversão direta
Classe.toString(variavel)
String para double ou inteiro

Classe.parseClasse(variavel)
29
MÉTODO CONSTRUTOR
Toda classe java possui um método construtor
 Possui o mesmo nome da classe
 Não possui nenhum tipo de retorno
 Utilizado para inicializar variáveis

30
EXERCÍCIO
Crie uma classe chamada e-mail
 A classe deve ter os seguintes métodos

Construtor (Inicialização das variáveis)
 validarEmail (Verifica se tem o arroba)
 obterNome (Obter a parte do e-mail antes do arroba)

31
DICAS
Email c = new Email();
String e_mail = "[email protected]";
boolean r = c.validarEmail(e_mail);
if (!r){
System.out.println("E-mail inválido!");
}
else
System.out.println("E-mail válido!");
String nome = c.obterNome(e_mail);
System.out.println("Nome antes do @: " + nome);
32
RESOLUÇÃO
public class Email {
public boolean validarEmail (String mail){
int posicao = 0;
posicao = mail.indexOf("@");
if (posicao != 0) {
return true;
}
else return false;
}
33
RESOLUÇÃO
public int getPosicao (String mail){
return mail.indexOf("@");
}
public String obterNome(String mail){
int p = getPosicao(mail);
return mail.substring(0, p);
}
}
34
VETORES / ARRAYS
import java.util.Arrays;
public class Vetor {
public static void main(String[] args) {
String nomes[ ];
nomes = new String[5];
nomes[0] = "Tulio";
nomes[1] = "Jose";
nomes[2] = "Maria";
nomes[3] = "Joana";
nomes[4] = "Joaquina";
System.out.println("Este array tem: " + nomes.length() + " elementos");
35
VETORES / ARRAYS
for (int i = 0; i<nomes.length(); i++){
System.out.println("Posicao[" + i + "]: " + nomes[i]);
}
Arrays.sort(nomes);
System.out.println("Nomes Ordenados: ");
for (int i = 0; i<nomes.length(); i++){
System.out.println("Posicao[" + i + "]: " + nomes[i]);
}
}
}
36
VETORES / ARRAYS
public class Vetor2 {
final int TAMANHO = 20;
int numeros[ ] = new int[ TAMANHO ];
public int tamanho(){
return numeros.length();
}
public void insereElementos(){
int i = 0;
while(i < numeros.length()){
numeros[i] = (int) (Math.random() * 10);
i++;
}
}
37
VETORES / ARRAYS
public void mostraElementos(){
for (int i = 0; i< numeros.length(); i++)
System.out.println("Posicao[ " + i + "]: " + numeros[i]);
}
}
38
VETORES / ARRAYS
public class TestaVetor {
public static void main(String[] args) {
Vetor a = new Vetor();
a.insereElementos();
a.mostraElementos();
System.out.println("O tamanho do vetor é: " +
a.tamanho() );
}
}
39
CLASSE ARRAYS
Classe própria para trabalhar com arrays
 Principais métodos

sort: Ordena em ordem ascendente os elementos do
array
 equals: Retorna true se os vetores tiverem o mesmo
conteúdo na mesmo ordem
 fill: Preenche o vetor com o valor recebido como
parametro
 binarySearch: Retorna em qual posição do vetor o
valor se encontra

40
EXEMPLOS
char nota[] = {'C', 'E', 'A', 'D', 'B'};
for (int i=0; i<nota.length; i++){
System.out.println("Nota[" + i +"]: " + nota[i]);
}
Arrays.sort(nota);
for (int i=0; i<nota.length; i++){
System.out.println("Nota[" + i +"]: " + nota[i]);
}
41
EXEMPLOS
char nota [] = {'C', 'E', 'A', 'D', 'B'};
char nota2[] = {'E', 'A', 'C', 'B', 'D'};
if (Arrays.equals(nota, nota2)){
System.out.println("Iguais");
} else {
System.out.println("Diferentes");
}
42
EXEMPLOS
Arrays.sort(nota);
Arrays.sort(nota2);
if (Arrays.equals(nota, nota2)){
System.out.println("Iguais");
} else {
System.out.println("Diferentes");
}
43
EXEMPLOS
int numeros[] = new int[20];
Arrays.fill(numeros, 5);
for (int i = 0; i<numeros.length; i++){
System.out.println("Numeros[" + i + "]: " + numeros[i]);
}
44
EXEMPLOS
char nota[] = {'C', 'E', 'A', 'D', 'B'};
int posicao = 0;
for (int i=0; i<nota.length; i++){
System.out.println("Nota[" + i +"]: " + nota[i]);
}
Arrays.sort(nota);
45
EXEMPLOS
for (int i=0; i<nota.length; i++){
System.out.println("Nota[" + i +"]: " + nota[i]);
}
System.out.println();
posicao = Arrays.binarySearch(nota, 'C');
System.out.println("Posicao: " + posicao);
46
MATRIZES / VETORES MULTIDIMENSIONAIS
public class Matriz {
final int LINHA = 3;
final int COLUNA = 3;
int matriz[ ][ ] = new int [LINHA][COLUNA];
public void insereElementos(){
for(int i = 0; i<LINHA; i++)
for(int j = 0; j<COLUNA; j++)
matriz[ i ][ j ] = (int) (Math.random() * 10);
}
47
MATRIZES / VETORES MULTIDIMENSIONAIS
public void exibeElementos(){
for (int i = 0; i<LINHA; i++)
for (int j = 0; j<COLUNA; j++)
System.out.println("Posicao[ " + i + " ][ " + j + " ]: " +
matriz[i][j]);
}
public void removeElemento(int linha, int coluna){
matriz[linha][coluna] = 0;
}
public void diagonalPrincipal(){
for(int i = 0; i<LINHA; i++)
for(int j = 0; j<COLUNA; j++){
if(i == j){
48
MATRIZES / VETORES MULTIDIMENSIONAIS
System.out.println("Posicao[ " + i + " ][ " + j + " ]: " +
matriz[i][j]);
}
}
}
public void diagonalSecundaria(){
for(int i = 0; i<LINHA; i++)
for(int j = 0; j<COLUNA; j++){
if ((i + j) == (LINHA - 1)){
System.out.println("Posicao[ " + i + " ][ " + j + " ]: " +
matriz[i][j]);
}
}
}
49
MATRIZES / VETORES MULTIDIMENSIONAIS
public int determinante (){
int dp = 1, ds = 1;
for (int i = 0; i<LINHA; i++)
for (int j = 0; j<COLUNA; j++){
if (i == j){
dp = dp * matriz[i][j];
}
if ((i + j) == (LINHA - 1)){
ds = ds * matriz[i][j];
}
}
return dp - ds;
}
}
50
MATRIZES / VETORES MULTIDIMENSIONAIS
public class TestaMatriz {
public static void main(String[] args) {
Matriz m = new Matriz();
m.insereElementos();
m.exibeElementos();
System.out.println("Diagonal Principal: ");
m.diagonalPrincipal();
System.out.println("Diagonal Secundaria: ");
m.diagonalSecundaria();
System.out.println("Determinante: " + m.determinante());
}
}
51
TRATAMENTO DE ERROS


}
try/cache
http://blog.caelum.com.br/2006/10/07/lidando-com-exceptions/
char nota[] = {'C', 'E', 'A', 'D', 'B'};
int tamanho = nota.length + 5;
try{
for (int i = 0; i<tamanho; i++){
System.out.println("Elemento: " + nota[i]);
}
}catch(IndexOutOfBoundsException e){
System.out.println("Indice do array incorreto");
}
System.out.println("FIM DA EXECUÇÂO");
52
INTERFACES GRÁFICAS
AWT e Swing (a partir do java 1.2)
 Look-and-feel: garante que a aplicação terá a
mesma interface (cores, tamanhos, etc) em
qualquer sistema operacional.
 Portabilidade
 Vasto número de bibliotecas e possibilidades
 Tamanho do código
 http://java.sun.com/docs/books/tutorial/uiswing/

53
PRINCIPAIS COMPONENTES
JFrame
 JButton
 JTextField
 JLabel
 JTextArea
 JOptionPane
 JPanel
 JComboBox
 Os componentes precisam estar em um conteiner
que administrará o agrupamento e exibição dos
mesmos

54
GERENCIADOR DE LAYOUT
Definem a maneira como os objetos serão
dispostos na Janela
 Comportamento dos objetos quando
redimensionamos a janela
 FlowLayout
 BorderLayout
 GridLayout
 Terceiros

55
INTERFACE
Classe que aumenta as funcionalidades da classe
que a implementa
 Faz a classe se comportar de uma determinada
maneira
 Todos os métodos de uma interface precisam ser
implementados
 ActionListiner


Interface que trata eventos de ação (Clique do mouse,
clique da tecla ENTER no teclado, etc)
56
EVENTOS
Definir a fonte do evento
 Definir o tratador do evento
 Todo evento de ação chama o método (abstrato)
chamado actionPerformed



Método abstrato: Método especificado em uma classe
abstrata que precisa sem implementado na classe que
usará o método.
actionPerformed: Descreve o comportamento dos
eventos
57
EXEMPLO
SWING + EVENTOS + LAYOUT MANAGER
58
INTRODUÇÃO A ORIENTAÇÃO A OBJETOS (OO)
Carro
cor
modelo
ano
fabricante
Atributos
Classe
setCor
setModelo
getFabricante
getAno
getCor
Métodos
59
CLASSES E OBJETOS




Uma classe é a descrição de objetos com o
mesmo conjunto de propriedades e de métodos
Uma classe funciona como uma “planta” dos
objetos que podem vir a fazer parte da mesma
Objeto é uma instância de uma classe um objeto é
um “indivíduo” de uma classe
O objeto é a realização da classe
60
ATRIBUTOS E MÉTODOS

Atributos são as características de um objeto.
Um método é a descrição de como um objeto
executa uma de suas operações
 As operações são executadas normalmente sobre
os atributos

61
HERANÇA
Permite a criação de uma nova classe através da
inclusão de novas propriedades ou inclusão de
novos métodos ou redefinição de métodos
existentes
 A nova classe herda, da classe original, as suas
propriedades e também os métodos que não
foram alterados

62
POLIMORFISMO E SOBRECARGA DE MÉTODO

Polimorfismo: Possibilidade de ter 2 ou mais
métodos diferentes com o mesmo nome.
Ex.:
 int getPosicao (int a);
 int getPosicao (String nome);

Sobrecarga de método: Quando a classe filha
reescreve à sua maneira um método da classe
pai.
63
MODIFICADORES DE ACESSO
Public: Visível em todos os locais do projeto
 Private: Visível somente na classe em que foi
especificado
 Default: Visível somente no pacote, o qual a
classe que especificou o atributo ou método faz
parte.
 Protected: = default + subclasses

64
EXERCÍCIO

Criar uma classe Pessoa com os seguintes
atributos:
Nome (String)
 Idade (int)
 Sexo (String)


Criar os seguintes métodos:
Atribuir valores para todos os atributos
 Retornar os valores de todos os atributos
 Retornar a % de mulhers com idade entre 20 e 40
anos
 Retonar o N de homens com menos de 30 anos

65
EXERCÍCIO - CONTINUAÇÃO

Criar uma classe chamada utilPessoa






Criar um vetor com 10 objetos do tipo Pessoa
Atribuir valores a todos os atributos
Retornar todos os valores
Retornar a % de mulheres com idade entre 20 e 40
anos
Retornar o N de homens com menos de 30 anos
Criar uma classe chamada TestaPessoa e chamar
todos os métodos da classe UtilPessoa
66
ACESSO A BANCO DE DADOS - MYSQL
import java.sql.*;
public class Banco {
public static String status = "";
public static Connection getConnection(){
Connection con = null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://localhost/loja?user=root&password=123";
con = DriverManager.getConnection(url);
status = "Conexao Aberta!";
}catch(SQLException e){
status = e.getMessage();
}catch(ClassNotFoundException e){
status = e.getMessage();
}catch(Exception e){
status = e.getMessage();
}
return con;
}
}
67
ACESSO A BANCO DE DADOS - MYSQL
// Carrega o driver para conectar-se ao banco
Class.forName("com.mysql.jdbc.Driver").newInstance();
// Faz a conexao com o banco
String url = "jdbc:mysql://localhost/loja?user=root&password=123";
con = DriverManager.getConnection(url);
68