A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

JAVA Linguagem Ambiente de Desenvolvimento

Apresentações semelhantes


Apresentação em tema: "JAVA Linguagem Ambiente de Desenvolvimento"— Transcrição da apresentação:

1 JAVA Linguagem Ambiente de Desenvolvimento
Runtime ou Java Virtual Machine Para muitos, a linguagem Java é conhecida primeiramente como uma ferramenta para criar applets para a World Wide Web. Applet é o termo que Java utiliza para uma miniaplicação que é executada dentro de uma página Web.

2 JAVA

3 Características Parecida com C++ Compilada Portável
Orientada a objetos Segura Suporte a concorrência Suporte a sistemas distribuídos

4 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.

5 Ambiente de Runtime Carregador de Classes
O carregador de classe carrega todas as classes necessárias para a execução de um programa sejam elas locais ou da rede. As classes locais sempre serão carregadas primeiro. Uma vez que todas as classes estiveram carregadas, o código executável é determinado. Neste momento são nomeados endereços de memória específicos protegendo contra o acesso sem autorização nas áreas fora da JVM. Verificador de ByteCode O código Java passa em vários testes antes de ser executado em sua máquina. O JVM põe o código em um verificador de bytecode que testa o formato dos fragmentos de código e checa para não permitir violamento de ponteiros, direitos de acesso em objetos, ou tentar mudar o tipo do objeto. Verificando Processos O verificador de bytecode faz quatro passagens no código de um programa. Assegura que o código adere às especificações de JVM e não viola integridade de sistema. Se o verificador completar todas as quatro passagens sem devolver uma mensagem de erro, então o seguinte é assegurado: As classes aderem ao formato de arquivo de classe da especificação de JVM. Não há nenhuma violação de acesso a recursos restritos. O código não causa nenhum estouro de pilha. São conhecidos os tipos de parâmetros. Nenhuma ocorre nenhuma conversão ilegal de dados.

6 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 }

7 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.

8 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

9 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

10 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;

11 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);

12 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 }

13 Tipos Básicos boolean verdade = true; String texto = "aeiou";
char letra = ‘a’; int idade = 31; long premio = ; float peso = 80.5 double distancia =

14 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

15 Variáveis Tipos primitivos Tipos de referência
Locais: dentro de métodos Atributos ou variáveis membro: dentro da classe

16 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.

17 Operadores + - * / % == != !(expressão lógica) && ||
+ - * / % == != !(expressão lógica) && || < > <= >= (expressão lógica) ? valor1:valor2

18 Concatenação de Strings
O operador + concatena Strings, criando uma nova String String saudacao = "Dr. "; String nome = "Pedro " + "Silva"; String titulo = saudacao + nome;

19 Casting int d long a a = d; // faz uma conversão implícita
d = (int) (a); // precisa conversão explícita

20 Instruções Condicionais
Comando if if (nota > 7 && falta < 18) { aprovado=true; } else { aprovado=false; }

21 Instruções Condicionais
Comando switch switch (valor) { case 1: instruções; break; case 2: default: } A expr1 deve conter um valor do tipo int, byte, short, ou char. Não são permitidos pontos flutuantes, expressões do tipo long e referências de classes.

22 Instruções de Loop Permite a execução repetida de blocos
for (int i=0; i<10; i++) { instrução ou bloco; }

23 Loop // testa antes de executar while (boolean) { instrução ou bloco;
} // executa pelo menos uma vez do { } while (boolean test);

24 Controles Especiais break ou break com rótulo
continue ou continue com rótulo

25 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.

26 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.

27 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;

28 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;

29 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.

30 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;

31 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();

32 Inicializando Arrays Ponto array[] = { 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();

33 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];

34 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.

35 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);

36 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.

37 Classes e Objetos Princípios dos Objetos Organizar dados e algoritmos
Encapsulamento Polimorfismo Herança

38 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)

39 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";

40 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); }

41 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.

42 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>] { .... }

43 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

44 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.

45 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

46 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 );

47 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!

48 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.

49 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.

50 Sobrecarregando Métodos
public void println(int i) public void println(float f) public void println( )

51 Exercício Crie uma classe chamada Lampada com um atributo boleano para indicar se ela está acesa ou apagada. Defina um método para ligar, um para apagar e outro para mostrar o estado da lampada. No método main crie um objeto para classe Lampada, ligue a lampada e mostre seu estado. Crie uma classe chamada ContaBancaria.java que represente atributos e operações de uma conta bancária. A conta deve ter os atributos cliente (String), número (int), saldo (double) e especial (boolean). A conta deve ter as operações depósito e saque. A operação depósito só pode aceitar valores positivos. A operação saque só pode aceitar valores menores que o saldo, mas se a conta for especial ela pode aceitar valores menores que o saldo mais 1000 reais.

52 Exercícios Crie uma classe chamada Terminal que no método main faça o seguinte: criar um objeto para classe ContaBancaria, definir valores para seus atributos, depositar 2000 reais, sacar 1200 reais, mostrar o saldo, sacar 1000 reais, definir como conta especial, sacar 1000 reais novamente e mostrar o saldo.

53 Construindo e Inicializando Objetos
Utilizar a função new NomeDaClasse() O que acontece? Aloca espaço em memória para o objeto Inicializa as variáveis da classe Executa o construtor

54 Construindo e Inicializando Objetos

55 Construtores Métodos especiais Possuem o mesmo nome que a classe
Recebem ou não argumentos Não possuem tipo de retorno Os argumentos são fornecidos entre os parenteses que seguem o nome da classe Toda classe tem um construtor

56 Exemplo de Construtores
public class Empregado { private String nome; private int salario; public Empregado(String n, int s) { nome = n; salario = s; } public Empregado(String n) { this(n, 0); public Empregado( ) { this("Não definido");

57 Usando diferentes construtores
Empregado objeto1 = new Empregado("Pedro",1500); Empregado objeto2 = new Empregado("Paulo"); Empregado objeto3 = new Empregado();

58 Pacotes Pacote são grupos de classes relacionadas
Use a declaração de pacote package para relacionar a classe a um pacote Use a declaração de importação import para indicar ao compilador onde achar as classes

59 Exercício Redefina a classe Lampada com um construtor que cria uma lampada no estado aceso (boleano igual a true). Redefina a classe Lampada no pacote auto.eletrico. Escreva a classe Carro no pacote auto com 2 atributos do tipo Lampada: um chamado farolEsquerdo e outro farolDireito. Defina métodos na classe Carro para acender e apagar os faróis e um método chamado mostra() que mostra se os faróis estão acesos ou não. No método main crie um objeto para classe Carro, execute o método que acende os faróis e execute o método mostra(). Compile e execute a classe Carro. Onde está a classe Carro e a classe Lâmpada em relação a pasta raiz?

60 O que é Herança? A partir de um modelo de uma classe criar uma versão especializada do modelo. Por exemplo, você tem um modelo para classe Empregado e quer criar um modelo para Gerente. O Gerente é um Empregado com características adicionais.

61 Modelo da Classe Empregado
public class Empregado { String nome; Date admissao; Date nascimento; }

62 Modelo da Classe Gerente
public class Gerente { String nome; Date admissao; Date nascimento; String cargo; int nivel; String departamento; Empregado surbordinados[ ]; } Este exemplo ilustra a duplicação de dados entre a classe Gerente e a classe de Empregado. Adicionalmente, poderia haver vários métodos que seriam aplicáveis a Empregado e a Gerente. Você precisa de uma maneira para criar uma classe nova a partir de uma classe já existente; chamada subclasse.

63 A palavra chave Extends
public class Empregado { String nome; Date admissao; Date nascimento; } public class Gerente extends Empregado { String cargo; int nivel; String departamento; Empregado surbordinados[ ]; Neste exemplo, a classe de Gerente é definida para ter todas as variáveis e métodos que um Empregado tem. São herdados todas as variáveis e os métodos da definição da classe pai.

64 Herança Se Gerente estende a classe Empregado, ele tem todas as variáveis e métodos da classe Empregado. Qualquer operação válida para Empregado também é válida para Gerente

65 Herança Simples Java permite estender somente uma classe
Herança simples torna o código menos confuso Você pode ter vários níveis na hierarquia Construtores não são herdados

66 Polimorfismo Criar uma classe a partir de outra com herança permite o polimorfismo do objeto, ou seja, manipular o objeto por classes diferentes. Um objeto tem só uma forma, mas pode ser referenciado pelas superclasses. Em Java a classe Object é a classe pai para todas as outras classes

67 Polimorfismo Object geral; geral = new String("texto");
geral = new Empregado(); Isso é possível, pois Empregado é uma subclasse de Object. public class Empregado extends Object public class Gerente extends Empregado Java permite referênciar um objeto com uma variável que é um dos tipos da classe pai. Empregado teste = new Gerente( );

68 Coleções Heterogêneas
Empregado equipe[ ] = new Empregado [1024]; equipe[0] = new Gerente( ); equipe[l] = new Empregado( );

69 Polimorfismo de Argumentos
// na classe Empregado public Imposto calculaImposto(Empregado e) { //calcula e retorna a faixa de imposto } // em outra classe Gerente objeto = new Gerente( ); Imposto ir = calculaImposto (objeto);

70 Operador instanceof Esta função permite verificar se um objeto é um instância de determidada classe. public void method(Empregado emp) { if (emp instanceof Gerente) { // traz o salário } else if (emp instanceof Contratado) { // traz o valor da horas else { // empregado normal

71 Convertendo Objetos public void method(Empregado emp) {
if (emp instanceof Gerente) { Gerente objeto = (Gerente)emp; System.out.println("This is the Gerente of " + objeto.departamento); } // resto da operação

72 Sobrescrevendo Métodos
Permite redefinir o comportamento de um método herdado da classe pai Deve ter a mesma assinatura do método na classe pai

73 Sobrescrevendo Métodos
public class Empregado { String nome; int salario; public String getDetalhes( ) { return "Nome: " + nome + "\n" + "Salario: " + salario; } public class Gerente extends Empregado { String departamento; "Gerente de " + departamento;

74 Sobrescrevendo Métodos
Empregado objetoEmpregado = new Empregado( ); Gerente objetoGerente = new Gerente( ); Ao invocar objetoEmpregado.getDetalhes( ) e objetoGerente.getDetalhes ( ), eles executarão, respectivamente, o método getDetalhes( ) da classe Empregado e getDetalhes ( ) da classe Gerente.

75 Sobrescrevendo Métodos
Empregado objeto = new Gerente( ); objeto.getDetalhes ( ) o método a ser chamado será o da classe Gerente, pois você apenas criou uma variável do tipo Empregado, mas o objeto é um Gerente.

76 Regras para Sobrescrever
Tipo de retorno deve ser igual ao pai Não pode ser menos acessível que o pai Não pode lançar exceções diferentes

77 Sobrescrevendo Métodos
public class Pai { public void metodo ( ) { } public class Filho extends Pai { private void metodo ( ) { // ilegal

78 Referência super Está disponível em todos os métodos não-estáticos e construtores. É uma referência ao objeto pelo modelo da superclasse. A execução de super.metodo() utiliza a implementação do método na superclasse.

79 super public class Gerente extends Empregado {
private String departamento; public String getDetalhes( ) { // chama metodo da superclasse return super.getDetalhes( ) + “ Departamento: " + departamento; }

80 Construtores da classe Pai
Você pode construir parte ou todo objeto pelo modelo da classe pai. Invoque o construtor da classe pai com super na primeira linha do construtor da classe filho.

81 Construtor da classe Pai
public class Empregado { String nome; public Empregado(String n) { nome = n; } public class Gerente extends Empregado { String departamento; public Gerente(String s, String d) { super( s ); departamento = d;

82 Exercício 1. Redefina a abstração de uma conta corrente em duas classes: ContaSimples e ContaEspecial. A classe ContaSimples tem os atributos cliente, número e saldo. As operações são: public void deposito(double valor), public void saque(double valor), public boolean temSaldo(double valor) e public void mostraSaldo(). A classe ContaEspecial, além de ser uma conta simples, tem um limite que é uma variável do tipo double. A operação temSaldo da ContaEspecial deve levar em conta este limite. Faça uma classe chamada GerenciaConta, e no método main teste as classes ContaSimples e ContaEspecial.

83 Características da Linguagem
Variáveis, métodos e código estáticos Orientado a objetos Classes, métodos e variáveis final Classes abstratas e interfaces Controle de acesso Classes internas e wrappers (envelopes)

84 Variáveis Estáticas Variáveis compartilhadas entre todas as instâncias de uma classe É semelhante a uma variável global em outras linguagens Se a variável não for private, ela pode ser acessada pelo nome da classe: NomeDaClasse.nomeDaVariavel

85 Variáveis Estáticas public class CEP {
public static final int R_XV = 89200; public static final int R_AMERICA = 89201; } public class Correio { public void metodo( ) { int x = CEP.R_XV;

86 Métodos Estáticos public class Quadrado {
public static int calculaArea(int x, int y) { return x * y; } public class Grafico { public static void main( String[] a) { int a = 9; int b = 10; int c = Quadrado.calculaArea(a, b); System.out.println("Area é igual a " + c);

87 Código Estático Uma classe pode conter blocos de código estático.
Este código executa apenas uma vez quando a classe é carregada. Se houver mais que um bloco estático, eles são executados na ordem que aparecem na classe.

88 Exercícios Defina uma classe chamada Matemática com dois métodos estáticos: um método chamado maior(int x, int y) que retorna o valor do maior parâmetro e outro método chamado menor(int x, int y). Crie uma classe Compara onde o usuário informa dois valores e o programa mostra o valor maior e o menor usando os métodos da classe Matemática do exercício anterior.

89 Dados e métodos OO Um sistema OO consiste de objetos
Objetos são criados a partir das classes Os atributos são definidos por variáveis O comportamento é definido pelos métodos Os objetos da mesma classe tem as mesmas características, mas cada objeto é diferente

90 Orientados a Objetos public class Carro { String cor; String modelo;
public Carro (String cor, String modelo) { this.cor = cor; this.modelo = modelo; } public void mostra( ) { System.out.println ("Isto é um " + modelo + cor + ".");

91 Orientados a Objetos Car vectra = new Car("Branco","Vectra");
Car corsa = new Car("Prata","Corsa"); A orientação a objetos é ilustrada pelo fato que ambos os objetos têm dados separados, embora ambos sejam carros. vectra.mostra( ) imprimirá "Isto é um Vectra Branco." corsa.mostra( ) imprimirá "Isto é um Corsa Prata."

92 Classes final Um classe final não pode ser extendida
Não podemos declarar uma subclasse para uma classe final public final class Caixa { ... } public class Caixa2 extends Caixa { //ilegal

93 Métodos final Um método final de uma classe não pode ser sobrescrito nas suas subclasses Segurança Otimização public class Folha { public final double calculaSalario() {...} } public class FolhaModificada extends Folha{ public double calculaSalario(){...}//ilegal

94 Variáveis final Uma variável final é uma constante
Qualquer tentativa de mudar o valor causa erro public final int CODIGO_BRASIL = 55;

95 Classes Abstratas Uma classe abstrata define apenas parte da implementação Não podemos criar objetos para uma classe abstrata Deixamos as subclasses fornecerem a implementação que falta da classe abstrata

96 Classes Abstratas public abstract class PecaXadrez { public abstract boolean movimentoValido(int x, int y); public void move(int x, int y) { if (movimentoValido(x,y)) { // faz movimento } else { // erro } A classe PecaXadrez declara a existência do método movimentoValido mas não o implementa.

97 Classes Abstratas Subclasses de classes abstratas têm que implementar todos os métodos abstratos declarados na classe pai. Caso contrário elas também serão classes abstratas. public class Rainha extends PecaXadrez { public boolean movimentoValido(int x, int y){ // faz consistência do movimento para a Rainha } public class Rei extends PecaXadrez { // faz consistência do movimento para o Rei

98 Exercícios Defina uma classe Conta com os métodos saque e deposito (iguais ao da classe Conta Simples) e um método abstrato chamado boolean temSaldo(double valor). Redefina a classe ContaSimples com relacionamento de herança com a classe Conta. Implemente o código do método temSaldo na classe ContaSimples.

99 Interfaces Uma interface não tem implementação, todos os métodos são abstratos. Uma interface pode definir variáveis estáticas do tipo final (constantes) public interface Cor {   public int getCor( ); public void setCor(int cor); }

100 Múltiplas Interfaces A classe pode estender apenas uma classe, mas implementar múltiplas interfaces

101 Interfaces A classe que implementa uma interface deve definir os métodos da interface interface ObjetoSeguro { void abre(int segredo ); } class Cofre implements ObjetoSeguro { void abre(int segredo ) { if (segredo == 1234) { System.out.println("Cofre Aberto");

102 Exercícios Defina uma interface chamada Bancaria, tendo três métodos: deposito, saque e mostraSaldo. Redefina a classe, Conta.java, usando a interface Bancaria para definir tipos de contas diferentes.

103 Controle de Acesso Java tem quatro níveis de acesso: public protected
Default (quando é omitido) private

104 Controle de Acesso

105 Comparação Operador == compara tipos primitivos
O método equals compara objetos

106 toString O método toString() faz parte de todos os objetos em java por ser um método da classe Object Sobrescrevendo o comportamento deste método podemos definir uma representação de um objeto como uma String

107 toString class Ponto { int x, y; public String toString() {
return "Ponto(" + x + "," + y + ")"; }

108 Classes Internas Uma classe interna é uma definição de classe dentro de outra classe Defina uma classe como classe interna se ela não tem utilidade fora da classe que a contém.

109 Classes Wrappers Uma classe wrapper é uma representação de um tipo primitivo como um objeto Cada tipo primitivo possui seu wrapper Wrapper são úteis se você trabalha com classes e métodos que só aceitam objetos como argumentos

110 Wrappers int pInt = 500; Integer wInt = new Integer(pInt);
int p2 = wInt.IntValue( );

111 Exercício Crie uma classe chamada SistemaSolar. No SistemaSolar crie a classe interna chamada Planeta com os atributos nome e distanciaDoSol. Defina um array de Planeta para o SistemaSolar. No construtor de SistemaSolar defina objetos para o array. Crie o método mostrePlanetas para o SistemaSolar. No método main crie um objeto da classe SistemaSolar e chame o método mostrePlanetas.

112 Exceções Mecanismo para tratar os erros durante a execução do programa. Exceções são classes que representam erros durante a execução de um programa java. Os objetos que representam as exceções podem ser “lançados”, capturados e manipulados.

113 Condições de Erro Tentar abrir um arquivo que não existe
Tentar usar uma conexão de rede interrompida Tentar acessar posição de arrays fora da faixa Tentar carregar uma classe que não está no classpath

114 Exemplo public class Semaforo {
public static void main (String args[ ]) { int i = 0; String semaforo [ ] = {"Verde", "Amarelo","Vermelho"}; while (i < 4) { System.out.println (sinais[i]); i++; } Ao executar o resultado é java Semaforo Verde Amarelo Vermelho java.lang.ArrayIndexOutOfBoundsException: 3 at Semaforo.main(Semaforo.java:12)

115 Instruções try e catch Conta c = new Conta(); try { c.saque(100);
} catch (EstouroSaqueException e) { System.out.println("Erro: " + e.getMessage() ); } c.mostraSaldo();

116 Aplicando o try/catch public class Semaforo {
public static void main (String args[ ]) { int i = 0; String semaforo [ ] = {"Verde", "Amarelo","Vermelho"}; while (i < 4) { try { System.out.println (sinais[i]); catch (Exception e) { break; } i++;

117 Instrução finally A instrução finally define um bloco de código que sempre será executado, mesmo que uma exceção seja lançada ou não: boolean transacaoOk = false; try { abreTransacao( ); debito.saque ( valor ); credito.deposito( valor ); transacaoOk = true; } finally { if ( transacaoOk ) fechaTransacao( ); else desfazTransacao( ); }

118 Instrução throw e clausula throws
public void deposito(double valor) throws DepositoInvalidoException { if (valor > 0) { saldo = saldo + valor; } else { throw new DepositoInvalidoException("Este valor é invalido para depósito: " + valor); }

119 Categorias de Exceção Throwable Error Exception RuntimeException

120 Tratar ou lançar? O tratamento de exceções pode ser de 2 modos:
Tratar dentro do próprio método usando try,catch e finally Lançar para quem chamou o método onde a exceção foi gerada usando a clausula throws

121 Criando Exceções public class DepositoInvalidoException extends Exception { public DepositoInvalidoException (String motivo) { // chama construtor da classe pai super(motivo); }

122 Exercício 1.Crie as seguintes exceções no pacote erros:
a. EstouroSaqueException - Acontece quando é feita uma tentativa de tirar mais dinheiro do que a conta possui. b. DepositoInvalidoException – Acontece quando uma quantia inválida de dinheiro (quantia < zero) é depositada. 2.Reescreva as operações de saque e depósito para lançar estas exceções.

123 Calendário e Datas A classe java.util.Date representa uma data e a classe java.util.Calendar representa um calendário para trabalhar com as datas. Date hoje = new Date(); Calendar c = Calendar.getInstance();

124 Formatando Datas Para formatar datas em java use a classe java.text.SimpleDateFormat. Esta classe possui dois métodos básicos: parse(String) para converter um texto em uma data e format(Date) para formatar a data em um texto. Por exemplo: SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm"); String texto = sdf.format(new Date()); Date dia = sdf.parse("16/06/ :00");

125 Calculando Datas A classe Calendar permite a definição de data com o método set e o cálculo de datas com o método add(int, int). Por exemplo:

126 Coleções O java tem um framework de coleções que inclui listas, conjuntos e mapas. As operações básicas ao usar as coleções são: adicionar objetos remover objetos verificar se existe um objeto recuperar um objeto percorrer os objetos um a um

127 Principais Interfaces
As coleções se dividem em três categorias básicas: Listas: Listas de objetos Set: Conjuntos de objetos únicos Maps: Objetos com uma identificação única Coleções Ordered e Sorted

128 Principais Métodos List: add(Object value), get(int i)
Set: add(Object value), contains(Object) Map: put(Object key, Object value) e get(Object key)

129 Exercícios Crie uma classe chamada Agenda que guarde o nome e o telefone de pessoas como objetos String em um HashMap, adicione 5 nomes e telefones e depois mostre o telefone de uma das pessoas. Cria uma classe chamada Equipes para armazenar nomes de equipes em um ArrayList. O programa deve pedir para o usuário digitar os nomes das equipes até o usuário digitar "fim". O programa então mostra os nomes das equipes digitados pelo usuário.


Carregar ppt "JAVA Linguagem Ambiente de Desenvolvimento"

Apresentações semelhantes


Anúncios Google