54
ANDRÉ J. A. RAMOS, DESENVOLVEDOR [email protected]

Java - Aprenda rápido

Embed Size (px)

Citation preview

ANDRÉ J. A. RAMOS, DESENVOLVEDOR [email protected]

PROGRAMAÇÃO EM JAVA

HISTORIA DO JAVA A linguagem Java surgiu a partir de

uma pesquisa financiada pela Sun Microsystems em 1991, iniciada sob o codinome de projeto Green.

Com o intuito de se tornar uma linguagem para dispositivos inteligentes destinados ao usuário final e com a premissa de ser uma linguagem próxima as linguagens C e C++ e que pudesse ser executado em diversos hardwares.

Protótipo Star 7 do Projeto Green A princípio, o projeto não teve bons

resultados devido à lentidão do crescimento da área de dispositivos eletrônicos inteligentes, porém com a grande revolução da World Wide Web em 1993, logo se notou o potencial da linguagem para geração de conteúdo interativo e dinâmico, o que deu nova força ao projeto.

Inicialmente o Java foi chamado de Oak por seu criador (James Gosling) em homenagem a uma árvore que dava para a janela do seu escritório na Sun. Descobriu-se mais tarde que já havia uma linguagem de computador chamada Oak. Quando uma equipe da Sun visitou uma cafeteria local, o nome Java (cidade de origem de um tipo de café importado) foi sugerido e pegou.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

PROGRAMAÇÃO EM JAVA Em março de 1995 foi anunciado no

evento SunWorld a tecnologia Java 1.0, inicialmente o foco principal da tecnologia utilizado para divulgação foram os Applets, pequenas aplicações que poderiam ser executadas via web através de um browser.

Em 1998 foi lançado a versão 1.2 (codinome “Playground”) da linguagem Java, está nova versão trouxe uma quantidade muito grande de novas funcionalidades, essa alteração foi tão grande que a pessoa do marketing começou a chamar de Java 2.

As versões 1.3 (codinome “Kestrel”) lançada em 2000 e 1.4 (codinome “Merlin”) lançada em 2002 continuaram sendo chamado de Java 2, pois houveram alterações e melhorias na linguagem mas não tão grandes como na versão 1.2.

Na versão 1.5 lançada em 2004 o pessoal resolveu mudar novamente chamando de Java 5 (codinome “Tiger”), a partir desta versão foi padronizado as novas atualizações.

Em 2006 o Java 6 (codinome “Mustang”) e atualmente o Java está na versão 6 update 26 e a versão 7 tem o codinome “Dolphin”.

Java também é uma linguagem Open Source e não possui um único dono, todas novas atualizações da linguagem são feitas através da JCP (Java Community Process), formada por um conjunto de empresas

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Atualidades

Em 2009 a ORACLE anunciou a aquisição da Sun Microsystems no valor de US$ 7,4 bilhões.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Características-chave

• Simples: A sintaxe do Java é, de fato, uma versão limpa do C++. Não há necessidade

de arquivos de cabeçalho, aritmética de ponteiro (ou mesmo uma sintaxe de ponteiros).

• Orientado a objetos: Os recursos orientados a objetos do java são comparáveis aos do C++. A

principal diferença entre eles está na herança múltipla, que o java substituiu pelo conceito de interface (explicaremos mais a frente).

• Portabilidade: Independe de plataforma. • Interpretado: Os bytecodes gerados pelo compilador são convertidos em códigos de

máquina pela JVM. • Java e a internet: Os programas Java que funcionam em páginas web são chamados Applets.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Processo de escrita compilação

e execução do código

Compilador (JDK)

CÓDIGO - FONTE BYTECODES

JVM

GUI Console

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Portabilidade

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Versão Ano Novos recurso da linguagem Nº de classes e interfaces

1.0 1996 A própria linguagem 211

1.1 1997 Classes internas 477

1.2 1998 Nenhum 1.524

1.3 2000 Nenhum 1.840

1.4 2002 Assertivas 2.723

5.0 2004 Classes genéricas, loop “for each”, varargs, autoboxing, metadados, enumerações, importações estáticas.

3.279

6 2006 Nenhum 3.777

Evolução da linguagem Java

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Nome Sigla Explicação

Java Development Kit JDK Software para programadores que querem escrever programas em Java.

Java Runtime Environment JRE Software para consumidores que querem executar programas Java.

Standard Edition SE Plataforma Java para uso em desktop e aplicativos simples de servidor.

Enterprise Edition EE Plataforma Java para aplicativos complexos de servidor.

Micro Edition ME Plataforma Java para uso em celulares e outros pequenos dispositivos.

Java 2 J2 Termo antiquado que descrevia as versões do Java entre 1998 e 2006.

Software Development Kit SDK Termo antiquado que descrevia o JDK entre 1998 e 2006.

NetBeans ---- Ambiente de desenvolvimento integrado da Sun.

Eclipse ---- Ambiente de desenvolvimento integrado mais utilizado.

Jargão Java

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Depois do JDK ser instalado é necessário configurar algumas coisas.

Instalando o JDK e configurando a variável de ambiente Path no windows

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Compilando & executando em linhas de comando

No diretório onde o arquivo .java estiver, digite: javac NomeDoArquivo.java Esse comando compila, e cria um arquivo .class. Em seguida, digite: Java NomeDoArquivo Esse comando executa o aplicativo.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Fazendo um projeto no eclipse

Na barra de menu click em File > New > Java Project

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Dê um nome ao projeto e

click em Finish

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Após o projeto ser criado estenda a pasta e clique na pasta

src com o botão direito do mouse.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Crie um novo pacote (Package).

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Dê um nome ao pacote e

clique em Finish

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

No pacote crie uma nova classe

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Dê um nome a sua classe (com a inicial maiúscula) e

clique em Finish

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Agora basta digitar o código na linguagem Java!!

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Um programa Java simples

• A linha 1 inicia uma declaração de classe nomeada de MinhaClasse; • A linha 2 abre a classe que é fechada na linha 8; • Na linha 3 é declarado o método principal chamado de main (Principal). O programa é iniciado por ele;

Este programa apenas exibe a mensagem na Janela de comandos:

Bem-vindo ao Java!! ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Comentários

Comentários em uma linha:

// comentário em uma linha

Comentários em mais de uma linha:

/* comentário em

mais de

uma linha

*/

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Tipos de dados

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Variáveis

Declaração:

<Modificador de acesso> <Tipo> <nome da variável> = <valor inicial>;

Private int idade; //apenas declarando

Private int idadeInicial = 18; //declarando e atribuindo um valor

Regras: O nome das variáveis não pode ser o mesmo de palavras reservadas, ter espaços

em branco nem começar com números.

Recomendações:

Por convenção recomenda-se que o nome das variáveis (Atributos) comecem com letra minúscula e, a partir da segunda palavra a primeira letra esteja maiúscula, isto ajuda o programador a diferenciá – la de nome de classes e constantes.

Ex: nomeDaVariavel

Nota: Modificadores de acesso são palavras que decidem se uma classe, um atributo, uma constante ou um método poderão ser acessados por outras classes.

são eles: private, public, protect e abstract.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Palavras Reservadas

As Palavras Reservadas, quer dizer que nenhuma das palavras da lista abaixo podem ser usadas como identificadores, pois, todas elas foram reservadas para a Linguagem Java.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Constantes

Declaração:

<Modificador de acesso> final <Tipo> <nome da variável> = <valor

inicial>;

Private final double PI; //apenas declarando

Private final double PI = 3,14159265; //declarando e atribuindo um valor

Regras:

O nome das constantes não pode ser o mesmo de palavras

reservadas, ter espaços em branco nem começar com números.

Recomendações:

Por convenção recomenda-se que o nome das constantes esteja com

todas as letras maiúsculas, isto ajuda o programador a diferenciá–la de nomes

de classes e variáveis.

Ex: NOME_DA_CONSTANTE ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Operadores

Aritméticos: ++ incremento

+ Somar -- Decremento

- Subtrair Lógicos

* Multiplicar && AND

/ Dividir || OR

% Resto da divisão ! NOT

Relacionais

== IGUAL

!= DIFERENTE

> MAIOR QUE

< MENOR QUE

<= MENOR OU IGUAL

>= MAIOR OU IGUAL

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Strings Conceitualmente, Strings são seqüência de caracteres Unicode. Por exemplo a string “Bem-vindo ao Java” contém 15 caracteres.

Declarando strings e atribuindo valores:

Private String rot = “Meu nome é: ”;

Private String nome = “Fulano ”;

Concatenando Strings:

O Java, como a maioria das linguagens de programação, permite utilizar + para agrupar (concatenar) strings.

Private String declaracao = rot + nome;

Se imprimir-mos a variável declaracao o programa irá exibir:

Meu nome é: Fulano

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Testando igualdade de strings: Para testar se duas string são iguais, use o método equals(). A expressão

s.equals(t) retorna true se s e t forem iguais e false caso contrário.

Ex.::

String pai = “João”;

String filho = “José”;

if ( pai.equals(filho)) //maneira correta de comparar strings

System.out.println(“é igual”);

Para ignorar maiusculas e minúsculas utilize o método equalsIgnoreCase().

Ex.::

if (pai.equalsIgnoreCase(filho));

System.out.println(“é igual”);

Não utilize o operador == para testar igualdade de duas strings! Ele

determina se as strings são armazenadas na mesma localização, pois pode

acontecer que esteja.

Ex.::

if ( pai == filho) //maneira INCORRETA de comparar strings

System.out.println(“é igual”);

Strings

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Comandos E/S

Imprimindo em console: O comando System.out.print(); imprimi mensagens no console.

Para impressão temos também:

println( ) – imprime e põem o cursor na próxima linha (usamos o operador

+ para concatenar strings e /ou variáveis);

printf( ) – impressão formatada (usamos tags marcadoras de posição de

variáveis).

Veja algumas tags e sua utilização:

Tag Utilização Exemplo Resultado

%d Marca posição de números inteiros.

int x = 2; Printf(“o dobro de 2 = %d ”, x * 2);

o dobro de 2 = 4

%f Marca posição de números reais.

float y = 5; Printf(“a metade de 5 = %d ”, y / 2);

a metade de 5 = 2,5

%s Marca posição de Strings String nome = “Fulano”; Printf(“Meu nome é: %s ”, nome);

Meu nome é: Fulano

%c Marca posição de caracter char car = ‘A’; Printf(“O nome começa com a letra %c”, car);

O nome começa com a letra A

%b Marca posição de boolean boolean logic = true; Printf(“%b ”, logic);

true

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Usando a classe Scanner

para ler

Para ler dados do usuário digitados no teclado, utilizamos o método next() da classe Scanner.

Para fazer isto, antes precisamos criar um objeto Scanner:

Scanner leitura = new Scanner(System.in);

O método next() retorna o que foi digitado, por isso devemos logo atribui-lo a uma variável, assim:

String nome = leitura.next();

Utilizamos métodos diferentes de acordo com o tipo de dado a ser lido

next( ) – ler apenas uma palavra;

nextLine( ) – ler uma linha inteira;

nextInt( ) – ler um número inteiro;

nextFloat( ) – ler um número real;

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

import O compilador utiliza as instruções import para localizar classes necessárias

para compilar um programa Java.

Ex.:: import java.util.Scanner;

Para cada nova classe da Java API que usamos, devemos indicamos o pacote

no qual você pode encontrar aquela classe. Esta informação sobre os pacotes

é importante.

Java importa automaticamente classes do pacote java.lang, como a classe

System. Portanto, não são necessárias instruções import para as classes que

estão no pacote java.lang.

Obs.:: Todas as instruções import devem aparecer antes da definição de

classe. Colocar uma instrução import dentro do corpo de definição de uma

classe ou depois de uma definição de classe é um erro de sintaxe.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Imprimindo e lendo através de caixas de Diálogo

A classe JOptionPane contém alguns métodos static que são usados para ler dados e exibir mensagens por meio de caixas de diálogo. Conheça alguns:

JOptionPane.showMessageDialog(null,”Hello world!!”); - exibe mensagem para o usuário;

JOptionPane.showInputDialog(”Qual o seu nome?”); - exibe mensagem para o usuário e ao mesmo tempo retorna a string digitada por ele em um campo de texto, por isso deve ser atribuído a uma variável do tipo String;

String nome = JOptionPane.showInputDialog(”Qual o seu nome?”);

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Fluxo de controle

Instruções condicionais (if, else, else-if):

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Fluxo de controle

Loops (while,do-while):

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Fluxo de controle

Loops determinantes (for):

Obs.:: O contador também pode ser declarado fora da estrutura.

Contador com valor inicial incremento Condição do laço

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Fluxo de controle

seleções múltiplas (switch-case):

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Arrays (vetores e matrizes)

Declaração de vetores:

Tipo[] nomeDoVetor = new Tipo[TamanhoDoVetor];

Ex.::

int[] id = new int[15];

String[] nomes = new String[4];

Inicialização de vetores : String[] nomes = {“fulano”, “josé”, “joão”, “maria”,};

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Arrays (vetores e matrizes)

Declaração de matrizes: Tipo[][] nomeDaMatriz = new Tipo[nº de linhas] [nº de colunas];

Ex.:: int[][] id = new int[3][2];

String[][] nomes = new String[3][2];

Inicialização de matrizes : String[][] nomes = { {“fulano”, “josé”}, { “joão”, “maria”,}, { “james”, “Bond”} };

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Arrays (vetores e matrizes)

Usando for para preencher vetores:

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Introdução a Programação Orientada a Objetos

Você já sabe que Java é uma linguagem de programação orientada a objetos. Vamos entender o que isto significa.

Classe: Uma classe pode ser definida como um modelo que descreve um conjunto de elementos que compartilham os mesmos atributos, operações e relacionamentos. – Ex.::

Veículo pode ser considerado uma classe, pois possui um conjunto de elementos que compartilham os mesmos atributos (cor, portas, pneus, volante, para-brisas, etc) e ações (acelerar, frear, estacionar, etc).

Objeto: É um elemento representante de uma classe, é uma instância da classe.

Ex.:: Um carro é um objeto pertencente a classe Veículo.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Classes em Java

Veiculo Cor numPortas

acelerar() frear() estacionar()

DIAGRAMA UML

CÓDIGO EM JAVA Para programar orientado a objetos você precisa abstrair os atributos e comportamentos dos objetos do mundo real, em seguida escrever o código utilizando os recursos da linguagem Java.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Objetos e variáveis-objeto

Construímos um objeto com a palavra new seguida da chamada ao construtor da classe. Ex.:: new Veiculo(); Podemos criar uma variável para armazenar esse objeto (por isso são chamadas de variável-objeto). Essa variável precisa ser do tipo da classe a que se refere. Ex.:: Veiculo carro = new Veiculo(); Agora podemos usar essa variável-objeto. Para chamar um método de um objeto é necessário enviar uma mensagem para ele. Ex.:: carro.acelerar();

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Métodos

Métodos são os comportamentos de um objeto. A declaração é feita da seguinte forma:

modificador tipoDeRetorno nomeDoMetodo(Parâmetros)

{

instruções;

}

Ex.::

Uma vez desenvolvido esse método dentro de uma classe, para imprimir o dobro de um número basta escrevermos:

O resultado será:

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Herança A herança é o mecanismo de derivação através do qual uma classe

pode ser construída como extensão de outra. Neste processo, todos os

atributos e operações da classe base (superclasse) passam a valer, também,

para a classe derivada (subclasse), podendo esta última definir novos atributos

e operações que atendam suas especificidades.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Herança

Em Java utilizamos a palavra extends para uma subclasse Herdar os atributos e métodos de uma superclasse. Ex.::

O conceito de herança evita que um mesmo código seja digitado várias vezes para classes que tenham os mesmos atributos e possuam o mesmo comportamento.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Polimorfismo

• Polimorfismo é a característica que garante que um determinado método possa produzir resultados diferentes quando aplicado a objetos pertencentes a classes diferentes, dentro de uma hierarquia de classes.

• Através do polimorfismo um mesmo nome de operação pode ser compartilhado ao longo de uma hierarquia de classes, com implementações distintas para cada uma das classes.

• Ex.:: Empregado

calcularSalario()

Mensalista

calcularSalario()

Tarefeiro

calcularSalario()

Horista

calcularSalario()

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Polimorfismo e Interfaces

Interface é um modo de descrever o que as classes devem fazer, sem especificar como devem fazer.

Na linguagem de programação Java, uma interface não é uma classe, mas um conjunto de requisitos para classes que precisam adequar-se a ela.

Observe que o método da interface acima não está desenvolvido, pois isso somente é feito na classe que a implementa. (implements)

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Encapsulamento

As classes normalmente ocultam os detalhes de sua implementação dos clientes das classes. Isso se chama encapsulamento ou ocultamento de informações.

Observação de engenharia de software.::

Os projetistas de classe utilizam dados private métodos public para garantir a noção do ocultamento de informações e o princípio do menor privilégio. Se o cliente de uma classe precisa acessar dados na classe, forneça acesso por métodos public da classe. Fazendo isso, o programador da classe controla como os dados da classe são manipulados (por exemplo, a verificação da validade dos dados pode impedir que os dados inválidos sejam armazenados em um objeto). Este é o princípio do encapsulamento de dados.

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Encapsulamento

Ex.::

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Janelas e componentes swing

Título – setTitle()

JButton

JFrame

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Alguns componentes swing

ANDRÉ J. A. RAMOS, DESENVOLVEDOR

Bibliografia

• Horstmann, Cay S.; Cornell, Gary. Core Java 2,

volume I – fundamentos. São Paulo: Pearson Prentice

Hall, 2010.

• DEITEL, Harvey M.; DEITEL, Paul J. Java como

Programar. 8º ed. São Paulo: Pearson Prentice Hall,

2010.