josé maria monteiro - ifrn.edu.brclaytonmaciel/files/20111/peoo/aula 2... · completo para o...

37
1 José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro Pontifícia Universidade Católica do Rio de Janeiro – PUC PUC-Rio Rio Departamento de Informática Departamento de Informática [email protected] [email protected] rio.br “Nada existe no mundo tão poderoso quanto uma idéia cujo tempo chegou”. Victor Hugo Clayton Maciel Costa Campus: Ipanguaçu Curso: Técnico em Informática [email protected]

Upload: nguyennhan

Post on 11-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

1

José Maria Monteiro

Pontifícia Universidade Católica do Rio de Janeiro Pontifícia Universidade Católica do Rio de Janeiro –– PUCPUC--RioRioDepartamento de InformáticaDepartamento de Informática

[email protected]@inf.puc--rio.brrio.br

“Nada existe no mundo tão poderoso

quanto uma idéia cujo tempo chegou”.Victor Hugo

Clayton Maciel Costa

Campus: IpanguaçuCurso: Técnico em Informática

[email protected]

2

Unidade II: Introdução à Linguagem Java

� O nome “java” é usado para referir-se a:– Uma linguagem de programação orientada a

objetos;

– Uma coleção de APIs (classes, componentes,frameworks) para o desenvolvimento de aplicaçõesmultiplataforma;

– Um ambiente de execução presente em browsers,eletrodomésticos, mainframes, SOs, celulares,palmtops, cartões inteligentes, …

� James Gosling, sun microsystems, 1995;– Linguagem projetada para eletrodomésticos

Introdução à Linguagem Java

3

� Origem e Evolução

– 1991 (Green Project/Oak) - SW p/ dispositivos de eletrônicos em rede. Requisitos:• suporte a diferentes plataformas• distribuição de software via rede• garantia de confiabilidade de código• baixos requisitos de memória• código pequeno

– 1994 - HotJava - browser 100% Java– 1995 - lançada no SunWorld (voltada à Web)

Introdução à Linguagem Java

A Linguagem Java

� Origem e Evolução

– Ideal para a Internet;

•Os applets são colocados em páginas html

• Servlets/JSP

– Independente da Internet;

• Pode ser usada para o desenvolvimento de aplicações standalone

– Aplicações de Console (DOS)

– Aplicações Desktop (Windows Forms)

• E muito mais …

4

A Linguagem Java

� Tecnologia e Conceitos

– A evolução da linguagem é controlada peloJava Community Process (www.jcp.org)formado pela Sun e usuários Java;

– Ambientes de execução (JRE) e dedesenvolvimento (SDK) são fornecidos porfabricantes de hardware e software;

– Java possui uma coleção de APIs (bibliotecas)padrão que podem ser usadas para construiraplicações• Organizadas em pacotes (java.*. Javax.* e extensões);

• Usadas pelos ambientes JRE e SDK;

� Terminologia

– JDK - Java Development Kit: Terminoligia utilizada até a versão 1.1 para identificar a plataforma Java.

– Java 2: Terminologia utilizada a partir da versão 1.2 da plataforma Java, atualmente na versão 1.4.

– J2SDK – Java 2 Software Development Kit: Ambiente completo para o desenvolvedor Java. Inclui compilador e a Virtual Machine.

– J2RE – Java 2 Runtime Environment: Ambiente apenas para execução de aplicações Java, utilizada em ambientes de produção. Não contém o compilador.

– JVM – Máquina Virtual Java. Máquina imaginária implementada como uma aplicação de software em uma máquina real.

A Linguagem Java

5

� Plataformas Java

Enterprise APIs

Java Development Kit (JDK)

AWTAWT SwingSwing AppletsApplets

ThreadsThreads CollectionsCollections FilesFiles

A Linguagem Java

� PlataformasJava

A Linguagem Java

6

Source: Sun Microsystems, Inc.

A Linguagem Java

� Plataformas Java

A Linguagem Java

� Plataformas Java

7

� Orientada a Objetos;

� Orientada a Eventos;

� C++ like (sem ponteirosexplícitos)

� Distribuída;

� Compilada/Interpretada;

� Robusta;

� Segura;

� Portável;

� Código Móvel;

� Multi-Threaded;

� Garbage Collected;

� Case Sensitive;

� Trat. de Exceções;

A Linguagem Java

� Linguagem Concorrente;

� Ambientes Visuais;

� Programação com Componentes;

� Java é um padrão suportado por várias indústrias;

A Linguagem Java

8

� Objetos;

� Classes (abstratas e concretas);

� Encapsulamento;

� Proteção (public, private, protected, default);

� Herança (simples e “quase múltipla”);

� Polimorfismo;

Orientada a Objetos

A Linguagem Java

C++ Like

class Complex

{

float real, imag;

boolean isReal ()

(

return (imag==0);

}

}

A Linguagem Java

9

� Pacote de classes para programação em rede(java.Net): sockets, urls, http, datagrama, etc;

� Rmi;

� Integração com Corba (Objetos Distribuídos);

� Excelente para o desenvolvimento de aplicações Cliente/Servidor;

Distribuída

A Linguagem Java

� Compilada (bytecodes)� Interpretação (máquina virtual, jvm)� Portável - “write once run anywhere”

Compilada/Interpretada

AloMundo.java

Execução

compilador (javac)

AloMundo.class

interpretador (JVM)

A Linguagem Java

10

HelloWorldApp.class

Compilada/Interpretada

A Linguagem Java

Compilada/Interpretada

HelloWorldApp.javaHelloWorldApp.java

A Linguagem Java

11

Bytecode / API

Interpretador

Java Virtual Machine

Browser

Servidor HTTP

bytecodes

Obs: 5% de C compilado (Desempenho)Obs: 5% de C compilado (Desempenho)

Compilada/Interpretada

A Linguagem Java

Código Nativo

JIT Compiler

Bytecode / API

Java Virtual Machine

Browser

Servidor HTTP

bytecodes

Obs: JIT (Just-in-Time compiler, 50% de C compilado (Desempenho)

A Linguagem Java

12

Código Nativo

Compilador Convencional

Código Fonte Bibliotecas/API

Compilada/Interpretada

Ex: Excelsior JET (http://www.excelsior-usa.com/products.html)

“Excelsion JET: Transforms Java applications into native Win32 executables that run ate the speed of C++ applications”

Obs: Ganha desempenho, mas, perde portabilidade. Desempenho similar a C++.

A Linguagem Java

Portável

� Planejada para sistemas embutidos:hardware muito heterogêneo;

� Bytecode portável;

� “Escreva uma vez e rode em qualquer lugar”;

IBM / Aix PC / Windows Sun / Solaris

JavaVM JavaVM JavaVM

Bytescodes (.class)

A Linguagem Java

13

HelloWorldApp.class

Portável

(JVM) (JVM) (JVM)

A JVM é específica para cada SO e Hardware.

A Linguagem Java

Robusta

� Não permite acesso direto à memória;

– (não utiliza ponteiros explícitos);

� Possui coletor de lixo (garbagge collector);

� Possui tratamento de exceções;

� Fortemente tipada;

� Implementa o conceito de cast’s;

� Verificações obrigatórias (ex: arrays);

A Linguagem Java

14

Segura

� Não possui ponteiros explícitos;� Acesso controlado aos recursos do sistema

– ram, sistema de arquivos;

� Gerenciador de segurança – classe securitymanager ;

� Verificação dos bytecodes que trafegam na rede;� Existem ferramentas para encriptação de applets;

Obs: os applets podem ser interceptados através da rede e decompilados com ferramentas de engenharia reversa, como o mocha.

A Linguagem Java

Multi-Threaded

� Implementa threads de forma bastante simplese segura;

� O suporte é dado pela própria linguagem, fazparte do pacote padrão de java (pacotejava.Lang);

� É portável, até mesmo em plataformas semthreads;

A Linguagem Java

15

Tratamento de Exceções

� Permite o tratamento de situações excepcionais;

� Sintaxe apropriada:

– try, catch, finally, throw, throws;

� Exceções embutidas;

� Permite a criação de novas exceções

– definição de situações excepcionais;

A Linguagem Java

Estrutura de um Programa Java

class <nome_da_classe> {

public static void main ( < parâmetros > ) {

< declarações >

< comandos >

}

}

main: método por onde se inicia a execução do programa.

public: é o qualificador do método, indica que este método é acessível a objetos de classes externas.

static: qualificador, os métodos statics podem ser invocados mesmo sem existir um objeto instanciado da classe.

void: indica que o método não tem valor de retorno.

A Linguagem Java

16

O Primeiro Programa Java

public class HelloWorld {

public static void main ( String args[ ] ) {

System.out.println(“Hello World!”);

}

}

Salvar o arquivo com o nome da classe: HelloWorld.java

Para Compilar: javac HelloWorld.java

Para Executar: java HelloWorld

A Linguagem Java

Literais e Tipos

� Tipos representam um valor, uma coleção devalores ou coleção de outros tipos. Podem ser:

– Tipos básicos, ou primitivos: quando representamunidades indivisíveis de informação (de tamanhofixo).

– Tipos complexos: quando representam informaçõesque podem ser decompostas em tipos “menores”(primitivos ou outros tipos complexos).

A Linguagem Java

17

Literais e Tipos

� Literais: São valores representáveis literalmente:

– Números: 1, 2.14, 1.6e-23, etc

– Valores booleanos: true e false

– Caracteres individuais: ‘a’, ‘u0041’,’\n’, etc

– Seqüências de caracteres: “aaa”, “Java”

– Vetores de números, booleanos ou strings: {”a”,”b”}

Compostos

Unidimensionais

A Linguagem Java

Tipos Primitivos

� Têm tamanho fixo.

� Têm sempre um valor default.

� Armazenados na pilha (acesso rápido).

� Não são objetos.

A Linguagem Java

18

Tipos Primitivos

� boolean

� char

� byte

� short

� int

� long

� float

� double

true ou false

caracteres ( Unicode )

inteiro ( 8 bits )

inteiro (16 bits)

inteiro ( 32 bits )

inteiro ( 64 bits)

ponto flutuante ( 32 bits )

ponto flutuante (64 bits )

A Linguagem Java

Operadores

� Operadores Relacionais:

> >= < <= == !=

� Operadores Lógicos:

&& ( and) || (or) ! ( not )

� Precedência:

Unários, aritméticos, relacionais, lógicos( primeiro && e depois ||)

A Linguagem Java

19

Strings

� “String” não é um tipo primitivo e sim uma classe;

� Literais: “”, “Hello”, “World”;

� Concatenação: “Hello” + “World” = “HelloWorld”;

� Conversão Implícita: “Hello” + 2001 =“Hello2001”;

� Comparação de Strings: a.equals(b) ;

� Tamanho de uma String: a.length() ;

A Linguagem Java

Atribuição

< IDENTIFICADOR> = < EXPRESSÃO>

Ex: idade = 23; sexo = “M”; tem_filhos = false;

Incremento e Decremento

idade = idade + 1; ou idade + = 1; ou idade ++;

idade = idade - 1; ou idade - = 1; ou idade --;

A Linguagem Java

20

Estrutura Condicional

if ( < EXPRESSÃO > ) {< BLOCO DE COMANDOS >

}else {

< BLOCO DE COMANDOS >}

FORMA GERAL:

Onde: <bloco-de-comandos> é uma seqüência de comandos entre { e }.

A Linguagem Java

...

int x = 5;

int y = 10;

if (x == y) {

System.out.println( “x = y” );

}

else {

System.out.println( “x != y”);

}

...

EXEMPLO:

Estrutura Condicional

A Linguagem Java

21

...int x, y;Scanner s = new Scanner(System.in);x = s.nextInt ();y = s.nextInt ();

if (x > y )System.out.println (x);

else if (y > x)

System.out.println (y);else

System.out.println (“x = y”);...

Exemplo:

maior entre dois números

Estrutura Condicional

A Linguagem Java

...if (x > y )

System.out.println (x);else

if (y > x) System.out.println (y);

else System.out.println (“x = y”);

...

Estrutura Condicional ...if (x > y ){

System.out.println (x);}else {

if (y > x) {

System.out.println (y);}else{

System.out.println (“x = y”);}

} ...

PS: Escreva com clareza!!!

A Linguagem Java

22

Estrutura Condicional

...if ((x > y) && (x > z))

System.out.println (x);else if ((y > x) && (y > z))

System.out.println (y);else

System.out.println (z);...

Exemplo:

maior entre três números

A Linguagem Java

while ( < EXPRESSÃO > ) {

< BLOCO DE COMANDOS >

}

FORMA GERAL:

Estrutura de Repetição: While

A Linguagem Java

23

EXEMPLO:

Soma de 1 a N ...Scanner s1 = new Scanner(System.in);int i, n, s;n = s1.nextInt ();i = 1; s = 0;while (i < = n) {

s = s + i;i = i + 1;

}System.out.println(s);

...

Estrutura de Repetição: While

A Linguagem Java

do {

< BLOCO DE COMANDOS >

}

while ( < EXPRESSÃO > );

FORMA GERAL:

Estrutura de Repetição: Do…While

A Linguagem Java

24

EXEMPLO:

Soma de 1 a N ...int i, n, s;n = Util.readInt ();i = 1; s = 0;do {

s = s + i;i = i + 1;

}while (i < = n);System.out.println(s);

...

Estrutura de Repetição: Do…While

A Linguagem Java

for ( < INICIALIZAÇÃO >; < TESTE >; < ATUALIZAÇÃO >; ) {

< BLOCO DE COMANDOS >

}

FORMA GERAL:

Estrutura de Repetição: For

A Linguagem Java

25

int soma = 0 ;

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

soma = soma + i ;

}

...

EXEMPLO:

Estrutura de Repetição: For

A Linguagem Java

int soma = 0 ;

for ( int i =1 , j =2; i <= 100 ; i ++, j ++ ) {

soma = soma + i + j ;

}

...

EXEMPLO:

Estrutura de Repetição: For

A Linguagem Java

26

int soma = 0 ;

for ( int i =1 , j =2, System.out.println(i); i <= 100 ; i ++, j ++ ) {

soma = soma + i + j ;

}

...

EXEMPLO:

Estrutura de Repetição: For

Erro de compilação. Código feio.

A Linguagem Java

int soma = 0 ;

int i, j;

for ( i =1 , j =2, System.out.println(i); i <= 100 ; i ++, j ++ ) {

soma = soma + i + j ;

}

...

EXEMPLO:

Estrutura de Repetição: For

Código feio.

A Linguagem Java

27

int soma = 0 ;

int i = 1;

for (;;) {

soma = soma + i ;

System.out.println(soma);

i++;

}

...

EXEMPLO:

Estrutura de Repetição: For

A Linguagem Java

FORMA GERAL:

switch ( < EXPRESSÃO > ) {case x:

< BLOCO DE COMANDOS >break ;

case y: case z: case w :< BLOCO DE COMANDOS >break ;

default:< BLOCO DE COMANDOS >break ;

}

Estrutura Case

A Linguagem Java

28

switch ( i % 35 ) {case 0:

< BLOCO DE COMANDOS 1 >break ;

case 5: case 10: case 15 :< BLOCO DE COMANDOS 2 >break ;

default:< BLOCO DE COMANDOS 3 >break ;

}

Estrutura Case

Onde: % operador resto da divisão.

char, byte, short ou int.

Constant Expression.

Opcional.

A Linguagem Java

int i = 0;switch (i) {

case 0:System.out.println("Case 0");break ;

case 5: case 10: case 15 :System.out.println("Case 5, 10 ou 15");break ;

default:System.out.println("Case Default");break ;

}

Estrutura Case

Saída: “Case 0”.

A Linguagem Java

29

int i = 10;switch (i) {

case 0:System.out.println("Case 0");break ;

case 5: case 10: case 15 :System.out.println("Case 5, 10 ou 15");break ;

default:System.out.println("Case Default");break ;

}

Estrutura Case

Saída: “Case 5, 10 ou 15”.

A Linguagem Java

int i = 1;switch (i) {

case 0:System.out.println("Case 0");break ;

case 5: case 10: case 15 :System.out.println("Case 5, 10 ou 15");break ;

default:System.out.println("Case Default");break ;

}

Estrutura Case

Saída: “Case Default”.

A Linguagem Java

30

int i = 0;switch (i) {

case 0:System.out.println("Case 0");break ;

case 5: case 10: case 15 :System.out.println("Case 5, 10 ou 15");break ;

}

Estrutura Case

Saída: “Case 0”.

A Linguagem Java

int i = 1;switch (i) {

case 0:System.out.println("Case 0");break ;

case 5: case 10: case 15 :System.out.println("Case 5, 10 ou 15");break ;

}

Estrutura Case

Saída:

A Linguagem Java

31

int i = 5;switch (i) {

case 0:System.out.println("Case 0");break ;

default:System.out.println("Case Default");break ;

case 5: case 10: case 15 :System.out.println("Case 5, 10 ou 15");break ;

}

Estrutura Case

Saída: “Case 5, 10 ou 15”.

A Linguagem Java

int i = 0;switch (i) {

case 0:System.out.println("Case 0");

case 5: case 10: case 15 :System.out.println("Case 5, 10 ou 15");

default:System.out.println("Case Default");

}

Estrutura Case

Saída: “Case 0” “Case 5, 10 ou 15” “Case Default”.

A Linguagem Java

32

int i = 0;switch (i) {

case 0:System.out.println("Case 0");

default:System.out.println("Case Default");

case 5: case 10: case 15 :System.out.println("Case 5, 10 ou 15");

}

Estrutura Case

Saída: “Case 0” “Case Default” “Case 5, 10 ou 15”.

A Linguagem Java

int i = 5;switch (i) {

case 0:System.out.println("Case 0");

case 5: case 10: case 15 :System.out.println("Case 5, 10 ou 15");

default:System.out.println("Case Default");

}

Estrutura Case

Saída: “Case 5, 10 ou 15” “Case Default”.

A Linguagem Java

33

int i = 5;switch (i) {

case 0:System.out.println("Case 0");

default:System.out.println("Case Default");

case 5: case 10: case 15 :System.out.println("Case 5, 10 ou 15");

}

Saída: “Case 5, 10 ou 15”.

Estrutura Case

A Linguagem Java

int i = 0;switch (i) {

case 0:System.out.println("Case 0");

case 5: case 10: case 15 :System.out.println("Case 5, 10 ou 15");break;

default:System.out.println("Case Default");

}

Saída: “Case 0” “Case 5, 10 ou 15”.

Estrutura Case

A Linguagem Java

34

int i = 0;switch (i) {

default:System.out.println("Case Default");break;

case 0:System.out.println("Case 0");

case 5: case 10: case 15 :System.out.println("Case 5, 10 ou 15");break;

}

Saída: “Case 0” “Case 5, 10 ou 15”.

Estrutura Case

A Linguagem Java

Estudo de Caso

35

“A diferença entre problemas e

dificuldades é que os primeiros

têm solução.”Roberto Civita

� A série de fibonacci é formada pela seqüência:

1, 1, 2, 3, 5, 8, 13, … etc.

Escreva um programa que gera a série de fibonacci até ovigésimo termo.

� Faça um programa para calcular o fatorial de um númerolido do teclado.

� Faça um programa que recebe uma frase (várias strings)como parâmetro e a imprime no vídeo.

Exercícios

A Linguagem Java

36

� Escreva um programa que faça o seguinte teste para osnúmeros entre 1 e 100:

– Se for múltiplo de 5 imprima: “fizz”;

– Se for múltiplo de 7 imprima: “buzz”;

– Se múltiplo de ambos imprima: “fizzbuzz”;

Use:Use:

• args[ i ] , para se referir a um valor passado como parâmetro.

• BufferedReader in = new BufferedReader (new InputStreamReader (System.in)); e

String line = in.readLine( ); para ler uma string do teclado.

Desafio

A Linguagem Java

public class Fibonacci{

public static void main(String[] args){

int current, prev = 1, prevprev = 0;System.out.print(prev + " ");for(int i = 0; i < 19; i++){

current = prev + prevprev; System.out.print(current + " "); prevprev = prev; prev = current;

}}

}

Exemplo

A Linguagem Java

37

public class Factorial{

public static void main(String args[]){

int fact = 1;int numero;System.out.println("Digite um numero: ");numero = Util.readInt();for(int i = 2; i <= numero; i++)

fact *= i; System.out.println("O fatorial de " + numero + " e " + fact);

}}

A Linguagem Java

Exemplo