Linguagem e Técnicas em Programação - UEG

Propaganda
Professor: José Ronaldo Leles Júnior
Email: [email protected]
Curso: Sistemas de Informação
Universidade Estadual de Goiás
Campus Posse
Ano 2015
Uma breve história do Java
 1991 - 1994
 O
Green (um pequeno grupo de projeto da Sun
Microsystems) pretendia criar uma nova plataforma para o
desenvolvimento de equipamentos de modo que seu software
pudesse ser portado para os mais diferentes tipos de
dispositivos.
 James Gosling, um dos líderes da equipe, propôs criar uma
nova linguagem que fosse simples, portátil e fácil de
programar.
 Surge a linguagem interpretada Oak (carvalho em inglês).
 Problemas de copyright fazem o nome Oak ser trocado por
Java.
 1995
 A linguagem Java foi apresentada formalmente pela Sun no
Sun Word’95.
 A Sun percebeu que poderia utilizar o Java para rodar pequenas
aplicações (applets) dentro do browser.
 1996
 A Sun disponibilizou gratuitamente para a comunidade de
software um conjunto de ferramentas para desenvolvimento Java
denominado JDK 1.02 (Java Development Kit).
 2009
 A Oracle comprou a Sun.
Histórico das versões da plataforma Java
 Existe compatibilidade para trás em todas as versões do Java.
Atualmente a plataforma está
organizada em três segmentos:
 JavaME
(Java Micro Edition) – Destinado aos
dispositivos computacionais móveis.
 JavaSE (Java Standard Edition) – Integra os elementos
padrão da plataforma e permite o desenvolvimento de aplicações
de pequeno e médio porte. Inclui todas as APIs consideradas de
base, além da máquina virtual padrão.
 JavaEE (Java Enterprise Edition) – Voltada para a
construção de aplicações corporativas complexas, isto é, de
grande porte. Adiciona APIs específicas aos elementos padrão da
plataforma.
Características principais
 Orientada a objetos: Java é orientada a objetos e atende a
todos os requisitos necessários para isso: oferece mecanismo de
abstração, encapsulamento e hereditariedade. Com exceção de
seus tipos primitivos de dados, tudo em Java são classes ou
instâncias de classes.
 Independência de plataforma: Seus programas não são
compilados para uma plataforma específica, mas, sim, como
bytecodes – forma intermediária de código que funciona como
uma linguagem de máquina para a JVM (Java Virtual Machine).
 Sem ponteiros: Java não possui, i, e., não permite a
manipulação direta de endereços de memória nem exige que os
objetos criados sejam explicitamente destruídos. Toda a
manipulação de variáveis e objetos se dá por meio de referências.
 Performance:
Foi melhorada pela incorporação de um
compilador JIT (Just In Time) na JVM que, durante a carga do
programa, converte os bytecodes em código nativo e possibilita
uma melhoria significativa na performance dos programas Java.
 ATIVIDADE: Pesquise sobre a tecnologia HotSpot da Sun.
 Multithreaded: Java oferece suporte para criação e uso de
threads, possibilitando inclusive sua sincronização.
Ambiente Java
 Java é uma linguagem independente de plataforma - seus
programas são compilados em um formato próprio chamado
bytecodes.
 Em cada SO deve existir uma JVM apropriada capaz de
interpretar os bytecodes.
 O ambiente Java é composto com a JVM, sua API e com as classes
da aplicação.
 Um ambiente mínimo permite apenas a execução da aplicação
Java. JRE (Java Runtime Environment)
Ambiente Java
 Máquina Virtual
 Em uma linguagem de programação como C e Pascal, temos a
seguinte situação:
 O Java utiliza o conceito de máquina virtual.
Máquina virtual = INTERPRETADOR?
 Ela representa um conceito bem mais amplo...
 ela é responsável por gerenciar memória, threads, a pilha de
execução etc.
Slogan Java
Write once, run anywhere
“Escreva uma vez, rode em qualquer lugar”
JVM? JRE? JDK? O que devo baixar?
 JVM = apenas a virtual machine, esse download não existe, ela
sempre vem acompanhada.
 JRE = Java Runtime Environment, ambiente de execução Java,
formado pela JVM e bibliotecas, tudo que você precisa para executar
uma aplicação Java.
 JDK = Java Development Kit: é formando pela JRE somado, com o
compilador “javac”. É o que nós desenvolvedores precisamos. 
Tutorial de instalação do Java no Windows:
http://www.k19.com.br/artigos/como-instalar-o-jdk-7-no-windows-8/
Tutorial de instalação do Java no Linux:
http://www.k19.com.br/artigos/como-instalar-o-jdk-7-no-ubuntu-13-10/
Especificação versus Implementação
A
Java Virtual Machine é uma especificação –
utilizaremos a fornecida pela Oracle/Sun.
 Existem outras JVMs disponíveis, como a JRockit da BEA, a
J9 da IBM, entre outras.
 Toda JVM deve ser certificada pela Sun, provando a sua
compatibilidade.
Sintaxe java
 Programa mínimo
 Todo programa Java deve ter,
no mínimo o método
main(String[] args) declarado como public, static e void
dentro de alguma de classe.
 O código do programa Java deve ser salvo com a extensão “.java”.
Exemplo: OlaMundo.java
Uso de maiúsculas e minúsculas
 O Java é uma linguagem Case Sensitive – letras maiúsculas e
minúsculas são consideradas diferentes:
 nome é diferente de NOME
 Public é diferente de PUBLIC
 etc.
Comentários
 Dentro dos programas Java é permitida a inclusão de comentários.
 // (comentário de uma única linha)
 /*
*/ (comentário de bloco – múltiplas linhas)
 /** */
(comentário de documentação – múltiplas linhas)
 Exemplo de comentário gerado pela ferramenta javadoc, contida no
jdk.
Compilação e execução
 Por meio do console é possível navegar até o diretório em
que o arquivo foi salvo, e sua compilação usa o comando:
javac [nome_da_classe].java
 Quando a compilação acontece corretamente, nenhuma
mensagem é exibida, produzindo o arquivo .class bytecode.
 Para executar o programa é preciso acionar a JVM com o
comando: java [nome_da_classe]
 A extensão .class não deve ser fornecida quando se executa
um programa Java.
 Fragmento que mostra o resultado da compilação e
execução do programa.
Tipos de dados primitivos
 Um tipo de dados estabelece um conjunto particular de
valores que podem ser representados dentro de um
programa e para os quais podem ser definidas operações
específicas.
 Os tipos primitivos Java são os mesmos encontrados na
maioria das linguagens de programação e permitem
representar valores numéricos, caracteres simples e valores
lógicos.
Tipos de dados primitivos
Caracteres especiais
 Representação de caracteres especiais
Variáveis
 O nome de uma variável em Java, pode ser formado por
uma seqüência de um ou mais caracteres alfabéticos e
numéricos.
 Regra – pode ser iniciado por:



Uma letra;
_ (undecore);
$ (cifrã0)
 Exemplos válidos
 a, total, x2, $valor, _quantidade
 Exemplos inválidos
1x, total Geral, numero-minimo, void, super
*void e super são exemplos de palavras reservadas da linguagem Java.
Declaração de variáveis
 Sintaxe de declaração de variável em Java
<Tipo> <nome>

Exemplos: int contador; double valor; boolean condicao;
 Podemos definir um valor inicial para a variável
diretamente em sua declaração

Exemplos: int contador = 10; double valor = 10.5;
boolean = true;
O Java é uma linguagem “Fortemente tipada”.
Exercícios
1) Na empresa onde trabalhamos, há tabelas com o quanto foi gasto em cada
mês. Para fechar o balanço do primeiro trimestre, precisamos somar o gasto
total. Sabendo que, em Janeiro, foram gastos 15000 reais, em Fevereiro, 23000
reais e em Março, 17000 reais, faça um programa que calcule e imprima o gasto
total no trimestre. Siga esses passos:
a) Crie uma classe chamada BalancoTrimestral com um bloco main, como
nos exemplos anteriores;
b) Dentro do main declare uma variável inteira chamada gastosJaneiro e
inicialize-a com 15000;
c) Crie também as variáveis gastosFevereiro e gastosMarco, inicializando-as
com 23000 e 17000, respectivamente, utilize uma linha para cada declaração;
d) Crie uma variável chamada gastosTrimestre e inicialize-a com a soma das
outras 3 variáveis:
int gastosTrimestre = gastosJaneiro + gastosFevereiro + gastosMarco;
e) Imprima a variável gastosTrimestre.
2) Adicione código (sem alterar as linhas que já existem) na classe anterior
para imprimir a média mensal de gasto, criando uma variável mediaMensal
junto com uma mensagem. Para isso, concatene a String com o valor, usando
"Valor da média mensal = "+ mediaMensal.
Escopo de variáveis
 É o trecho de código em que aquela variável existe e onde é
possível acessá-la.
 Variáveis podem ser declaradas em qualquer ponto de um
programa Java, sendo válidas em todo o escopo em que foram
declaradas e nos escopos internos a esses.
 Variáveis locais
 São variáveis declaradas dentro de método ou
construtores (veremos sobre construtores mais adiante).
 O ciclo de vida de uma variável local vai do ponto onde
ela foi declarada até o fim do bloco onde ela foi
declarada. Pode-se verificar isso no código do slide
anterior.
 Variáveis de instância (ou de objetos)
 São os atributos dos objetos (veremos sobre atributos
mais adiante).
 São declaradas dentro da classe, mas fora de qualquer
método ou construtor.
 Ficam em escopo enquanto o objeto existir.
Casting e promoção
 Alguns valores são incompatíveis para fazer atribuição direta
 A promoção ocorre automaticamente na conversão de tipo mais
simples em outro mais complexo
 A conversão de tipos mais complexos em mais simples
é chamada de casting.
Caso não tão comum de casting:
Castings possíveis
 Abaixo estão todos os castings possíveis na linguagem Java.
 A indicação Impl. quer dizer que o cast é implícito e automático.
Controle de Fluxo
 O if e else
 Sintaxe básica:
Condição booleana é qualquer expressão que retorne true ou false. Para isso,
podemos utilizar outros operadores (veremos isso mais adiante)
Exemplo:
Operadores
 A linguagem Java oferece um conjunto amplo de
operadores destinados à realização de operações de
atribuição, aritméticas, lógicas, relacionais e bit-a-bit.
 Operador de atribuição simples

Usa a seguinte sintaxe:

Em Java é válido o encadeamento de atribuições em que todas
as variáveis são inicializadas com o mesmo valor:
 Operadores aritméticos

Os operadores de adição, subtração, multiplicação e divisão se
comportam exatamente como na álgebra tradicional.

Operadores de incremento e decremento
MÃO NA MASSA: Vamos elaborar um programa de acordo as
sentenças acima e imprimir os resultados obtidos.
 Operadores relacionais

Permitem comparar valores, variáveis ou resultado de
expressões retornando um resultado do tipo lógico (true ou
false).

Operadores relacionais duplos não podem conter espaços em
branco entre seus símbolos.
 Operadores lógicos

Conectam logicamente o resultado de diferentes expressões
aritméticas ou relacionais.

Operadores lógicos duplos não podem conter espaços em
branco entre seus símbolos.
MÃO NA MASSA:
Construa um programa de acordo com as sentenças
abaixo:
a)
Crie uma classe chamada PartidaDeFutebol;
b)
Declare uma variável com o nome donoDaBola e outra filhoDoDono
(Ambas do tipo boolean e inicializadas com true ou false – fica a gosto do
freguês );
c)
O programa deve verificar se o jogador é o dono da bola ou se é filho do
dono;
d)
No caso de qualquer uma das possibilidade retornar verdadeiro, o programa
deverá imprimir a mensagem: “Pode jogar!”, senão imprimir a mensagem:
“Não pode jogar!”.
 Operadores de atribuição composta

Os exemplos acima podem ser transformados no código
abaixo:

Os operadores de atribuição compostos reduzem a escrita de
código e otimizam a execução do programa.
 Operador ternário

Avaliador de condição que permite utilizar o valor de duas
expressões diferentes conforme o resultado da condição
avaliada.
Sintaxe:
<condição> ? <expressão_verdadeira> : <expressão_falsa>
Exemplo:
Bibliografia
 Junior, Peter Jandl. Java Guia do Programador. 2º ed. São
Paulo: Novatec, 2013.
 Caelum. FJ-11: Java e Orientação a Objetos. (Apostila).
Disponível em <http://www.caelum.com.br/apostilas>.
Download