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