0% acharam este documento útil (0 voto)
21 visualizações70 páginas

JavaIntro POO

para iniciantes
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
21 visualizações70 páginas

JavaIntro POO

para iniciantes
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 70

Java - Introdução

BCC 221 - Programação Orientada a Objectos(POO)

Guillermo Cámara-Chávez

Departamento de Computação - UFOP


Introdução

I A Sun Microsystems financiou uma pesquisa corporativa


interna em 1991, com codinome Green

I Microprocessadores;

I O foco eram dispositivos eletrônicos inteligentes destinados ao


consumidor final.

I O projeto resultou em uma linguagem de programação


baseada em C e C++

I Oak (Carvalho): já existia;

I Java: a cidade, o café.

1/69
Introdução (cont.)

2/69
Principais Caracterı́sticas

I Orientação a objetos;

I Portabilidade;

I Facilidades para criação de programas com recursos de rede;

I Sintaxe similar a C/C++;

3/69
Principais Caracterı́sticas (cont.)

I Facilidades para criação de programas distribuı́dos e


multitarefa;

I Desalocação automática de memória;

I Vasta coleção de bibliotecas (ou APIs);

I Frameworks.

4/69
APIs

I As bibliotecas de classes Java são também conhecidas como


APIs (Applications Programming Interface)

I Fornecidas por compiladores;

I Fornecidas por fornecedores independentes de software

I Aplicações gráficas;

I Estruturas de dados;

I Acessibilidade;

5/69
APIs (cont.)

I Sons;

I Programação distribuı́da e paralela;

I Bancos de dados

I Jogos

I E-mail

I Etc.

6/69
Criação de um Programa Java

I Cria-se um código fonte com a extensão .java;

I O programa é compilado
j a v a c meuPrograma . j a v a

I É gerado o bytecode (arquivo .class), que será interpretado


durante a execução;

7/69
Criação de um Programa Java (cont.)

I O(s) arquivo(s) .class são carregados para a memória ;

I O interpretador (ou Java Virtual Machine) Java executa os


programas carregados
j a v a meuPrograma

8/69
Bytecode

I Os programas em Java são compilados para bytecode

I Uma forma intermediária de código, a ser interpretada pela


máquina virtual Java (Java Virtual Machine - JVM).

I Isto permite maior portabilidade dos códigos Java

I Qualquer sistema que inclua uma JVM executa qualquer


código Java.

I A JVM é responsável pelo gerenciamento dos aplicativos,


à medida em que estes são executados

9/69
Bytecode (cont.)

10/69
Bytecode (cont.)

11/69
Instruções de Saı́da

p u b l i c c l a s s Welcome1
{
//o método main inicia a execução da aplicação Java
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] )
{
//Java é case sensitive, cuidado com as letras maiúsculas
System . o u t . p r i n t l n ( " Welcome to Java
Programming !" ) ;
}
}

12/69
Instruções de Saı́da (cont.)

I Todo programa em Java consiste de pelo menos uma classe


definida pelo programador

I Padrão de nomenclatura igual ao C++;

I As definições de classe que começam com o especificador


public devem ser armazenadas em arquivos que possuam
o mesmo nome da classe

I Definir mais de uma classe public no mesmo arquivo é um erro


de sintaxe.

13/69
Instruções de Saı́da (cont.)

I A assinatura do método main é invariável


p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) ;

I O static indica que o método será executado


automaticamente pela JVM, sem necessidade de instanciar.

14/69
Instruções de Saı́da (cont.)

Especificador Descrição
public Acessı́vel a todos os membros do programa
private Acessı́vel apenas internamente à classe
protected Acessı́vel internamente à classe, às subclas-
ses e por classes do mesmo pacote
Acesso de pacote Atribuı́do quando nenhum especificador é
determinado.
Acessı́vel a todas as classes do mesmo pa-
cote, através de uma referência a um objeto
da classe.

15/69
Instrução de Saı́da

I System.out é conhecido como objeto de saı́da padrão


System . o u t . p r i n t l n ( " Welcome to Java Programming !"
);

I O método println imprime a string e quebra a linha ao final

I Para não quebrar a linha, utiliza-se o método print.

I Ambos também aceitam ’\n’ como caractere de nova linha.

16/69
Instrução de Saı́da (cont.)

Caractere de Escape Descrição


\n Nova linha
\t Tabulação horizontal
\r Retorno de carro
\\ Barra invertida
\" Aspas duplas

17/69
printf em Java

I Também há o método System.out.printf (a partir do Java


SE 5.0) para exibição de dados formatados

I Similar ao printf de C/C++.

18/69
printf em Java (cont.)

p u b l i c c l a s s Welcome4
{
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] )
{
System . o u t . p r i n t f ( " %s\n %s\n" , " Welcome to " , "
Java Programming " ) ;
}
}

19/69
Importanto Classes

I O compilador utiliza instruções import para identificar e


carregar classes usadas em um programa Java

I As instruções de importação são divididas em dois grupos:

I Núcleo do Java (nomes que começam com java);

I Extensões do Java (nomes que começam com javax).

20/69
Importanto Classes (cont.)

I Java possui um rico conjunto de classes predefinidas

I Agrupadas em pacotes;

I Por padrão, o pacote java.lang é importado automaticamente

I Classe System

21/69
Classe Scanner

import java . u t i l . Scanner ;

p u b l i c c l a s s Adicao {
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) {
S c a n n e r e n t r a d a = new S c a n n e r ( System . i n ) ;

i n t numero1 , numero2 , soma ;

System . o u t . p r i n t l n ( " Informe o primeiro inteiro " )


;
numero1 = e n t r a d a . n e x t I n t ( ) ; //lê o primeiro inteiro
System . o u t . p r i n t l n ( " Informe o segundo inteiro " ) ;
numero2 = e n t r a d a . n e x t I n t ( ) ; //lê o segundo inteiro

soma = numero1+numero2 ;
System . o u t . p r i n t f ( "A soma é %d\n" , soma ) ;
}
}

22/69
Classe Scanner (cont.)

I Um Scanner permite que o programa leia dados

I Deve ser criado um objeto desta classe;

I Os dados podem vir de diferentes fontes

I Disco

I Teclado

I Etc.

23/69
Classe Scanner (cont.)

I Antes de utilizar um Scanner, o programa deve especificar


qual é a origem dos dados

I No nosso exemplo, System.in indica a entrada padrão.

I O método nextInt() lê o próximo número inteiro da entrada;

I É possı́vel evitar a importação da classe Scanner, se


utilizarmos o nome completo da classe
j a v a . u t i l . S c a n n e r e n t r a d a = new j a v a . u t i l . S c a n n e r (
System . i n ) ;

24/69
Classe Scanner (cont.)

I Outros métodos úteis da classe Scanner são:

I next();

I nextByte();

I nextDouble();

I nextFloat();

I nextLine();

25/69
Classe Scanner (cont.)

I Estes métodos ainda possuem métodos similares hasNext, que


determinam se ainda há possı́veis tokens a serem lidos

I Por exemplo, hasNextInt() .

26/69
Classe Scanner (cont.)
import java . u t i l . ∗ ;

p u b l i c c l a s s HasNext {

p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s ) {
S t r i n g s = " Hello World ! \n 23 " ;

// create a new scanner with the specified String Object


S c a n n e r s c a n n e r = new S c a n n e r ( s ) ;

// check if the scanner has a token


System . o u t . p r i n t l n ( "" + s c a n n e r . h a s N e x t ( ) ) ;

// print the rest of the string


System . o u t . p r i n t l n ( "" + s c a n n e r . n e x t L i n e ( ) ) ;

// check if the scanner has a token after printing the line


System . o u t . p r i n t l n ( "" + s c a n n e r . h a s N e x t I n t ( ) ) ;
}
}
27/69
Classe Scanner (cont.)

true
H e l l o World !
true

28/69
Caixas de Diálogo

I Caixas de diálogo são janelas utilizadas para informar ou obter


dados ao usuário

I Fornecem uma interface mais amigável que o terminal;

I Janelas simples.

I No exemplo a seguir, será importada a classe JOptionPane,


que oferece caixas de diálogo

I A classe está contida no pacote javax.swing.

29/69
Exemplo 3

// Pacotes de extensão Java


i m p o r t j a v a x . s w i n g . JO pt io nP a ne ;
//importa a classe JOptionPane

p u b l i c c l a s s Welcome4 {
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] ) {
//o parâmetro null posiciona a janela no meio da tela
JOptionPane . showMessageDialog ( n u l l ,
" Welcome \ nto \ nJava \ nProgramming !" ) ;
//necessário em aplicações gráficas
System . e x i t ( 0 ) ; //termina o programa
}
}

30/69
Exemplo 3 (cont.)

31/69
Exemplo 4

i m p o r t j a v a x . s w i n g . JO pt io nP a ne ;

public class Addition {


p u b l i c s t a t i c v o i d main ( String args [ ] )
{
String firstNumber ; //primeira string digitada pelo usuário
S t r i n g secondNumber ; //segunda string digitada pelo usuário
i n t number1 ; //primeiro número
i n t number2 ; //segundo número
i n t sum ; //soma

//lê o primeiro número como uma string


f i r s t N u m b e r = JO p ti on Pa n e . s h o w I n p u t D i a l o g ( " Enter
first integer " ) ;

//lê o segundo número como uma string


secondNumber = J Op ti o nP an e . s h o w I n p u t D i a l o g ( " Enter
second integer " ) ;

32/69
Exemplo 4 (cont.)

// converte os números de String para int


number1 = I n t e g e r . p a r s e I n t ( f i r s t N u m b e r ) ;
number2 = I n t e g e r . p a r s e I n t ( secondNumber ) ;

// adiciona os numeros
sum = number1 + number2 ;

// mostra o resultado
J O p t i o n P a n e . s h o w M e s s a g e D i a l o g ( n u l l , " The sum is "
+ sum , " Results " , JO pt io n Pa ne . PLAIN MESSAGE ) ;

System . e x i t ( 0 ) ;
}
}

33/69
Exemplo 4 (cont.)

34/69
Constantes JOptionPane

35/69
Exemplo 4

I A InputDialog é outra caixa predefinida na JOptionPane

I Caixa de diálogo de entrada;

I O método showInputDialog() a mostra na tela.

I Os dados são lidos como strings, e depois convertidos para


inteiros

I As classes String e Integer são do pacote java.lang.

I O mesmo pode ser feito com as classes Float (parseFloat) e


Double (parseDouble).

36/69
Erro Comum

I Separamos texto e o conteúdo de variáveis pelo operador +

I Converte o valor da variável e a concatena no texto.

I Suponha y = 5:

I “y+2 = ”+y+2 imprime “y+2 = 52”;

I “y+2 = ”+(y+2) imprime “y+2 = 7”.

37/69
Operadores e Palavras Reservadas

38/69
Palavras Reservadas

39/69
Similaridades com C/C++

I Comentários;

I Operadores relacionais;

I Atribuições simplificadas;

I Incremento e decremento;

I Operadores lógicos;

40/69
Similaridades com C/C++ (cont.)

I Desvio Condicional

I if , if −else, operador ternário ( ?: ) e aninhamentos.

I Estrutura de seleção

I switch−case

I Estruturas de repetição

I while , do−while, for e aninhamentos

41/69
Vetores

I Em Java, os vetores são muito semelhantes aos de C++

I O primeiro ı́ndice é zero.

i n t c [ ] ; //declara um vetor
c = new i n t [ 12 ] ; //cria o vetor e o associa a uma variável

42/69
Vetores (cont.)

I Os vetores possuem o atributo público length, que armazena o


tamanho do vetor
i n t TAMANHO = 1 2 ;
i n t c [ ] = new i n t [TAMANHO ] ;

f o r ( i n t i = 0 ; i <c . l e n g t h ; i ++)
System . o u t . p r i n t f ( " %d " , c [ i ] ) ;

43/69
Vetores (cont.)

I Caso seja acessada uma posição fora dos limites de um vetor,


a exceção IndexOutOfBoundsException ocorre;

I Uma das formas de evitar este tipo de exceção é utilizar o for


aprimorado

I O contador é baseado no conteúdo do vetor

44/69
Vetores (cont.)

p u b l i c c l a s s ForAprimorado
{
p u b l i c s t a t i c v o i d main ( S t r i n g A r g s [ ] )
{
//cria e inicializa o vetor
int vet [ ] = {1 , 2 , 5 , 10 , 15 , 20 , 32};

//o contador do for é associado aos elementos do vetor


for ( int i : vet )
//imprime cada elemento do vetor
System . o u t . p r i n t f ( " %d\n" , i ) ;
}
}

45/69
Matrizes

I Matrizes, ou vetores multidimensionais em Java são


semelhantes às matrizes em C++;

I As declarações abaixo são válidas tanto em Java quanto em


C++:

int a [ ] [ ] = { { 1 , 2 } , { 3 , 4 , 5 } };

i n t b [ ] [ ] = new i n t [ 3 ] [ 4 ] ;

i n t c [ ] [ ] = new i n t [ 2 ] [ ] ; //cria duas linhas


c [ 0 ] = new i n t [ 5 ] ; //cria 5 colunas para a linha 0
c [ 1 ] = new i n t [ 3 ] ; //cria 3 colunas para a linha 1

46/69
Matrizes (cont.)

public class VetorBidimensional


{
p u b l i c s t a t i c v o i d main ( S t r i n g a r g s [ ] )
{
//matriz estática
i n t [ ] [ ] t a b u l e i r o = new i n t [ 8 ] [ 8 ] ;
i n t [ ] [ ] dinamico ;

//aloca a primeira dimensão


d i n a m i c o = new i n t [ 1 0 ] [ ] ;

//aloca a segunda dimensão


f o r ( i n t i =0; i < d i n a m i c o . l e n g t h ; i ++)
d i n a m i c o [ i ] = new i n t [ i + 1 ] ;
}
}

47/69
API Java

I A especificação da API Java pode ser encontrada em:


http://download.oracle.com/javase/8/docs/api/

I Descrição de todos os pacotes e suas respectivas classes,


interfaces, exceções e erros.

48/69
API Java (cont.)
I java.awt: interfaces gráficas;

I java.io: entrada e saı́da;

I java.lang: classes básicas para programas Java;

I java.math: operações matemáticas com precisão arbitrária;

I java.net: aplicações que utilizam rede;

I java.rmi: programação distribuı́da;

I java.sql: banco de dados;

I java.util: coleções, utilidades de data e hora,


internacionalização e miscelânea (tokenizer, números
aleatórios, etc.). 49/69
Classes e Métodos

I Vejamos um exemplo conhecido sobre classes e métodos

I GradeBook (diário de classe).

I Notem que há algumas semelhanças com a sintaxe de C++

I E algumas diferenças.

50/69
Classes e Métodos (cont.)
p u b l i c c l a s s GradeBook
{
public void displayMessage ()
{
System . o u t . p r i n t l n ( " Bem vindo ao Diario de
Classe " ) ;
}
}

p u b l i c c l a s s DriverGradeBook
{
p u b l i c s t a t i c v o i d main ( S t r i n g A r g s [ ] )
{
GradeBook m e u D i a r i o = new GradeBook ( ) ;

meuDiario . displayMessage () ;
}
}
51/69
Classes e Métodos (cont.)

I Classes públicas são armazenadas em arquivos diferentes;

I O main fica dentro de uma classe, obrigatoriamente

I Logo, é um método;

I O static em seu cabeçalho indica que será executado


automaticamente.

I Para instanciar um objeto, é necessário utilizar o operador


new()

I Não é necessário importar a classe GradeBook.java no driver

I Automático, pois estão no mesmo pacote – o pacote padrão.

52/69
Classes e Métodos (cont.)

I Vamos alterar o exemplo anterior para agora considerar um


parâmetro para o método displayMessage()

53/69
Classes e Métodos (cont.)

p u b l i c c l a s s GradeBook
{
p u b l i c v o i d d i s p l a y M e s s a g e ( S t r i n g nomeCurso )
{
//o println foi substituı́do, porque gera erro de compilação
System . o u t . p r i n t f ( " Bem vindo ao Diario de
Classe de %s" , nomeCurso ) ;
}
}

54/69
Classe String

I Java trata cadeias de caracteres utilizando a classe String

I Com ’S’;

I Incluı́da no pacote java.lang

I Não é necessário importar.

55/69
Classe String (cont.)

I Possui 65 métodos (Java SE 7.0) para manipular Strings

I Sintaxe diferente de C++;

I + 15 construtores diferentes;

I + operadores sobrecarregados.

56/69
Lendo String

p u b l i c c l a s s GradeBook
{
p u b l i c v o i d d i s p l a y M e s s a g e ( S t r i n g nomeCurso )
{
//o println foi substituı́do, porque gera erro de compilação
System . o u t . p r i n t f ( " Bem vindo ao Diario de
Classe de %s" , nomeCurso ) ;
}
}

57/69
Lendo String (cont.)

import java . u t i l . Scanner ;

p u b l i c c l a s s DriverGradeBook
{
p u b l i c s t a t i c v o i d main ( S t r i n g A r g s [ ] )
{
GradeBook m e u D i a r i o = new GradeBook ( ) ;
S c a n n e r e n t r a d a = new S c a n n e r ( System . i n ) ;
S t r i n g nome ;

System . o u t . p r i n t l n ( " Digite o nome do curso " ) ;


//Lê a linha inteira, inclusive espaços
nome = e n t r a d a . n e x t L i n e ( ) ;

m e u D i a r i o . d i s p l a y M e s s a g e ( nome ) ;
}
}

58/69
Lista de Argumentos de Tamanho Variável

I Com Listas de Argumentos de Tamanho Variável ou


varargs, podemos criar métodos que recebem um número
não especificado de argumentos;

I Um tipo seguido de . . . na lista de parâmetros de um método


indica que este recebe um número de variáveis daquele tipo

I Só pode ser feito uma vez por método;

I Sempre no final da lista de parâmetros.

59/69
Lista de Argumentos de Tamanho Variável (cont.)
p u b l i c c l a s s VarArgs {
p u b l i c s t a t i c d o u b l e media ( d o u b l e . . . numeros ) {
double t o t a l = 0;

f o r ( d o u b l e d : numeros )
t o t a l+=d ;

r e t u r n t o t a l / numeros . l e n g t h ;
}

public static v o i d main ( S t r i n g a r g s [ ] ) {


d o u b l e d1 = 10.0;
d o u b l e d2 = 1.0;
d o u b l e d3 = 15.0;
d o u b l e d4 = 99.0;

System . o u t . p r i n t f ( " %lf " , media ( d1 , d2 , d3 , d4 ) )


;
}
}
60/69
Passagem de Parâmetros

I Duas formas de passar parâmetros para métodos ou funções


são:

I Por valor ou cópia (alterações não afetam a variável ou objeto


original);

I Por referência (alterações afetam a variável ou objeto original).

61/69
Passagem de Parâmetros (cont.)

I Java não permite que o usuário escolha qual será a forma de


passagem dos parâmetros:

I Tipos primitivos são sempre passados por valor;

I Objetos e vetores são passados por referência

I Vetores são passados por referência por uma questão de


desempenho.

62/69
Escopo de Variáveis e Atributos

I As regras para o escopo de variáveis e atributos são as


mesmas em Java:

I Variáveis locais só existem dentro do bloco de código ao qual


pertencem, delimitados por { e };

I Atributos são declarados dentro das classes e fora dos métodos;

63/69
Escopo de Variáveis e Atributos (cont.)

I Os especificadores de acesso determinam a visibilidade dos


atributos

I public , private e protected

I Consequentemente, o uso de getters e setters também é


mantido;

I Em Java, os especificadores não delimitam regiões de uma


classe (como em C++)

I São definidos membro a membro.

64/69
Exemplo GradeBook
p u b l i c c l a s s GradeBook {
p r i v a t e S t r i n g courseName ;

// método para definir o nome da disciplina


p u b l i c v o i d s et CourseName ( S t r i n g name ) {
courseName = name ; // store the course name
}

// método para recuperar o nome da disciplina


p u b l i c S t r i n g getCourseName ( ) {
r e t u r n courseName ;
}

// mostra a mensagem de bem vindas


public void displayMessage () {
// mostra a mensagem
System . o u t . p r i n t f ( " Welcome to the grade book
for \n %s !\ n" , getCourseName ( ) ) ;
}
} // fim classe GradeBook
65/69
Exemplo GradeBook (cont.)

// biblioteca de entrada de dados


import java . u t i l . Scanner ;

p u b l i c c l a s s GradeBookTest {
// método principal que inicia a execução
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] a r g s )
{
// permite a captura de dados de entrada
S c a n n e r i n p u t = new S c a n n e r ( System . i n ) ;

// cria um objeto da classe GradeBook


GradeBook myGradeBook = new GradeBook ( ) ;

System . o u t . p r i n t f ( " Initial course name is :


%s\n\n" , myGradeBook . getCourseName ( ) ) ;

66/69
Exemplo GradeBook (cont.)

// prompt for and read course name


System . o u t . p r i n t l n ( " Please enter the
course name :" ) ;

// lê uma linha de texto


S t r i n g theName = i n p u t . n e x t L i n e ( ) ;

// set courseName
myGradeBook . setCourseName ( theName ) ;

System . o u t . p r i n t l n ( ) ; // imprime uma linha em branco

// mostra a mensagem de boas vindas


myGradeBook . d i s p l a y M e s s a g e ( ) ;
}
} // fim classe GradeBookTest

67/69
Exemplo GradeBook (cont.)

I n i t i a l c o u r s e name i s : n u l l
P l e a s e e n t e r t h e c o u r s e name :
BCC Programacao O r i e n t a d a a O b j e t o s
Welcome t o t h e GradeBook f o r
BCC Programacao O r i e n t a d a a O b j e t o s

68/69
FIM

69/69

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy