1.3k likes | 1.48k Views
JAVA. Linguagem Ambiente de Desenvolvimento Runtime ou Java Virtual Machine. JAVA. Características. Parecida com C++ Compilada Portável Orientada a objetos Segura Suporte a concorrência Suporte a sistemas distribuídos. Máquina Virtual. Máquina emulada em software
E N D
JAVA • Linguagem • Ambiente de Desenvolvimento • Runtime ou Java Virtual Machine
Características • Parecida com C++ • Compilada • Portável • Orientada a objetos • Segura • Suporte a concorrência • Suporte a sistemas distribuídos
Máquina Virtual • Máquina emulada em software • Java Specification Language • Bytecodes • JVM provê: conjunto de instruções, conjunto de registradores, formato dos bytecodes, gerenciamento automático de memória.
Programa Simples 1 //Exemplo de comentario 2 public class AloMundo { 3 public static void main (String args[ ]) { 4 System.out.println("Alo Mundo!"); 5 } 6 }
Exercício 1 //Exemplo de comentario 2 public class AloMundo { 3 public static void main (String args[ ]) { 4 System.out.println("Alo Mundo!"); 5 } 6 } Abra uma janela DOS na pasta do arquivo AloMundo.java. Compile com o javac AloMundo.java e execute com java AloMundo.
Classes e Pacotes • Classe é um termo para um módulo que possui funcionalidade • O Java possui várias classes que implementam diversas funções • Pacote é um grupo de classes relacionadas Pacote java.lang String Math Integer Thread
Documentação JAVA API • Em HTML e descreve: • Hierarquia da classe • Propósito geral • Lista resumida de variáveis, construtores e métodos • Lista detalhada com descrição de variáveis, contrutores e métodos
Declaração • Uma linha de código terminada com ; x=5*i; if (x<50) resposta = "i é menor que 10"; for (int z=0;z<10;z++) a[z] = z;
Bloco • Um grupo de declarações entre {} x=5*i; if (x<50) { resposta = "i é menor que 10"; } for (int z=0;z<10;z++) { a[z] = z; System.out.println(z); }
Identificadores • São nomes utilizados para identificar classes, variáveis e métodos 1 //Exemplo de comentario 2 public class AloMundo { 3 public static void main (String args[ ]) { 4 System.out.println("Alo Mundo!"); 5 } 6 }
Tipos Básicos • boolean verdade = true; • String texto = "aeiou"; • char letra = ‘a’; • int idade = 31; • long premio = 200000; • float peso = 80.5 • double distancia = 1200.34
Convenções de código • Classe: ContaBancaria, Curso • Interface: Conta • Métodos: saque(), adicioneCurso • Variável: clienteAtual • Constantes: VELOCIDADE_MAXIMA • Use {} nas estruturas de controle • Espaçamento
Variáveis • Tipos primitivos • Tipos de referência • Locais: dentro de métodos • Atributos ou variáveis membro: dentro da classe
Inicializando variáveis • Nenhuma variável pode ser utilizada antes de ser inicializada. • Variáveis locais devem ser inicializadas manualmente. • Variáveis membro são iniciadas automaticamente.
Operadores • + - • * / % • == != !(expressão lógica) • && || • < > <= >= • (expressão lógica) ? valor1:valor2
Concatenação de Strings • O operador + concatena Strings, criando uma nova String String saudacao = "Dr. "; String nome = "Pedro " + "Silva"; String titulo = saudacao + nome;
Casting • int d • long a • a = d; // faz uma conversão implícita • d = (int) (a); // precisa conversão explícita
Instruções Condicionais • Comando if if (nota > 7 && falta < 18) { aprovado=true; } else { aprovado=false; }
Instruções Condicionais • Comando switch switch (valor) { case 1: instruções; break; case 2: instruções; break; default: instruções; break; }
Instruções de Loop • Permite a execução repetida de blocos for (int i=0; i<10; i++) { instrução ou bloco; }
Loop // testa antes de executar while (boolean) { instrução ou bloco; } // executa pelo menos uma vez do { instrução ou bloco; } while (boolean test);
Controles Especiais • break ou break com rótulo • continue ou continue com rótulo
Exercício • Crie um aplicação chamada Fatorial que imprima o fatorial de um numero. Para pedir um numero: int n = Integer.parseInt(JOptionPane.showInputMessage("digite um numero")); • Faça um programa que peça um número ao usuário. O programa deve dizer se o número é par ou impar. Se o número for par, o programa deve mostrar os números pares menores. • Faça um programa que peça um número ao usuário e diga se é um número primo. Números primos são divisíveis apenas por 1 e pelo próprio número.
Exercício • Escreva o método main da classe Tabuada que imprime os valores multiplos de m menores que n. O usuário deve informar os valores de m e n. O valor de n deve ser maior que m. Por exemplo: Quais são os múltiplos de 2 (m) ate 8 (n)? Resposta: 0, 2, 4, 6 • Escreva uma classe chamada AreaDoTrianguloRetangulo. Peça para o usuário digitar os valores da base e da altura do triângulo e mostre o valor da área e da hipotenusa. A área do triângulo é igual a base * altura / 2. A hipotenusa é igual a raiz quadrada da soma dos quadrados da base e altura (catetos). Dica: use a função Math.sqrt(n) para calcular a raiz.
Criando uma classe • Definir um tipo que representa uma data class MinhaData { int dia; int mes; int ano; } • Declarando uma variável deste tipo MinhaData meuNascimento, seuNascimento;
Criando um objeto • Objetos são criados com a função new MinhaData meuNascimento; meuNascimento = new MinhaData( ); • As variáveis que referenciam objetos servem para acessar sua estrutura meuNascimento.dia = 26; meuNascimento.mes = 11; meuNascimento.ano = 1960;
Exercício • Um ponto pode ser caracterizado por uma coordenada x e y. Defina uma classe chamada Ponto que representa esta idéia. As coordenadas são valores inteiros. • Escreva uma classe Main com o método main ( ) dentro da classe; declare duas variáveis do tipo Ponto. Chame as variáveis de inicio e fim. Crie os objetos usando new Ponto( ). Atribua o valor 10 a x e y do objeto inicio. Mostre seus valores do objeto inicio. Atribua o valor 20 para a variável x do objeto fim, e o valor 30 para y do objeto fim. Mostre os valores x e y do objeto fim.
Arrays • Um array é uma coleção de variáveis do mesmo tipo. • A coleção é acessada por índices • Arrays podem ser de qualquer tipo primitivo ou classe char s[]; ou char[] s; Ponto p[]; ou Ponto[] p;
Criando Arrays • Arrays são criados com a função new s = new char[20]; p = new Ponto[100]; • Arrays de objetos não criam os objetos automaticamente. Os objetos são criados separadamente. p[0] = new Ponto(); p[1] = new Ponto();
Inicializando Arrays Ponto array[] = { new Ponto(), new Ponto(), new Ponto() }; // equivalente ao código abaixo Ponto array[] = new Ponto[3]; array[0] = new Ponto(); array[1] = new Ponto(); array[2] = new Ponto();
Arrays Multi-dimensionais int twoDim [ ] [ ] = new int [4][ ]; // arrays de mesmo tamanho twoDim[0] = new int [5]; twoDim[l] = new int [5]; // ou arrays de tamanhos diferentes twoDim[0] = new int [2]; twoDim[1] = new int [4]; twoDim[2] = new int [6]; twoDim[3] = new int [8];
Tamanho e redimensionamento • O tamanho de um array está no seu attributo length • Você não pode alterar o tamanho de um array, mas pode usar a mesma variável para criar um novo e maior array.
Copiando Arrays • Use o método arrayCopy da classe System int dados[ ] = { 1, 2, 3, 4, 5, 6 }; int contagem[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1}; System.arraycopy(dados, 0, contagem, 0, dados.length);
Exercício • Crie uma classe chamada Media. No método main, declare uma variável chamada notas do tipo array de int para 5 notas. Após o usuário informar as notas, o programa deve calcular e mostrar a média. • Faça uma classe para perguntar 5 questões ao usuário. As perguntas devem ser definidas como um array de String. As respostas devem ser salvas em um array de Strings também. Ao final das perguntas o programa deve mostrar as perguntas e respostas.
Classes e Objetos • Princípios dos Objetos • Organizar dados e algoritmos • Encapsulamento • Polimorfismo • Herança
Classes e Objetos • O elemento fundamental em Java é a classe • Classe é um modelo para criar objetos • Define a implementação dos métodos • Todos os métodos tem que pertencer a uma classe • As variáveis definidas na classe são chamadas membros (atributos)
Exemplo class EmpregadoInfo { String nome; String cargo; String departamento; } Para instanciar um objeto, crie e atribua valores aos membros: EmpregadoInfo emp = new EmpregadoInfo( ); emp.nome = "Marcos"; emp.cargo = "gerente"; emp.departamento = "RH";
Métodos • Método mostra() implementado na classe EmpregadoInfo class EmpregadoInfo { String nome; String cargo; String departamento; void mostra( ) { System.out.println(nome + " é " + cargo + " do " + departamento); } }
Executando métodos Este método imprime os dados dos membros da classe quando o objeto foi criado e instanciado. EmpregadoInfo empregado = new EmpregadoInfo( ); emp.nome = "Marcos"; emp.cargo = "gerente"; emp.departamento = "RH"; empregado.mostra( ); A idéia que métodos compõe um objeto e podem interagir intimamente com seus dados é um conceito de orientação a objeto.
Definindo métodos • Contém o código que manipula o estado do objeto • Recebe um número de parâmetros • Possue um tipo de retorno • Sintaxe: <modificador> <tipo_retorno> <nome> ([<parâmetros>]) [throws <exception>] { .... }
Exemplos de métodos public class SalarioEmpregado { private double salario; public void aumentaSalario (double valor){ salario = salario + valor; } public double calculaImposto() { double imposto = 0; if (salario > 1200) { imposto = salario * 0.15; } else if (salario > 2900) { imposto = salario * 0.27; } return imposto; } } // fim da classe
Passagem por valor • Toda passagem de argumentos é por valor, ou seja, uma cópia vai para o método chamado. • Quando o argumento é um objeto, o valor do argumento é uma referência ao objeto. O método pode mudar o conteúdo do objeto, mas nunca a referência.
Referência this • this é uma referência ao objeto corrente • this acessa todas as variáveis membro e métodos do objeto corrente • this é utilizado quando outro objeto precisa conhecer o objeto corrente
Exemplo usando this public class MinhaData { int dia, mes, ano; public void convidaAniversario( ) { Aniversario.envieConvite( this); } } public class Aniversario { public static void envieConvite ( MinhaData d ) { System.out.print( "Convido para meu aniversario " ); System.out.print( " será dia " + d.dia ); System.out.print( " mes " + d.mes ); System.out.print( " ano " + d.ano ); } }
Ocultando Dados public class Data { private int dia, mes, ano; } public class OutraClasse { public static void main(String args[ ]) { Data d = new Data( ); d.dia = 21; // ilegal! } }
Encapsulamento • Protege os dados de um objeto de modificação imprópria, forçando o usuário a ter acesso aos dados por um método. • Assegura que os dados sempre sejam tratados da mesma forma.
Sobrecarregando Métodos • Cada método possui uma assinatura. • A assinatura é composta pelo: • Nome do método • Número e tipo de seus argumentos • Permite escrever vários métodos com o mesmo nome em uma classe que fazem o mesmo trabalho, mas recebem argumentos diferentes.
Sobrecarregando Métodos public void println(int i) public void println(float f) public void println( )