Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

40
Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo

Transcript of Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Page 1: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Laboratório de Java

Programação Básica em Java(Lab I)

Prof. Guido Araújo

Page 2: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Tipos de Dados

• Tipos primitivos– Lógico: boolean– Caracter: char (16)– Byte: byte (8) – Inteiros: short (16) < int (32) < long (64)– Floating-point: float (32) < double (64)– Void: void

Page 3: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Declarações e Definições

• Declaração de variáveis

– Tipo da variável e o seu nome int a;String s = “abcd”;

– Pode-se criar uma referência para um objeto String s = new String(“abcd”);

– Ou mesmo um invólucro Character c = new Character(letra);

Page 4: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Declarações e Definições (cont.)

• Campos

float saldoAtual;

String titular;

• Métodos

float getSaldo () {

código

}

Page 5: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Escopo

• Escopos encaixados são permitidos

{ int x = 12; // somente x está disponível { int q = 96; // ambos x & q disponíveis } // somente x disponível // q fora de escopo}

Page 6: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Escopo (cont.)

• Mas não é uma festa, como em C/C++ !

{ int x = 12; { int x = 96; } }

NÃO PODE !!

Page 7: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Escopo (cont.)

• Vida das variáveis– São criadas– Continuam vivas enquanto estiverem dentro do escopo– Depois o coletor-de-lixo se livra delas. Aleluia !!!

{

String s = new String(“oba”);

} // fim do escopo

s nasce

s morre

Page 8: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Coletor de Lixo

• De tempos em tempos varre o espaço livre jogando fora o que está fora de escopo

Page 9: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Operadores

• Operadores– Os mesmos comuns em outras linguagens: + - * / = – Precedência é matemática– Parênteses para forçar precedência e legibilidade

Page 10: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Mais Operadores (cont.)

• Atribuição: =

• Relacionais: > < >= <= == !=

• Bitwise (bit-a-bit): & (AND) | (OR) ~ (NOT) ^ (XOR)

• Lógicos: || &&

• Operador shift (deslocamento) x << y , x >> y

• Auto-incremento: i++ (pos) --i (pré)

Page 11: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Mais Operadores (cont.)

• Erro comum– Confundir = com ==

Page 12: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Mais Operadores (cont.)

• Concatenação de cadeias

int x = 0, y = 1, z = 2; String s = "x, y, z ";

System.out.println (s + x + y + z);

Page 13: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Controle da Execução

• if-else– Tipo boolean somente possue valores true ou false– expression é avaliado como boolean– expression pode ser qualquer expressão

Page 14: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Controle da Execução (cont.)

;

• while– expression é avaliada como tipo boolean– statement executa enquanto expression for true– Pode fazer operações dentro de expression

Page 15: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Controle da Execução (cont.)

• do-while– expression é avaliada como tipo boolean– statement executa sempre uma primeira vez– Enquanto expression for true execução continua

Page 16: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Controle da Execução (cont.)

• for-loop– initialization: inicializar o controle do laço– conditional: se true laço statement continua a executar– step: incrementa o controle do laço mais uma interação

Page 17: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Controle da Execução (cont.)

• switch– selector é avaliado como tipo int– statement selecionada executa de acordo com selector – break (opcional) faz saltar para o final da sentença– Se não for nenhum dos casos executa sentença em

default

Page 18: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Tipos Agregados de Dados (cont.)

• Arrays

– Declaração: int a[10];

– Acesso: a[5] = 47;

– Inicialização : a[] = { 13, 25, 83, 90 } b[] = { “casa”, “muito”, “bonita” }

Início em zero

Page 19: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

O que é um objeto ?

• Empacotando funções e dados em class• A class torna-se capaz de descrever

características ee comportamento

• Tipos de dados abstratos– A class permite definir um novo tipo de dado– Ela permite o programador abstrair o problema– O compilador trata o novo tipo da mesma maneira que

os tipos built-in– É como se a linguagem estivesse se adequando ao

problema…..

Page 20: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Classes

• Campos

• Métodos– Diferente de C/C++

– Definição interna

class ContaCor {

float saldoAtual;

void creditaValor (float val) {

saldoAtual = saldoAtual + val;

}

}

Page 21: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Instanciando, Criando e Acessando

class ContaCor {

float saldoAtual;

void creditaValor (float val) {

saldoAtual = saldoAtual + val;

}

}

:

ContaCor conta = new ContaCor();

conta.saldoAtual = 0.0f;

conta.creditaValor (10.0f);

Instancia objeto

Acessa campo

Acessa método

Page 22: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Um Programa Simples

// INF-300 Laboratório de Java

// HelloWorld.java

import java.util.*;

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello, it's: ");

System.out.println(new Date());

}

}

Importando utilitários

Imprimindo

Page 23: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Compilando e Executando

pedro> javac HelloWorld.java

pedro> java HelloWorld

HelloWorld.class

EXECUTA !!

Page 24: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Exercício 1

Do diretório acesso

• Implemente o programa HelloWorld.java

• Implemente um programa CriaConta.java que instancia uma conta, credita R$ 10 e imprime o saldo. Compile e execute.

Page 25: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Controle de Acesso

• Três modos de acessar membros de uma classe– public todas as declarações a seguir estão

disponíveis para todos

– private só o criador do tipo pode acessar estes membros

– protected mais tarde !!

Page 26: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Controle de Acesso (cont.)

class ContaCor {

private float saldoAtual;

}

:

ContaCor conta = new ContaCor();

conta.saldoAtual = 0;

:

Não funciona !!

Page 27: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Controle de Acesso (cont.)

class ContaCor {

public float saldoAtual;

}

:

ContaCor conta = new ContaCor();

conta.saldoAtual = 0;

Agora sim !!

Page 28: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Controle de Acesso (cont.)

public class ContaCor {

int saldoAtual;

String titular;

}

Tudo público

Page 29: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Métodos de Acesso (cont.)

class ContaCor {

private float saldoAtual;

void creditaValor (float val) {

saldoAtual = saldoAtual + val;

}

}

Acessa saldo

Page 30: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Exercício 2

Do diretório acesso

• Leia o programa TestaAcesso.java

• Faça saldoAtual ser privado. O que ocorreu ?

• Faça saldoAtual ser public. O que ocorreu ?

• (Extra) Estude o programa MetodoAcesso.java. Que vantagem ele oferece em relação à TestaAcesso.java ?

Page 31: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Armazenamento Estático

• static mantém o valor da variável durante execução

– Variável é inicializada somente na primeira chamada da função

– O valor que for armazenado permanece entre chamadas

– Variável não é disponível fora do escopo

Page 32: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Armazenamento Estático

class ContaCor {

static private float saldoAtual;

void creditaValor (float val) {

saldoAtual = saldoAtual + val;

}

}

Variável estática

Page 33: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Armazenamento Estático (cont.)

ContaCor conta1 = new ContaCor();

ContaCor conta2 = new ContaCor();

:

conta1.creditaValor (10.0f);

conta2.creditaValor (5.0f);

:

conta2 conta1

10.0

Page 34: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Armazenamento Estático (cont.)

ContaCor conta1 = new ContaCor();

ContaCor conta2 = new ContaCor();

:

conta1.creditaValor (10.0f);

conta2.creditaValor (5.0f);

:

conta2 conta1

10.0

Page 35: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Armazenamento Estático (cont.)

ContaCor conta1 = new ContaCor();

ContaCor conta2 = new ContaCor();

:

conta1.creditaValor (10.0f);

conta2.creditaValor (5.0f);

:

conta2 conta1

15.0

Page 36: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Método Estático

class ContaCor {

static private float saldoAtual;

static void getSaldo () {

return saldoAtual;

}

}

:

ContaCor.getSaldo();

:

Chamada da classe

Page 37: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Exercício 3

Do diretório acesso

1. Leia o programa StaticVar.java. Compile e execute. O que ocorreu ?

2. Altere saldoAtual para saldo estático e execute. O que ocorreu ?

3. (Extra) Estude o programa StaticMetodo.java. O que significa o método ser estático ?

Page 38: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Construtor

class ContaCor {

float saldoAtual;

}

:

ContaCor conta = new ContaCor();

conta.saldoAtual = 0.0;

:

Incializa saldo

Page 39: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Construtor (cont.)

class ContaCor {

float saldoAtual;

ContaCor (int val) {

saldoAtual = val;

}

}

:

ContaCor conta = new ContaCor(10.0f);

Cria objeto e Inicializa saldo

Page 40: Laboratório de Java Programação Básica em Java (Lab I) Prof. Guido Araújo.

Exercício 4

Do diretório acesso

1. Adicione um construtor a CriaConta.java que inicializa a conta com R$ 35. Compile e execute.