Você está na página 1de 51

Programação Orientada

a Objetos
Professor Vinícius Bortolini

Fundamentos da Linguagem | 1
Entrada e saída de dados

- Toda linguagem deve prover meios de interação com o


usuário;

- O meio básico é o uso do console:


- entrada via teclado e saída em texto, na tela;

- Outros meios: interface gráfica (janelas), páginas Web,


comando de voz, etc.

Fundamentos da Linguagem | 2
Entrada e saída de dados
- Formas para saída de dados
❑ print / println
❑ printf (formatada)
❑ JOptionPane

- Formas para entrada de dados


❑ Scanner
❑ “via linha de comando” (parâmetros)
❑ BufferedReader
❑ JOptionPane

Fundamentos I/O | 3
Saída de dados
print / println / printf

Fundamentos I/O | 4
Saída de dados

- Até agora vimos o método System.out.println


para escrever informações na tela (console).
- A linguagem Java oferece diversas formas de
interação com o usuário, a grande maioria em
janelas
- Para evitar a criação de uma interface
completa, pode-se utilizar as chamadas caixas
de diálogo.

Fundamentos I/O | 5
Saída de dados padrão

- System.out....
- O método print imprime um conjunto de dados e
posiciona o cursor no final deles
- O método println imprime um conjunto de dados e
posiciona o cursor na próxima linha
- Ambos são métodos sobrecarregados, ou seja, existem
várias versões destes métodos (funcionam para diferentes
tipos e quantidades de parâmetros)

- O método printf facilita a formatação do dado de saída –


semelhante a Linguagem C.

Fundamentos I/O | 6
Saída Padrão (print e println)

public class ExemploPrint1 {


public static void main(String[] args) {
String texto = “Programação Orientada a Objetos";
int ano = 2022;
System.out.print(texto); // imprime texto sem pular linha
System.out.print(" - IFSC "); // imprime texto sem pular linha
System.out.print(ano); // imprime um valor inteiro
System.out.println(); // pula uma linha
System.out.println("Prof. Vinícius Bortolini"); // imprime texto e pula linha
System.out.print("=======================================");
}
}

Saída:
Programação Orientada a Objetos - IFSC 2022
Prof. Vinícius Bortolini
==========================================

Fundamentos I/O | 7
Saída Padrão (print e println)

public class ExemploPrint2 {


public static void main(String[] args) {
String texto = "Programação Orientada a Objetos";
int ano = 2022;
System.out.println(texto + " - IFSC " + ano + "\n" + "Prof. Vinícius Bortolini");

System.out.print("=========================================="
);
}
}
Saída:
Programação Orientada a Objetos - IFSC 2022
Prof. Vinícius Bortolini
==========================================

A mesma saída foi conseguida utilizando menos comandos print e println.


Isto foi possível graças ao operador de concatenação de String (+) e a
sequência de escape (“\n”) que indica para pular linha.
Fundamentos I/O | 8
Concatenação de String
- A concatenação de String é realizada com o operador (+)

Sintaxe:

<String1> + <String2> = <String1String2>


<String> + <TipoDadoPrimitivo> = <StringTipoDadoPrimitivo>

O operador de concatenação (+) não adiciona espaço onde não existe, ou


seja, ele literalmente junta duas Strings.

Fundamentos I/O | 9
Concatenação de String
- Exemplo

public class ExemploConcatenacao {


public static void main(String[] args) {
String texto1 = ">> O operador de concatenação (+) ";
String texto2 = "é muito prático ";
String texto3 = texto1 + texto2 + "!";
System.out.println(texto3 + " <<");
System.out.println(">> 2 + 5 = " + 2 + 5); // uso INCORRETO
System.out.println(">> 2 + 5 = " + (2 + 5)); // uso correto
}
}
Saída:
>> O operador de concatenação (+) é muito prático ! <<
>> 2 + 5 = 25
>> 2 + 5 = 7

Fundamentos I/O | 10
Concatenação de String

- O compilador identifica se o operador (+) é de adição ou


concatenação de String
- Se um dos operandos for do tipo String, então se trata do
operador de concatenação

System.out.println( ">> 2 + 5 = " + 2 + 5);

- Se os operandos forem de tipos numéricos, então se trata


do operador de adição; perceba que a expressão está
entre parênteses

System.out.println(">> 2 + 5 = " + ( 2 + 5 ));

Fundamentos I/O | 11
Caracteres Especiais

Sequência de escape Descrição da ação

Nova linha. Posiciona o cursor de tela no início


\n
da próxima linha.
Tabulação horizontal. Move o cursor de tele
\t
para a próximo parada de tabulação
Retorno de Carro. Retorna o curso para o início
\r
da linha.
Barra Invertida. Utilizado para imprimir um
\\
caractere de barra invertida.
Aspas Duplas. Utilizado para imprimir um
\"
caractere de aspas duplas.
Unicode. Insere o caractere de código
\uXXXX
Hexadecimal XXXX.

Fundamentos I/O | 12
Caracteres Especiais

- Usando caracteres especiais

public class HelloWorld {


public static void main(String[] args) {
System.out.println( “Welcome\nto\n\”Java\”\nProgramming” );
}
}

Seqüência
Saída Descrição da ação
de escape
\n Nova linha
Welcome \t Tabulação horizontal
to \r Retorno de Carro
"Java" \\ Barra Invertida
Programming \" Aspas Duplas
\uXXXX Unicode

Fundamentos I/O | 13
printf

- Saída formatada semelhante a Linguagem C (Java 5)


- Pertence a classe PrintWriter;
- Facilita a migração de códigos C para Java;
- Forma simples e poderosa de formatar a saída de dados;
- Trabalho é feito pela classe java.util.Formatter.

- Argumentos:
- String de formatação
- Lista de argumentos

Sintaxe:
- System.out.printf (“String de formatação”, argumentos);

Fundamentos I/O | 14
printf (código de formatação)

Tipo do
Código Descrição
Argumento

“B” ou “b” booleano Imprime true ou false.

“S” ou “s” String Imprime como String (texto).


“C” ou “c” caracter Imprime um caracter (Unicode).

“d” inteiro Imprime um valor inteiro (short, byte, int e long).

ponto Imprime um valor em ponto flutuante (float e


“f”
flutuante double)
“%n” --- Quebra de linha

Fundamentos I/O | 15
printf (sintaxe)

%[index_arg$][flags][tam][.precisão]código_formatação

- %: caractere especial que define o início da instrução de formatação


- index_arg: índice do argumento (opcional)
- flags: modificam o formato de saída (opcional: -, +, 0)
- tam: tamanho total da saída, em caracteres (opcional)
- precisão: quantidade de casas decimais (opcional)
- código de formatação: indica o tipo de dado do argumento
- b, f, d, s, c

Fundamentos I/O | 16
printf (sintaxe)
■ Exemplo1
public class SaidaFormatadaExemplo {
public static void main(String[] args) {
int num = 15;
double taxa = 1.21312939;

System.out.printf(“Integer: %d\n”,num);
System.out.printf(“PF com 3 casas decimais: %.3f\n”, taxa);
System.out.printf(“PF com 8 casas decimais: %.8f\n”, taxa);

System.out.printf(“String: %s, float: %.6f”, “Hello World”, 9.231435);


}
}

Fundamentos I/O | 17
printf (sintaxe)

Formatação de inteiros
Código Descrição da ação
%d Apresenta um valor inteiro.
%6d Apresenta um valor inteiro de tamanho 6. Os espaços não
ocupados ficam em branco. Alinhamento a direita.
%-6d Apresenta um valor inteiro de tamanho 6. Os espaços não
ocupados ficam em branco. Alinhamento a esquerda.

%06d Apresenta um valor inteiro de tamanho 6. Os espaços não


ocupados são preenchidos com 0.

Fundamentos I/O | 18
printf (sintaxe)

Formatação de ponto flutuante


Código Descrição da ação
%f Apresenta um valor em ponto flutuante.
%15f Apresenta um valor em ponto flutuante de tamanho 15. Os
espaços não ocupados ficam em branco. Alinhamento a direita.

%08f Apresenta um valor em ponto flutuante de tamanho 8. Os


espaços não ocupados são preenchidos com 0.
%.4f Apresenta um valor em ponto flutuante com 4 casas decimais.

%9.2f Apresenta um valor em ponto flutuante com 2 casas decimais e


de no máximo 9 dígitos. O ponto conta como 1 dígito.

Fundamentos I/O | 19
printf (sintaxe)

Formatação de String
Código Descrição da ação
%s Apresenta um String.
%15s Apresenta um String de 15 caracteres. Os espaços não ocupados
ficam em branco. Alinhamento a direita.
%-8s Apresenta um String de 8 caracteres. Os espaços não ocupados
ficam em branco. Alinhamento a esquerda.

Fundamentos I/O | 20
Exemplo2
public class ExemploPrintf {
public static void main(String args[]){
short s = 3; byte b = 3;
int i = 3; long l = 3;
double d = 3.14; float f = 4.14f;
String str1 = "http", str2 = "www", str3 = "utfpr.edu.br";
System.out.printf("Testando%n123\n");
System.out.printf(" S = %3d\n B = %5d\n I = %2d\n L = %d\n", s, b, i, l);
System.out.printf("%5.2f <> %07.2f", f, d);
System.out.printf("%n%s://%s.%s\n", str1, str2, str3);
}
}

Fundamentos I/O | 21
Classe JOptionPane

Oferece caixas de diálogo predefinidas que permitem


aos programas exibir mensagens aos usuários;

Você pode utilizar o JOptionPane tanto para a


entrada de dados quanto para saída.

Fundamentos I/O | 22
JOptionPane no Java

import javax.swing.JOptionPane;

public class MeuPrimeiroPrograma4 {


// o método main inicia a execução do aplicativo Java
public static void main (String arg[]) {

JOptionPane.showMessageDialog(null, "\nBem-Vindo\nà
Programação Java\n\t\t por Janelas"+
JOptionPane.INFORMATION_MESSAGE );
System.exit(0); // termina programa
} // fim do método main
} // fim da classe MeuPrimeiroPrograma

Fundamentos I/O | 23
Argumentos

JOptionPane.showMessageDialog(null, "\nBem-Vindo\nà
Programação Java\n\t\t por Janelas"+
JOptionPane.INFORMATION_MESSAGE );

1. Indica o posicionamento da janela.


Null é ignorado e a janela é apresentada no centro da tela.

2. Mensagem a ser exibida


Bem-Vindo à Programação...

3. Título da caixa de diálogo


Meu Programa

4. Ícone na caixa de diálogo


Ícone de Informativo Fundamentos I/O | 24
Pacotes Java (package)

Classes predefinidas do Java são agrupadas em pacotes (package),


conhecidos como bibliotecas de classes Java ou interface de
programação de aplicativos Java (Java API)

Os nomes dos pacotes Java começam com Java (pacotes do


núcleo da linguagem, ou seja, pacotes mais básicos) ou Javax
(extensões ao núcleo, ou seja pacotes de extensão)

Fundamentos I/O | 25
Import

A instrução import é utilizada para identificar e carregar


classes utilizadas em um programa Java

As instruções import devem aparecer sempre antes da definição


das classes

As classes importadas pertencem a pacotes do núcleo, extensões


oficiais ou extensões fornecidas por terceiros.

JOptionPane é uma classe da biblioteca de interfaces gráficas do


javax.swing

import javax.swing.JOptionPane;
Fundamentos I/O | 26
Interagindo com o usuário

JOptionPane oferece diversos métodos, para criar


diversos tipos de caixas de diálogo.

Exemplo:
exibir uma caixa de mensagem para informar o usuário,
usamos o método showMessageDialog(...):

Fundamentos I/O | 27
Interagindo com o usuário

import javax.swing.JOptionPane;

public class TestaDialogo {

public static void main(String args[]) {


JOptionPane.showMessageDialog(null,"Este
é um diálogo simples");
}
}

Fundamentos I/O | 28
Interagindo com o usuário

Há uma outra forma de chamada para o método


showMessageDialog, a qual permite melhorarmos o
visual da caixa de mensagem:

JOptionPane.showMessageDialog(null,"Esta é uma
mensagem","Atenção",
JOptionPane.WARNING_MESSAGE);

Fundamentos I/O | 29
Interagindo com o usuário

Outros Tipos:
 JOptionPane.PLAIN_MESSAGE
nenhum ícone
 JOptionPane.ERROR_MESSAGE
ícone de erro
 JOptionPane.INFORMATION_MESSAGE
ícone de informação
 JOptionPane.WARNING_MESSAGE
ícone de aviso
 JOptionPane.QUESTION_MESSAGE
ícone de interrogação
Fundamentos I/O | 30
Exemplos

Outros Tipos:
 JOptionPane.showMessageDialog( null, "Sua idade é
" + idade, "Meu Programa",
JOptionPane.PLAIN_MESSAGE );

Fundamentos I/O | 31
Exemplos

Outros Tipos:
 JOptionPane.showMessageDialog( null, "Sua idade é
" + idade, "Meu Programa",
JOptionPane.ERROR_MESSAGE );

Fundamentos I/O | 32
Exemplos

Outros Tipos:
 JOptionPane.showMessageDialog( null, "Sua idade é
" + idade, "Meu Programa",
JOptionPane.INFORMATION_MESSAGE );

Fundamentos I/O | 33
Exemplos

Outros Tipos:
 JOptionPane.showMessageDialog( null, "Sua idade é
" + idade, "Meu Programa",
JOptionPane.WARNING_MESSAGE );

Fundamentos I/O | 34
Exemplos

Outros Tipos:
 JOptionPane.showMessageDialog( null, "Sua idade é
" + idade, "Meu Programa",
JOptionPane.QUESTION_MESSAGE );

Fundamentos I/O | 35
Exemplo Inicial

javax.swing.JOptionPane;

public class MeuPrimeiroPrograma4 {


// o método main inicia a execução do aplicativo Java
public static void main (String arg[]) {
JOptionPane.showMessageDialog(null,
"\nBem-Vindo\nà Programação Java\n\t\t
por Janelas"); System.exit(0); // termina programa
} // fim do método main
} // fim da classe MeuPrimeiroPrograma
Fundamentos I/O | 36
System.exit(0);

System.exit ( 0 ) é necessário em programas com


interface gráfica, terminando o aplicativo Java.

O retorno Zero (‘0’) para o método exit() indica que o


programa finalizou com sucesso.
Valores diferentes de zero significam erros na
execução e podem ser tratados por aplicativos
que chamaram o programa Java.

A classe System faz parte do pacote padrão java.lang,


que dispensa a importação (comando import) por ser
acrescida aos seus programas por default
Fundamentos I/O | 37
Entrada de Dados
Scanner

Fundamentos I/O | 38
Importando classes

- O Java possui uma API que é composta de vários pacotes.


- Os pacotes agrupam classes com funcionalidades
relacionadas.
- Cria uma estrutura hierárquica de bibliotecas.
- Na prática, funciona por meio de diretórios com os
arquivos de código Java.
- Mesmo sentido de
Pascal: Uses Crt;
Linguagem C: #include<stdio.h>

- Em Java

import java.util.Scanner;
Fundamentos I/O | 39
Comando import

- Utilizado para indicar ao compilador as classes que serão


usadas durante a compilação da nova classe.
Sintaxe:
import <pacote.classe>; // importa apenas uma classe
ou
import <pacote.*>; // importa todas as classes do pacote

- O diretório base utilizado para a busca da classe


especificada é o que está configurado na variável de
ambiente CLASSPATH.
- Os principais editores de programação (Eclipse, netBeans,
JBuilder, etc..) mudam a variável CLASSPATH para o
diretório raiz do projeto que está sendo desenvolvido.

Fundamentos I/O | 40
Comando import

- Exemplos
import javax.swing.JOptionPane;
import java.util.*;
import java.awt.event.ActionListener;
import br.edu.utfpr.poo;
- O comando import deve ficar no começo do arquivo
fonte, logo abaixo do comando package (que define
pacote), se ele existir.
- O caminho até chegar a um pacote e a uma classe em
Java é semelhante a organização de pastas e arquivos no
disco. Um pacote é uma pasta que contém vários
arquivos (classes) ou subpastas (outros pacotes).

Fundamentos I/O | 41
Comando import
- Comando import terminando no .* indica para o compilador importar
todas as classes presentes neste caminho apontado. Mas, as classes
que fazem parte dos pacotes internos (subpastas) não são importadas
nesta ação.

Exemplo:
import javax.swing.*;

- Para importar as classes dos pacotes internos ao swing, como as


classes do pacote border é necessário outra instrução import.

Exemplo:
import javax.swing.*;
import javax.swing.border.*;

Fundamentos I/O | 42
JOptionPane entrada de dados

Sintaxe: JOptionPane.showInputDialog
exibir uma caixa de entrada
retorna sempre a String digitada pelo usuário.
Exemplo:
nome = JOptionPane.showInputDialog(null, "\nDigite seu
nome");

Fundamentos I/O | 43
Desafio

1 Faça um programa em que o usuário entre com


dois valores inteiros utilizando o JOptionPane
2 Calcule a soma destes dois números
3 Exiba o resultado utilizando o JOptionPane

Obs: O JOptionPane recebe os valores como


String.

Fundamentos I/O | 44
Resposta do Desafio

public static void main(String args[]) {


int valor1, valor2;

valor1 = Integer.parseInt(JOptionPane.showInputDialog(null, "\nDigite o


primeiro valor"));

valor2 = Integer.parseInt(JOptionPane.showInputDialog(null, "\nDigite o


segundo valor"));

JOptionPane.showMessageDialog(null, "O resultado é: " + (valor1 + valor2));

System.exit(0); // termina programa


}

Fundamentos I/O | 45
Scanner
1. Precisamos importar a seguinte classe no início do programa
import java.util.Scanner;

2. Dentro do método main, instanciamos o objeto input da classe


Scanner. Scanner input = new Scanner(System.in);

3. Utilize um dos métodos para capturar os dados


Método Finalidade
next() Aguarda uma entrada no formato String (uma só)
nextLine() Aguarda uma entrada no formato String (aceita composto)
nextInt() Aguarda uma entrada no formato inteiro
nextByte() Aguarda uma entrada no formato byte
nextShort() Aguarda uma entrada no formato short
nextLong() Aguarda uma entrada no formato long
nextFloat() Aguarda uma entrada no formato float
nextDouble() Aguarda uma entrada no formato double
Fundamentos I/O | 46
Classe Scanner
Importa a classe Scanner
que está dentro do pacote
java.util

instanciamos o objeto input


da classe Scanner.

Utilizamos o método next()


para receber um valor do
tipo String
Fundamentos I/O | 47
Método exit

- Método da classe System que quando chamado encerra a


execução da aplicação na JVM.
- Recebe como parâmetro um número inteiro que é
retornado como um código de estado (status) para a
janela de comando que iniciou a execução da aplicação.

Exemplo:
System.exit( 0 ); // por padrão zero indica execução normal
System.exit( 1 ); // por padrão diferente de zero indica que ocorreu um erro

ATENÇÃO: em aplicações com Interface Gráfica (GUI) é obrigatório a


chamada deste método para que a aplicação se encerre de forma correta.

Fundamentos I/O | 48
Malhação Cerebral

MC4_01. Faça um aplicativo que leia o valor do raio de um círculo como


um inteiro e imprima seu diâmetro, sua circunferência e sua área.
Utilize o valor de ponto flutuante de 3.14159 para o valor de PI. Utilize
as seguintes fórmulas (r é o raio):
Diâmetro = 2 * r
Circunferência = 2 * PI * r
Área = PI * r2

MC4_02. Refaça os exercícios da parte 03 com entrada de dados por


Scanner e saída formatada.

Fundamentos I/O | 49
Referências
■ DEITEL, H. M.; DEITEL, P. J. Java: como programar. 4 ed. Porto Alegre: Bookman, 2003.
■ HORSTMANN, Cay. Big Java. Porto Alegre: Bookman, 2004.
■ RAMON, Fábio. Java 2: Guia de Consulta Rápida. São Paulo: Novatec, 2001.
■ SANTOS, Rafael. Introdução a Programação Orientada a Objetos usando Java. Rio de Janeiro:
Campus, 2003.
■ SIERRA, Kathy e BATES, Bert. Java 2 – certificação Sun para programador & desenvolvedor
Java 2. Rio de Janeiro: Alta Books, 2003.
■ SIERRA, Kathy & BATES, Bert. Use a cabeça Java. 2 ed. Rio de Janeiro: Alta Books, 2005.
■ SINTES, Anthony. Aprenda Programação Orientada a Objetos em 21 Dias. São Paulo: Pearson
Education do Brasil, 2002.
■ Material elaborado pela iniciativa JEDI (Java Education and Development Initiative.
http://www.dfjug.org/DFJUG/jedi/index.jsp
■ Material elaborado pelo professor Alexandre Rômolo Moreira Feitosa da UTFPR de Cornélio
Procópio.
■ Material elaborado pelo professor Gabriel Canhadas Genvigir da UTFPR de Cornélio Procópio.
■ CAELUM. Java e Orientação a Objetos. Disponível em: <http://www.caelum.com.br>.
Acessado em 17/04/2008.
■ ARGONAVIS. Java 2 Standard Edition. Disponível em: <http://www.argonavis.com.br>.
Acessado em 02/04/2008.
■ Outros textos, apostilas, tutorias coletados na Web.

Fundamentos I/O | 50
Programação Orientada
a Objetos
Professor Vinícius Bortolini

Fundamentos da Linguagem | 31

Você também pode gostar