40
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

Embed Size (px)

Citation preview

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.