Você está na página 1de 71

Programação Orientada a Objetos

Professor Raimundo Osvaldo


Departamento de Computação
IFMA/ Campus São Luís – Monte Castelo
Aula 04 OBJETIVOS
1. Conhecer a estrutura de um

Conhecendo a Linguagem arquivo fonte Java;


2. Conhecer os tipos primitivos de
Java Java;
3. Saber as regras de escopo de
variáveis;
4. Conhecer e utilizar operadores
aritméticos, lógicos e
relacionais;
5. Entender a conversão de tipos
em atribuições e expressões;
6. Conhecer e utilizar as
estruturas de controle de Java
Referências
SCHILDT, Herberth. Java para Iniciantes. Porto Alegre: Bookman, 2013.
MENDES, Douglas Rocha. Programação Java com Ênfase em Orientação
a Objetos. São Paulo: Novatec, 2009.
DEITEL, Paul; DEITEL, Harvey. Java como Programar 8 ed. São Paulo:
Pearson, 2010
CAELUM. FJ-11: Java e Orientação a Objetos. 2018.
SIERRA; BATES. Java: Use a Cabeça. Rio de Janeiro: Altabooks,
2005
Estrutura de Código do Java

Arquivo-Fonte
public class Conta {
Arquivo de Classe
}
Classe
Método 1
instrução
public class Conta {

void depositar() {
Método 1
instrução 1 }
instrução 2 }
Método
Estrutura de Código do Java

Arquivo-Fonte public class Conta {

Arquivo de Classe void depositar() {

instrução 1;
Método 1
instrução 2;
instrução ...

}
Método 1 }
Instruções
instrução 1
instrução 2
Alô, mundo!
Um comentário /*
de bloco Este é um programa Java Simples
Chame este arquivo de Programa1.java
*/
Insere a definição de class Programa1{
uma nova classe

Um comentário //Um programa Java começa com chamada a main()


de linha
public static void main(String[] args){
System.out.println("Oi, Java!");
}
Execução do
Programa }

Oi, Java!
O método main em detalhes
public static void main(String[] args)

Vetor de strings
Usado quando o método que recebe os
não retorna valor. argumentos
passados ao
programa.
Indica que o método deve
ser compartilhado por todos
os objetos criados a partir Método principal.
desta classe Obrigatório em
aplicações, pois indica
Significa que a classe ao compilador o início
ou método é acessível da execução da linha
externamente a esta
classe.
Saída do Console
System.out.println("Oi, Java!");

Método que exibe a String que


recebe como parâmetro

Fluxo de saída conectado


ao console.

Classe pré-definida que


dá acesso ao sistema.

Objeto que encapsula a saída do


System.out console.
Programa Java
Em Java, o nome dado a um arquivo-fonte é muito
importante.

Arquivo-fonte = Unidade de Compilação

❖ Em Java, todo o código deve “morar” dentro de uma classe.


❖ O nome da classe principal deve coincidir com o nome do
arquivo-fonte.
Boas Práticas de Programação
Convenção para Nomes
Nomes de Classes
Substantivos que iniciem com letra maiúscula.
Se o nome consistir em múltiplas palavras, cada palavra inicia com
letra maiúscula (Notação Camelo).
Exemplo: class MinhaClasse
Nomes de Arquivos Fonte
Deve ser exatamente o mesmo que o da classe pública com a
extensão .java anexada
Exemplo: MeuPrograma.java
Boas Práticas de Programação
Convenção para Nomes
Nomes de Variáveis
Iniciam com letras minúsculas e seguem a notação camelo.
Exemplo: double notaDoAluno

Nomes de Métodos
São “verbos” e iniciam com letras minúsculas e seguem a notação
camelo.
Exemplo: void alteraNota()
Como Compilar e Executar
Compilação Execução
javac java
A partir do diretório local A partir do diretório local
javac Nome.java java Nome
Vai produzir Arquivos .class Nome = arquivo .class que
separados para cada classe contém o método main()
no arquivo Nome.java
Coloca os arquivos no diretório
Executa a partir de main()
corrente. Ou com argumentos
Java Nome arg1 arg2
O que pode dar errado?
Erros de Sintaxe
Java é case-sensitive
Esquecer “ ; ”
Escrever palavras reservadas com
letras maiúsculas.
Esquecer de abrir e fechar { }

O compilador Java tenta entender o código-fonte


independente do que foi escrito.
O erro indicado nem sempre reflete a causa real do problema.
O que pode dar errado?
Como regra, ao encontrar muitas mensagens de erros
devemos corrigir o primeiro erro da lista e tentar
compilar novamente.

Exemplo
Programa1.java:8: ‘;’ expected
public static void main(String[] args)
^
Programa1.java:11: class, interface, or enum
expected
}
^
O que pode dar errado?
Erros de Execução
Se você declarar uma classe como X, compilá-la e depois
tentar usá-la como x minúsculo, o Java te avisa:
Exception in thread "main"
java.lang.NoClassDefFoundError: X (wrong name: x)

Se tentar acessar uma classe no diretório errado, ou se o


nome estiver errado, ocorrerá o seguinte erro:
Exception in thread "main"
java.lang.NoClassDefFoundError: X
Mais um exemplo
Podemos concatenar dois ou mais strings usando o
operador “+”
public class Programa2{

public static void main(String[] args){


System.out.println("Oi," + "Java!");
}

Oi, Java!
Mais um exemplo
Para escrever um número, basta escrever [string] + n

public class Programa3{

public static void main(String[] args){


System.out.println("Numero: " + 10);
}

O número é convertido em
String e, em seguida, as
strings são concatenadas
Mais um exemplo
Para escrever um número, basta escrever [string] + n

public class Programa3{

public static void main(String[] args){


System.out.println("Numero: " + 10);
}

Numero: 10
Mais um exemplo
public class Programa4 {

public static void main(String[] args){


int var1;
int var2;

var1 = 1024;
System.out.println("var1: " + var1);

var2 = var1/2;
System.out.println(var2);
}
}

var1: 1024
512
Mais um exemplo
public class Programa5{

public static void main(String[] args){


int var1 = 10;
int var2 = 5;

System.out.println(“Soma: " + var1 + var2);


}
}

Qual será a saída?


Mais um exemplo
public class Programa5{

public static void main(String[] args){


int var1 = 10;
int var2 = 5;

System.out.println(“Soma: " + var1 + var2);


}
}

Soma: 105
Mais um exemplo
public class Programa5{

public static void main(String[] args){


int var1 = 10;
int var2 = 5;

System.out.println(“Soma: " + var1 + var2);


}
}

Será considerado tudo como


String devido a String
“Soma: ”
Mais um exemplo
public class Programa5{

public static void main(String[] args){


int var1 = 10;
int var2 = 5;

System.out.println(“Soma: " + var1 + var2);


}
}

E se quisermos exibir a
soma?
Mais um exemplo
public class Programa5{

public static void main(String[] args){


int var1 = 10;
int var2 = 5;

System.out.println(“Soma: " + (var1 + var2));


}
}

Soma: 15
Mais um exemplo
public class Programa5{

public static void main(String[] args){


int var1 = 10;
int var2 = 5;

System.out.println(“Soma: " + (var1 + var2));


}
}

Será considerado o tipo dos operandos,


que é int. O resultado, então, será usado
como String pelo outro operador
Tipos de Dados em Java
Tipos PRIMITIVOS e Tipos OBJETO

Nativos da linguagem Armazenados nas referências


Armazenados diretamente nas ao objeto
variáveis Semântica de referência
Semântica de valor (Controle Remoto)

Quando atribuímos a outra


Os valores são copiados quando
variável apenas a referência é
atribuídos a outra variável
copiada e não o objeto
Tipos Primitivos

Tipo de Dado Tipo (Java) Tamanho (bits)/ Formato


Caractere char 16/ Caractere Unicode
byte 8
short 16
Inteiro
int 32
long 64
float 32/ IEEE 754 floating point
Ponto Flutuante
double 64/ IEEE 754 floating point
Lógico boolean 8
Notas Importantes sobre Tipos
Primitivos
Um número sem ponto decimal é geralmente interpretado como um
int, mas automaticamente convertido em tipos byte, short ou
long quando atribuídos
23 -2 5403
É possível declarar um literal como long colocando um L depois do
número
55L
Um caractere pode ser escrito como um único caractere entre aspas
simples ou como valor UNICODE de 4 dígitos, precedidos por ‘\u’
‘m’ ‘?’ ‘\u00F6’
Variáveis Primitivas
O tamanho das variáveis (em bits) é vinculado ao seu tipo

8 bits 32 bits
boolean int
byte float

16 bits 64 bits
char long
short double
Variáveis Primitivas
Declaração de Variáveis
Reserva-se na memória um espaço suficiente para guardar um valor
do tipo declarado

<tipo de dado> <nome> [= valor inicial];

boolean resultado;
char opcao = 's';
double notaDoAluno;
Escopo de Variáveis
Quando abrimos um novo bloco com as chaves, as variáveis
declaradas ali dentro só valem até o fim daquele bloco

//aqui a variável i não existe


int i = 5;
// a partir daqui ela existe
while (condicao) {
// o i ainda vale aqui
int j = 7;
// o j passa a existir
}
// aqui o j não existe mais, mas o i continua a valer
Operadores Aritméticos
FONTE: MENDES, 2009, p.38

Operador Uso Descrição


+ op1 + op2 Soma op1 com op2

– op1 – op2 Subtrai op1 de op2

* op1 * op2 Multiplica op1 por op2

/ op1 / op2 Divide op1 por op2

% op1 % op2 Resto da divisão de op1 por op2


Operadores de Incremento e Decremento
FONTE: MENDES, 2009, p.40

Operador Uso Descrição


Incrementa op em uma unidade após o uso do
op++
valor da variável na expressão em que aparece.
++
Incrementa op em uma unidade antes do uso do
++op
valor da variável na expressão em que aparece

Decrementa op em uma unidade após o uso do


op--
valor da variável na expressão em que aparece.
--
Decrementa op em uma unidade antes do uso do
--op
valor da variável na expressão em que aparece
Operadores Relacionais
FONTE: MENDES, 2009, p.41

Operador Uso Descrição


> op1 > op2 op1 é maior que op2

>= op1 >= op2 op1 é maior ou igual a op2

< op1 < op2 op1 é menor que op2

<= op1 <= op2 op1 é menor ou igual a op2

== op1 == op2 op1 é igual a op2

!= op1 != op2 op1 é diferente de op2


Operadores Relacionais
FONTE: MENDES, 2009, p.41

Operador Uso Descrição


> op1 > op2 op1 é maior que op2

>= op1 >= op2 op1 é maior ou igual a op2

< op1 < op2 op1 é menor que op2

<= op1 <= op2 op1 é menor ou igual a op2

== op1 == op2 op1 é igual a op2

!= op1 != op2 op1 é diferente de op2


Exemplos
public class Programa6{

public static void main(String[] args){

int x = 3;
int y = 25;
boolean resultado = x == y;
System.out.println(resultado);

}
}

false
Exemplos
public class Programa7{

public static void main(String[] args){

int x = 3;
int y = 25;
int resultado = y % x;
System.out.println(resultado);

}
}

1
Exemplos
public class Programa8{

public static void main(String[] args){

int x = 3;
int y = 25;
int resultado = y % x++;
System.out.println(resultado);
System.out.println(x);

}
}

1
4
Exemplos
public class Programa8{

public static void main(String[] args){

int x = 3;
int y = 25;
int resultado = --y % x;
System.out.println(resultado);
System.out.println(y);

}
}

0
24
Exemplos
public class Programa9{

public static void main(String[] args){

int x = 3;
int y = 25;
boolean resultado = x > 4 & x != y;
System.out.println(resultado);

}
}

false
Exemplos
public class Programa10{

public static void main(String[] args){

int x = 3;
int y = 25;
boolean resultado = !(x > 4) & x != y;
System.out.println(resultado);

}
}

true
Conversão de Tipos
Algumas vezes é necessário converter um valor de um tipo
primitivo em um valor de outro tipo primitivo

Casting ou Coerção

▪ Caso 01 tipo maior para tipo menor: o casting deve ser explícito
▪ Caso 02 tipo menor para tipo maior: casting automático
Conversão de Tipos
double d = 3.1415;
int i = d;

double

int
// não compila 3.1415

d i

double d = 5;
int i = d;
double

int
// não compila 5.00

d i
Conversão de Tipos
double d = 3.1415;
int i = (int) d;

double

int
// casting explícito 3.1415 3

d i

double d = 5;
int i = (int) d;
double

int
// casting explícito 5.00 5

d i
Conversão de Tipos
int i = 5;
double d = i;
// casting automático

double
int
5 5.00

i d

byte a = 4;
int b = a;
// casting automático byte

int
5 5
a
b
Conversão de Tipos
long x = 1000;
int i = x;

long

int
// não compila 1000

x i

long x = 1000;
int i = (int) x;
long

int
1000 1000
// casting explícito

x i
Conversão de tipos
Casos não comuns de casting e atribuição

float x = 0.0;

Você acha que compila?


Conversão de tipos

Não compila, pois todos os literais


com ponto flutuante são
considerados double pelo Java

Solução

float x = 0.0f;
Conversão de tipos

Não compila, pois todos os literais


com ponto flutuante são
considerados double pelo Java

Solução

float x = 0.0f;
Conversão de tipos
A letra L (maiúscula ou minúscula), indica que o literal deve ser
tratado como long

long x = 0.0L;

Outro Exemplo

double x = 5;
float y = 3;
float z = (float) x + y;
O valor da variável x é convertido
para float e, então, é somado
com o valor da variável y.
Conversão de tipos
int x = 5; x == 5
int y = 3; y == 3
double z = x / y; z == 1.0

A conversão é realizada sobre o resultado da divisão


inteira

int x = 5; x == 5
int y = 3; y == 3
double z = (double) x / y; z == 1.666

A conversão é realizada sobre o valor de x, a divisão


é calcula como um valor double.
Conversão de tipos
int x = 5; x == 5
int y = 3; y == 3
double z = x / (double) y; z == 1.666

A conversão é realizada sobre o valor de y, a divisão


é calcula com um valor double.

int x = 5; x == 5
int y = 3; y == 3
double z = (double) (x / y); z == 1.0

A conversão é realizada sobre o resultado da divisão


inteira
Conversão de tipos
Castings possíveis
PARA:
byte short char int long float double
DE:
byte --- autom. (char) autom. autom. autom. autom.
short (byte) --- (char) autom. autom. autom. autom.
char (byte) (short) --- autom. autom. autom. autom.
int (byte) (short) (char) --- autom. autom. autom.
long (byte) (short) (char) (int) --- autom. autom.
float (byte) (short) (char) (int) (long) --- autom.
double (byte) (short) (char) (int) (long) (float) ---
Sequências de Escape
FONTE: SCHILDT, 2013, p.40

Sequência Descrição
\’ Aspas Simples

\’’ Aspas Duplas

\\ Barra Invertida

\n Nova Linha

\t Tabulação Horizontal
Sequências de Escape
public class Programa4 {

public static void main(String[] args){

System.out.println(“\“Eu\n gosto\n de Java\””);

}
}

“Eu
gosto
de Java”
Definição de Constantes
Quando um item de dado não mudar durante a execução de um
programa, é boa prática definir este item como constante
A definição de constantes usa a mesma sintaxe que a declaração de
variáveis, sendo precedido pela palavra chave final

final tipoDeDado IDENTIFICADOR = valorAssumido;

É opcional atribuir um valor quando a constante é


declarada, mas você deve atribuir um valor antes de
usar a constante no programa
Definição de Constantes
Uma vez que o valor tenha sido atribuído a uma constante, este
valor não poderá ser alterado

Qualquer tentativa de alteração do valor de uma constante irá


gerar o seguinte erro:

cannot assign a value to final variable


Estruturas de Decisão

Controle Iteração
if ... else

true Condição false


lógica

Instruções Instruções
caso TRUE caso FALSE
if ... else
Sintaxe
if (<condição lógica>){
<instruções>;
}
else {
<instruções>;
}

int number = 0;
UM ERRO COMUM if (number){
NA UTILIZAÇÃO //instruções;
A condição if só avalia um }
valor lógico
switch

true Instruções
= valor 1 break;
Bloco 1
false

true Instruções
= valor 2 break;
Bloco 1
false

Bloco Default
switch
SINTAXE
switch (OP){
case valor1:
<instruções>;
break; OP é uma variável inteira,
case valor2: char ou String
<instruções>; Cuidado para não esquecer
break; de escrever a instrução
default: break
<instruções>;
}
while

Condição true Instruções


Lógica caso TRUE

false
while
Sintaxe
while (<condição lógica>){
<instruções>;
}

UM ERRO COMUM
NA UTILIZAÇÃO

while (true) {
System.out.println ("Loop Infinito");
}
do ... while

Instrução

Condição true
Lógica

false
do ... while
Sintaxe
do {
<instruções>;
} while(<condição lógica>);

UM ERRO COMUM
NA UTILIZAÇÃO
Esquecer o ponto vírgula no
final do bloco
for

Inicializa variável de
controle

true Incrementa
Condição
instruções variável de
Lógica controle

false
for
Sintaxe
for (declaração inicial; expressão lógica; incremento){
<instruções>;
}

ERROS COMUNS
NA UTILIZAÇÃO
Utilizar vírgulas em vez de ponto-e-vírgulas obrigatórios no
cabeçalho do for.
Não utilizar o operador relacional adequado na condição
de continuação do laço
Controle de Loops
Instrução break
Interrompe a execução do loop

for (int i = ; i < y; i++) {


if (i % 19 == 0) {
System.out.println("Achei um número divisível por
19 entre x e y");
break;
}
}
Controle de Loops
Instrução continue
Obriga o loop a executar a próxima iteração

for (int i = 0; i < 100; i++) {


if (i > 50 && i < 60) {
continue;
}
System.out.println(i);
}
Faça suas anotações

Hora do Café... Preencha o Mapa Conceitual


Quais as suas dúvidas?
Faça os Exercícios

Você também pode gostar