Vous êtes sur la page 1sur 51

Conceitos

Bsicos de Programao em Java


Centro de Inform-ca Universidade Federal de Pernambuco Sistemas de Informao Vinicius Cardoso Garcia vcg@cin.ufpe.br
2011 Vinicius Cardoso Garcia

O Programa Ol Mundo!
Todo cdigo Java deve pertencer a uma classe Isto diz que todo mundo pode executar esse programa Chaves indicam o incio do corpo da classe Nome deste mtodo Esse o nome da classe Este mtodo no retorna nada Os parmetros passados para este mtodo (neste caso os argumentos da linha e comando passados como um arranjo de strings) Chaves indicam o incio do corpo do mtodo

Todo mundo pode executar este programa Este mtodo pertence a classe, no ao objeto

public class Mundo { public sta-c void main (String[] args) { System.out.println (Ol Mundo!) ; } }
O Nome do mtodo que se deseja chamar (neste caso o mtodo para imprimir strings na tela O Parmetro passado para o mtodo (neste caso o string que ser impresso) Ponto-e-vrgula indica o m deste comando

Chaves para fechar o corpo da classe

Chaves para fechar o corpo do mtodo

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

Atores
Os principais atores em um programa Java so os objetos
Armazenam dados e fornecem meios de acessar estes dados

Todo objeto uma instncia de uma classe que dene um @po do objeto

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

Membros de uma classe


Variveis de instncia (campos)
Tipos bsicos ou se referir a objetos de outras classes

Operaes (mtodos)
Construtores, sub-programas e funes Denem o comportamento

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

Como as classes so declaradas


public class Contador { protected int contador; //uma simples varivel de instncia inteira /** o construtor default para um objeto Contador */ Contador() { contador = 0; } /** um mtodo de acesso para recuperar o valor corrente do contador */ public int getContador() { return conyador; } /** um mtodo modicador para incrementar o contador */ public void incrementeContador() { contador++; } /** um mtodo modicador para decrementar o contador */ public void decrementaContador() { contador--; } }

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

Modicadores de classe
abstract: descreve uma classe que possui mtodos abstratos nal: descreve uma classe que no pode ter subclasses public: descreve uma classe que pode ser instanciada ou estendida por qualquer coisa denida no mesmo pacote ou por qualquer coisa que importe a classe Se o modicador public no u-lizado, a classe considerada amigvel (friend), ou seja, pode ser usada e instanciada por qualquer classe do mesmo pacote
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

Tipos bsicos
boolean (true ou false): Valores Booleanos; char (0 a 65535): Caracteres representados em 16 bits; byte (-128 a 127): Inteiro de 8 bits; short (-32768 a 32767): Inteiro de 16 bits; int (-2E31 e 2E31): Inteiro de 32 bits; long (-2E63 e ( 2E63 - 1) ): Inteiro de 64 bits; oat (1.40239846E-46 e 3.40282347e+38): Ponto utuante de preciso simples; double (4.94065645841246544E-324 e 1.7976931348623157E+308): Ponto utuante de preciso dupla.
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

Objetos
Nome desta classe

public class
Declara a varivel d como sendo o -po Contador

Exemplo

Sintaxe padro para declarar um mtodo Declara a varivel c como sendo do -po Contador; isto , c pode se referir a qualquer objeto Contador

public sta-c void main (String[] args) Contador c; Contador d =

Atribui a referncia ao novo objeto para a varivel d Cria um novo objeto Contador e retorna uma referncia para o mesmo

new Contador() ;

Atribui a referncia ao novo objeto para a varivel c

c = new Contador() ; d = c ; }
Cria um novo objeto Contador e retorna uma referncia para o mesmo Atribui a referncia para o mesmo objeto que c (o objeto que d referenciava no tem mais nenhuma varivel referenciando-o)

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

Objetos numricos

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

Objetos String
Seqncia de caracteres que provm algum alfabeto Cada caractere c que compe uma string s pode ser referenciado por seu ndice [par-ndo-se do ndice 0]
Em Java usa-se Unicode Classe String hogs and dogs Comprimento = 13 c[2] = g e c[5]=a

Concatenao
String s = quil + metros;

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

10

Referncias para Objetos

A referncia O objeto

A varivel referncia

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

11

Classes e instncias

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

12

Classes e Instncias
Classe: uma denio, um modelo existente para a criao de novos objetos. Pode ser considerada como uma abstrao que descreve todas as caracters-cas comuns dos objetos criados a par-r dela. Instncia: Um objeto que pertena a uma classe chamado de instncia desta classe.

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

13

Mais Classes e Instncias


Uma classe uma forma que descreve de forma genrica grupos de objetos com caracters-cas similares. Uma instncia de uma classe um objeto real. A classe representa a descrio genrica de um objeto enquanto uma instncia uma representao concreta deste objeto.

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

14

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

15

Modicadores de Acesso ou Visibilidade

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

16

Tipos Enumerados
modicador enum nome {nome_valor_0, nome_valor_1, ..., nome_valor_N-1} Onde o modicador pode ser: public, protected e private public enum Dia {SEG, TER, QUA, QUI, SEX, SAB, DOM}; Uma vez denido, pode ser usado como uma classe Possui mtodos predenidos

public class Calendario { public enum Dia {SEG, TER, QUA, QUI, SEX, SAB, DOM}; public sta@c void main (String[] args) { Dia d = Dia.SEG; System.out.println(Inicialmente d + d); d = Dia.QUA; System.out.println(Ento agora + d); Dia t = Day.valueOf(QUA); System.out.println(Agora d e t so iguais: + (d==t)); } }
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

17

Mtodos
modicador Dpo nome (Dpo_0 parmetro_0, ..., Dpo_N-1 parmetro_N-1) { // corpo do mtodo... } Modicadores
public: qualquer um pode chamar protected: apenas mtodos do mesmo pacote ou subclasse private: apenas mtodos da mesma classe default: objetos de classe do mesmo pacote

Adicionais
abstract: no possui cdigo, com a lista de parmetros seguidas por ;. S existem em classes abstratas nal: mtodo que no pode ser sobrescrito por uma subclasse sta@c: associado a uma classe e no a instncia propriamente dita. Pode ser usados pra alterar o estado de variveis sta@c associadas a classe (desde que no tenham sido declaradas como nal)
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

18

Mtodos Construtores
O construtor de uma classe um mtodo especial que no possui retorno, leva o mesmo nome da classe e pode conter ou no parmetros. Sempre que uma classe instanciada (new), o mtodo de construo chamado. Se o construtor no for declarado na classe, Java adiciona automaticamente um construtor vazio no bytecode. Se na declarao da classe, existe algum construtor declarado, o construtor vazio no inserido. Os parmetros definidos em um construtor no vazio precisam ser passados no momento de instanciao (new) da classe.
Ex: Conta() {}, Conta(double saldo){ }

Construtores podem ser sobrecarregados.

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

19

Expresses literais
Um literal qualquer valor constante que pode ser usado em atribuies ou outros -pos de expresso
null Booleano: true e false Inteiro e inteiro longo (deve ser terminado por L) Ponto utuante duplo (double), que o default e simples (oat), que deve ser terminado por F Caracteres: pertencem ao alfabeto Unicode Strings: seqncia de caracteres entre aspas duplas

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

20

Declarando Constantes
// Exemplos de constantes final float PI = 3.141592; final boolean DEBUG = false; final int LEFT = 0; final int RIGHT = 1; final int CENTER = 2;
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

21

Expresses Aritm@cas
// Aritmtica i = 2 + 4; // i = 4 - 2; // i = 3 * 4; // i = 5 / 2; // i = 5 % 2; // // Atribuies x += y; // x = x -= y; // x = x *= y; // x = x /= y; // x = simples adio subtrao multiplicao diviso mdulo com x + x x * x / operaes aritmticas y; y; y; y;
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

22

Incremento e Decremento
// Incremento e decremento ps-fixados // Atribui para incrementar. x = 1; y = x++; // x ser 2; y ser 1 y = x--; // x ser 0; y ser 1 // Incremento e decremento prefixados // Incrementa para atribuir. x = 1; y = ++x; // x ser 2; y ser 2 y = --x; // x ser 0; y ser 0

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

23

Expresses Lgicas
// Comparaes em nmeros i i i i i i == 3; // igual (tambm em objetos) != 3; // diferente (tambm em objetos) > 3; // maior < 3; // menor <= 3; // menor ou igual >= 3; // maior ou igual

// Operaes lgicas b = b1 && b2; // AND b = b1 || b2; // OR b = !b1; // NOT

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

24

Expresses Lgicas
// Operaes em bits (inteiros) i i i i i i i x x x x x x = i & 0; = i | i; = i ^ i; = i << 4; = i >> 3; = i >>> 2; = ~i; <<= y; >>= y; >>>= y; &= y; |= y; ^= y; // // // // // // // // // // // // // AND bitwise (0) OR bitwise (-32,768) XOR bitwise (0) move 4 bits com S para esquerda move 3 bits com S para direita move com zeros para a direita complemento x = x << y; x = x >> y; x = x >>>y; x = x & y; x = x | y; x = x ^ y;
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

25

Precedncia
Precedncia a ordem na qual os operadores sero calculados quando o programa for executado. Em Java, os operadores so calculados na seguinte ordem:
// operaes e suas precedncias . [] () ++ -- ! ~ instanceof new (type)exp * / % + - << >> >>> < > <= >= == != & ^ | && || (cond)?t_exp:f_exp = += -= *= /= %= ^= &= |= <<= >>= >>>=
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

26

Conversores e autoboxing/unboxing
Usuais
double d1 = 3.2; double d2 = 3.9999; int i1 = (int)d1; //i1 tem valor 3 int i2 = (int)d2; //i2 tem valor 3 double d3 = (double)i2; //d3 tem valor 3.0

Operadores
int i1 = 3; int i2 = 6; dresult = (double)i1 / (double)i2; //dresult tem valor 0.5 dresult = i1 / i2; //dresult tem valor 0.0

Conversores implcitos e autoboxing/unboxing


int iresult, i = 3; double dresult, d = 3.2; dresult = 1/d; //dresult tem valor 0.9375. i foi conver-do para double iresult = i / d; //perda de preciso -> Isso um erro de compilao Iresult = (int) i/d; // iresult 0, uma vez que a parte fracionria ser perdida
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

27

CONTROLE DE FLUXO
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

28

Condicional if
// if then if (x>y) { // se verdadeiro execute aqui }; // if then else if (x>y) { // se verdadeiro execute aqui } else { //se falso execute };
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

29

Condicional switch
switch (varDecisao) { case valor1: {// se varDecisao == valor1 } break; case valor2: {// se varDecisao == valor2 } break; ... default: {// se nenhum } break; };

varDecisao pode ser dos -pos byte, char, short, int


Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

30

Ciclos for
// Estrutura for (inicializao; teste; incremento) { bloco de execuo } // Exemplo for (i=0; i<100; i++) { bloco de execuo } // Erro comum for (i=0; i<100; i++); a++;
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

31

Ciclos while
// Estrutura while (condio) { bloco de execuo } // Exemplo i = 0; while (i<arranjo1.length) { bloco de execuo i++; }
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

32

Ciclos do-while
// Estrutura do { bloco de execuo } while (condio) // Exemplo i = 0; do { bloco de execuo i++; } while (i<10)
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

33

Saindo de ciclos usando o break


// Exemplo i = 0; while (i<arranjo1.length) { bloco de execuo if resultado = arranjo[i]; break; } }
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

34

Saindo de ciclos aninhados


// Exemplo sai: for(int i=1;i<=5;i++) { // ciclo 1 for (int j=1;j<=5;j++) { // ciclo 2 if (i + j > 5) { break sai; } } } // vai sair aqui (pulando dois ciclos) }

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

35

ARRANJOS
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

36

Arranjos
// Arranjos (arrays) int vetorzinho[]; // array unidimensional int[] outroVetor; // a mesma coisa float[][] umaTabela; // array bidimensional // Arrays de tipos complexos(instancias de classes) Font[] variasFontes; String[] nomes;
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

37

Inicializando arranjos
// Inicializando int[] maisUmVetor = new int[10]; String[] nomes = new String[100]; // criando e inicializando um arranjo int[] conjunto = {9, 13, 15, 16, 20, 23};

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

38

Clonando um arranjo
// Clonando int[] a = {940, 880, 830, 790, 750, 660, 650, 590, 510, 440}; int[] b = new int[10]; // clonando um arranjo b = a.clone(); b[3] = 5; a -> 940 880 830 790 750 660 650 590 510 440 b -> 940 880 830 790 750 660 650 590 510 440 Alterao ordinria da atribuio b[3] = 5; a -> 940 880 830 790 750 660 650 590 510 440 b -> 940 880 830 5 750 660 650 590 510 440
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

39

ENTRADA E SADA SIMPLES


Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

40

Mtodos de sada
Objeto sta-c System.out
Instncia da classe java.io.PrintStream
Mtodo para uxo buferizado de sada [buer]

print(Object o): imprime o objeto o usando seu mtodo toString; print(String s): imprime a string s; print(base_type b): imprime o valor de b conforme seu -po bsico; Println(String s): imprime a string s, seguida pelo caractere de nova linha;
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

41

Java.u@l.Scanner
Entrada de dados a par-r do console
System.in :: objeto associado ao disposi-vo de entrada padro
import java.io.*; import java.u-l.Scanner; public class nInputExample { public sta@c void main(String[] args) throws IOExcep-on { Scanner s = new Scanner(System.in); System.out.print(Entre sua altura em cm:); oat height = s.nextFloat(); System.out.print(Entre seu peso em kg:); oat weight = s.nextFloat(); oat bmi = weight/(height*height)*10000; System.out.println(Seu ndice de massa corporal : + bmo + .); Entre sua altura em cm: 180! } Entre seu peso em kg: 80.5! }

Seu ndice de massa corporal : 24.84568.!


Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

42

Mtodos de java.u@l.Scanner
hasNext(): retorna trus se e soente se existe mais um token no string de entrada next(): retorna o prximo token; gera um erro se no exis-r mais tokens hasNextType(Tipo): retorna true se e somente se existe mais um token no uxo de entrada e se pode ser como sendo do -po (bsico) nextType(Tipo): retorna o prximo token do uxo de entrada como um -po base correspondente a Tipo; gera erro
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

43

Alm disso, podem processar linha a linha


hasNextLine(): retorna true se e somente se o uxo de entrada tem outra linha nextLine(): avana at o nal da linha corrente e retorna toda a entrada que foi deixada para trs ndlnLine(String s): procura uma string que combine com o padro (expresso regular) s na linha corrente. Se encontrar retorna-o e avana para o primeiro caractere aps o padro. Se no encontrar retorna null e no avana
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

44

UM PROGRAMA DE EXEMPLO
Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

45

Estudo de Caso: CreditCard

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

46

A classe CreditCard

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

47

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

48

A classe Test

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

49

A classe Test

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

50

Sada da classe Test

Algoritmos e Estrutura de Dados Conceitos Bsicos de Programao em Java 2011 Vinicius Cardoso Garcia

51

Vous aimerez peut-être aussi