Buscar

Desenvolvimento de sistemas web1

Prévia do material em texto

- -1
DESENVOLVIMENTO DE SISTEMAS WEB
REVISÃO DA SINTAXE JAVA
- -2
Olá!
Ao final desta aula, você será capaz de:
1. Identificar os conceitos e a sintaxe da linguagem Java, assim como o ambiente de desenvolvimento;
2. Fixar a lógica de programação, utilizando conceitos de orientação a objetos e linguagem Java.
1 Introdução
Nesta aula, veremos a diferenciação superficial dos três ambientes para a linguagem Java: JME, JSE e JEE. Serão
abordadas as diferentes formas de atribuição de valores, bem como os controles de fluxo. Serão abordados,
também, os conceitos básicos de orientação a objetos, aliados diretamente às palavras reservadas da linguagem
Java. Finalmente, serão apresentados os elementos básicos utilizados no controle de erros, particularmente as
palavras-chave utilizadas no controle do fluxo de erros, como try, catch e finally.
Java é uma linguagem de programação lançada pela primeira vez pela Sun Microsystems, em 1995, com o
objetivo de criar uma linguagem orientada a objetos dinâmica, para uso nos mesmos tipos de aplicações
desenvolvidas em C e C ++, mas sem as dificuldades e os erros mais comuns destas linguagens.
Conforme a experiência dos projetistas da linguagem, as escolhas realizadas adicionaram novas características
ou suprimiram outras do C ++, visando criar uma linguagem que facilitou a geração de código robusto, confiável,
facilmente utilizável em plataformas diversas.
A linguagem permite o desenvolvimento de aplicações em diversos ambientes. Existe software Java, desde, para 
 (Celulares, palmtops) como, também, para mainframes. Por essa razão, a linguagemdispositivos pequenos
oferece 3 (três) ambientes de desenvolvimento:
JSE (ou J2SE) Java Standard Edition: 
Ambiente mais utilizado. Seu uso é voltado para PCs e servidores.
JEE (ou J2EE) Java Entreprise Edition: 
Plataforma voltada para redes, Internet, Intranet e afins. Contém uma série de especificações, cada uma com
funcionalidades diferentes: ((Java Database Connectivity) Para acesso a bando de dados.), ((Java ServerJDBC JSP
Pages)Um tipo de servidor Web.) e (Para o desenvolvimento de aplicações Web).Servlets 
JME (ou J2ME) Java Micro Edition: 
- -3
Ambiente de desenvolvimento para dispositivos móveis ou portáteis.
2 Atribuição de valores
A linguagem Java fornece vários operadores para operações aritméticas e booleanas. Possui os operadores +, -, *,
/ normais para operações aritméticas. Suporta, também, o operador de módulo ou resto (%). Por exemplo:
21/3 é igual a 7
21%3 é igual a 0
Você pode, também, utilizar operadores aritméticos ao inicializar variáveis. Por exemplo:
Inicializar x com r + 1:
int x = r + 1;
Você pode, também, optar pelo uso de uma sintaxe abreviada ao efetuar operações em uma mesma
variável. Por exemplo:
x += r;
equivale a x = r + x;
Observe a tabela abaixo:
Incremento/Decrement
Incrementar uma variável é adicionar uma unidade ao seu valor original. Por exemplo:
x = x + 1;
ou
x += 1;
ou
x++;
O mesmo ocorre com o operador de decremento: x--;
- -4
Atenção! O posicionamento do operador de incremento/decremento tem importância. Quando colocado após a
variável, esta é usada e só depois ocorre o incremento. Por exemplo:
int x = 2;
y = x++;
No final armazenará o valor 2 e armazenará o valor 3. Ou seja, a variável foi primeiramente usada, sendoy x x
armazenada na variável e só depois foi incrementada. y 
Observe agora:
int x = 2;
y = ++x;
Agora, armazenará 3 e armazenará 3 porque primeiro a variável será incrementada e, só depois, será usaday x x
e armazenada em . y
Ou seja, em uma operação aritmética, colocar o operador antes da variável incrementará (ou decrementará) a
variável primeiro, antes da avaliação da expressão.
Agora, se você colocar o operador depois da variável, a expressão será avaliada primeiramente.
Exemplos:
int x = 5;
int y = 6;
int r = ++x; // após esta expressão, r = 6 e x = 6
int s = y++; // após esta expressão, s = 6 e y = 7
Operadores para comparação de igualdade
Atenção! Se você utilizar == por engano, para comparar dois objetos, isso, na verdade, irá comparar a referência
dos dois objetos e não os objetos reais. A não ser que você esteja comparando as mesmas referências de objetos,
esta operação retornará falsa:
String x = new String (“My String”);
String y = new String (“My String”);
boolean z = (x == y); // z = falso
boolean w = (x.equals(y)); // w = verdadeiro
- -5
Operadores Booleanos
A comparação pode ser realizada entre tipos primitivos, como valores inteiros, long, double, caracteres etc.
Exemplos:
int r = 3;
int s = 7;
boolean t = r < s; // t = verdadeiro
Operador para comparação de desigualdade
Você pode, também, utilizar e || para verificar condicionais (operações and (e) e or (ou), respectivamente).
2.1 Estruturas de controle de fluxo
Estruturas condicionais
if (condição) {
... // comportamento para quando a condição for verdadeira
}
else {
... // comportamento para quando a condição for falsa
}
Você pode optar por ter um único ou com vários :if, if/else if else
if (x < -1)
y = x + 2;
else
- -6
if (x < = 0)
y = 1;
else
y = x * x;
Estruturas de repetição
Java fornece uma série de mecanismos de laço, assim como outras linguagens de programação. Exemplos:
Laço for:
for (int x = 0; x < 4; x++) {
//...
}
Laço while: 
while (se a condição for verdadeira) {
// ...
}
public class Teste {
public static void main( String args[] ){ int n = 10;
while( n > 0 ){ System.out.println( n );
n--;
}
}
}
Operador ternário
A linguagem Java fornece um operador ternário (?) para reduzir a expressão if/else, assim como C e C++. Por
exemplo:
r = (x > y) ? 3: 1;
Onde (x > y) é o teste condicional. O primeiro valor após ? representa o valor de r, se a condicional for
verdadeira. O segundo valor representa o valor de r, se a condicional for falsa.
Estrutura de seleção múltipla: switch
Essa estrutura é usada, quando cada alternativa corresponde a valores distintos de um só indicador, isto é,
quando cada teste compara o valor do indicador fornecido por uma variável ou expressão com um grupo de
constantes diferentes.
switch([expressão]) {
- -7
case [constante 1]:
[comando 1]
break;
case [constante 2]:
[comando 2]
break;
.
.
.
case [constante n]:
[de comando n]
break;
default:
[comando]
}
3 Orientação a objetos
O termo "orientação a objetos", ou "baseado em objetos", significa que o software é organizado como uma
coleção de objetos separados que incorporam tanto a estrutura quanto o comportamento dos dados.
Essa concepção difere, em parte, da programação convencional, segundo a qual a estrutura e o comportamento
dos dados têm pouca vinculação entre si.
Referência: MARTINS, Rosane Maria. Data Agents: Sistema de Compras na Internet usando Tecnologia de
 Orientadores: Luci Pirmez; Luiz Fernando Rust da Costa Carmo. Rio de Janeiro: UFRJ, 2000.Agentes Móveis.
Dissertação.
Trata-se de um paradigma para o desenvolvimento de software, que se baseia na utilização de componentes
individuais (objetos) que colaboram para construir sistemas mais complexos. A colaboração entre os objetos é
feita através do envio de mensagens.
Referência: MARTINS, Rosane Maria. Data Agents: Sistema de Compras na Internet usando Tecnologia de
 Orientadores: Luci Pirmez; Luiz Fernando Rust da Costa Carmo. Rio de Janeiro: UFRJ, 2000.Agentes Móveis.
Dissertação.
Segundo Martins, eis algumas características da tecnologia orientada a objetos:
- -8
Abstração
Consiste em buscar apenas os aspectos essenciais de uma entidade, ignorando suas propriedades acidentais. Ou
seja, concentrar-se no que o objeto é e faz, antes de decidir como ele deve ser implementado. O uso da abstração
preserva a liberdade de se tomar decisões mais importantes, evitando, tanto quanto possível, preocupações com
detalhes prematuros.
Encapsulamento
Consiste na separação dos aspectos externos de um objeto, acessíveis por outros objetos, dos detalhes internos
da implementaçãodaquele objeto, que ficam ocultos dos demais objetos. O encapsulamento impede que um
programa se torne tão independente que uma pequena modificação possa causar grandes efeitos de propagação.
A implementação de um objeto pode ser modificada sem que isso afete as aplicações que o utilizam. O
encapsulamento não é exclusivo das linguagens orientadas a objetos, porém a capacidade de combinar
estruturas de dados e seu comportamento em uma única entidade torna-a mais completa e mais poderosa do
que as linguagens convencionais.
Compartilhamento
A herança da estrutura de dados e do seu comportamento permite que a estrutura comum seja compartilhada
por diversas subclasses semelhantes, sem redundâncias. O compartilhamento de código é uma das principais
vantagens das linguagens orientadas a objetos. Mais importante que a redução do trabalho de codificação é a
clareza conceitual proveniente de reconhecimento de que diferentes operações são, na realidade, a mesma. A
possibilidade da reutilização de modelos e códigos em projetos futuros é enfatizada como uma justificativa para
a tecnologia orientada a objetos. O desenvolvimento baseado em objetos fornece ferramentas como abstração, o
encapsulamento e a herança que permitem "montar bibliotecas" de componentes reutilizáveis.
- -9
Figura 1 - Estrutura de um objeto
Ênfase na estrutura de objetos
Ênfase na estrutura de objetos, e não na estrutura de procedimentos, significa preocupar-se em especificar o que
um objeto é, e não como ele é utilizado. A figura 1 mostra a estrutura de um objeto. O uso de um objeto é
altamente dependente dos detalhes da aplicação, os quais, frequentemente, mudam durante o desenvolvimento.
O desenvolvimento baseado em objetos coloca maior ênfase na estrutura dos dados e menor ênfase na estrutura
de procedimentos, diferente do desenvolvimento tradicional baseado na decomposição funcional.
4 Implementação de herança e polimorfismo
Herança:
Podemos afirmar que é o principio pelo qual classes semelhantes são agrupadas em hierarquias.
Veja o exemplo:
Uma empresa X possui funcionários. E possui, também, um ou mais gerentes (que não deixam de ser
funcionários também).
class Funcionario {
String nome;
String cpf;
double salario;
}
class Gerente extends Funcionario {
- -10
int senha;
int quantidadeFuncionariosGerenciados;
public boolean autentica(int senha) {
if (this.senha == senha) {
System.out.println("Acesso Permitido!");
return true;
} else {
System.out.println("Acesso Negado!");
return false;
}
}
}
Polimorfismo:
Princípio pelo qual duas ou mais classes derivadas de uma mesma superclasse podem invocar métodos que
possuem a mesma assinatura, entretanto comportamentos diferentes.
Significa ter ‘muitas formas’, que significa um único nome representando um código diferente, selecionado por
algum mecanismo automático.
Na linguagem Java, a invocação de método sempre vai ser decidida em tempo de execução.
Vejamos exemplos:
Exemplo 1
public class Somas {
public int soma(int x, int y) { return x + y; }
public int soma(int x, int y, int z) { return x + y + z; }
public int soma(int x, int y, int z, int w) { return x + y + z + w; }
}
Exemplo 2
public class Veiculo {
public void partida( ) { System.out.println("Veiculo partindo..."); }
}
public class Carro extends Veiculo {
public void partida( ) { System.out.println("Carro andando..."); }
}
- -11
public class Aviao extends Veiculo {
public void partida( ) { System.out.println("Aviao decolando..."); }
}
5 Controle de erros
Blocos try-catch
A captura e o tratamento de exceções ocorre através da especificação de blocos try, catch e finally, definidos
através destas mesmas palavras reservadas da linguagem Java. Um comando try/catch/finally obedece à
seguinte sintaxe:
try {
// código que inclui comandos/invocações de métodos
// que podem gerar uma situação de exceção.
}
catch (XException x) {
// bloco de tratamento associado à condição de
// exceção XException ou a qualquer uma de suas
// subclasses, identificada aqui pelo objeto
// com referência x
}
catch (YException y) {
// bloco de tratamento para a situação de exceção
// YException ou a qualquer uma de suas subclasses
}
finally {
// bloco de código que sempre será executado após
// o bloco try, independentemente de sua conclusão
// ter ocorrido normalmente ou ter sido interrompida
}
O bloco finally é opcional. Em geral, ele inclui comandos que liberam recursos que, eventualmente, possam ter
sido alocados durante o processamento do bloco try e que podem ser liberados, independentemente da execução
ter encerrado com sucesso ou ter sido interrompida por uma condição de exceção.
- -12
Exemplo de Tratamento de Erro:
public class TesteExecucao{
public static void main (String [ ] args){
String variavel = “Teste”;
try {
Integer num = new Integer(variavel);
System.out.println(“Valor da variável num “ + variável);
} catch (NumberFormatException nfe){
System.out.println(“Não é possível atribuir a string “ + variável
+ “ a um objeto inteiro. \n”
+ “A seguinte mensagem foi retornada: \n \n”
+ nfe.getMessage( ));
}
}
}
O que vem na próxima aula:
Na próxima aula, você vai estudar:
• Visão Geral do Ambiente Servidor: Modelo Cliente-Servidor, principais arquiteturas Web, Servidores 
Java, arquivos de configuração para o GlassFish e o TomCat.a
CONCLUSÃO
Nesta aula, você:
• Compreendeu os três ambientes existentes para a linguagem Java;
• Aprendeu as diferentes formas de atribuição de valores; os conceitos básicos de orientação a objetos, 
Saiba mais
Para essa aula, sugerimos que acesse:
Saiba mais sobre Java: //www.java.com/pt_BR/about/
•
•
•
- -13
• Aprendeu as diferentes formas de atribuição de valores; os conceitos básicos de orientação a objetos, 
assim como os elementos básicos utilizados no controle de erros.
•

Continue navegando