Tópicos Especiais em Desenvolvimento de Sistemas

39
Fabiano Souza Ads - Sem 6º

Transcript of Tópicos Especiais em Desenvolvimento de Sistemas

Page 1: Tópicos Especiais em Desenvolvimento de Sistemas

Fabiano Souza

Ads - Sem 6º

Page 2: Tópicos Especiais em Desenvolvimento de Sistemas

WEB-AULA 1

Tópicos Especiais em Desenvolvimento de Sistemas

A SINTAXE JAVA1

String início = “VAMOS COMEÇAR?”;

Isso porque o programa roda sobre uma camada de software chamada JVM –

Java Virtual Machine (Máquina Virtual Java)!

A JVM provê as formas e meios de o aplicativo conversar com o sistema

operacional, gerenciando os aplicativos escritos em Java.

Page 3: Tópicos Especiais em Desenvolvimento de Sistemas

Para saber mais sobre a JVM

acesse http://www.infowester.com/jvm.php acessado em 29/09/2010.

Um tutorial básico sobre Orientação a Objetos

Java: http://javafree.uol.com.br/artigo/871497/

OK? Agora vamos conhecer alguns detalhes da linguagem:

PROGRAMAR ou pRoGrAmAr?

A linguagem Java é case-sensitive, ou seja, ela diferencia entre letras

maiúsculas e minúsculas.

Exemplo, exemplo e eXemplO são palavras distintas ao compilador Java.

Sendo assim, tome cuidado na hora de escrever seu código!

Existem algumas convenções que são adotadas pela linguagem:

Convenções: Existem algumas convenções que são adotadas na linguagem:

CONSTANTES – Constantes no código escritos todo em maiúsculo.

variáveis – Toda variável começa com minúsculo.

Classes – Toda Classe começando com letra maiúscula.

meuPrograma – Palavras compostas são divididas apenas por uma letra

maiúscula.

Comentários: Para inserir comentários ao programa Java que serão

ignorados pelo compilador existe duas maneiras:

// esta é uma linha comentada

/* estas são várias

linhas comentadas */

Page 4: Tópicos Especiais em Desenvolvimento de Sistemas

Boa prática de programação: Nunca deixe de comentar seu código para

facilitar o entendimento deste no futuro.

Palavras Reservadas: Existem algumas palavras que são reservadas no

Java, ou seja, não podem ser utilizadas no programa: tipos primitivos,

instruções, modificadores de acesso, etc.

Tratando-se de linguagem de programação, uma palavra reservada é uma palavra que não pode ser

utilizada como um identificador por ser reservada para uso da gramática da linguagem.

Exemplos de palavras reservadas: byte - short - int - long - char - boolean -

double - float - public - private - protected - static - abstract - final - strictfp -

transient - synchronized - native - void - class - interface - implements -

extends - if - else - do - default - switch - case - break - continue - assert -

const - goto - throws - throw - new - catch - try - finally - return - this - package

- import - instaceof - while - for - volatile – super.

Obs: Identificadores “null”, “true” e “false” também são reservados.

Tipos primitivos:

A linguagem Java oferece diversos tipos primitivos de dados com os quais

podemos trabalhar:

Page 5: Tópicos Especiais em Desenvolvimento de Sistemas
Page 6: Tópicos Especiais em Desenvolvimento de Sistemas

Definindo uma variável com um tipo, estamos restringindo esta variável às

operações descritas a este tipo. Exemplo: Não se aplica operações de

multiplicação a um caractere.

Operadores básicos

Nós veremos como utilizar estes operadores na unidade 2 deste

material

Page 7: Tópicos Especiais em Desenvolvimento de Sistemas

Modificadores de acesso:

A linguagem Java define alguns modificadores de acesso

que permitem ou restringem o acesso às Classes, seus métodos ou

atributos. Dentre estes modificadores os principais:

public  - deixa visível a classe ou membro para todas as outras classes,

subclasses e pacotes do projeto Java.

private – deixa visível o atributo apenas para a classe em que este atributo

se encontra.

protect – deixa visível o atributo para todas as outras classes e subclasses

que pertencem ao mesmo pacote.

Desenvolvendo Programas

Classe

Uma classe é um tipo definido pelo usuário que contém o molde,

a especificação para os objetos.

Uma classe é constituída por características e comportamentos. As

características são os seus atributos (campos) e os comportamentos

são os métodos ou operações que um objeto dessa classe pode

realizar). Ex.: Atributos (código, nome, cpf). Ex.: Métodos (incluir, pesquisar,

alterar, excluir);

Exemplo: um programa de controle de notas dos alunos muito provavelmente

teria uma classe “Notas” com variáveis “nota1”, “nota2”, etc. Quanto aos

Page 8: Tópicos Especiais em Desenvolvimento de Sistemas

métodos, muito provavelmente haveria um método “calculaMedia” para

análise do desempenho do aluno durante um período de tempo.

Um programa Java possui pelo menos uma classe.

 

Como declarar uma classe Java:

<modificador de acesso> class <nomeDaClasse>{}

modificador de acesso: public.

class: especificando que se trata de uma classe

nome: identificador da classe

Exemplo:

public class MinhaClasse {

  [dados e métodos]

}

Page 9: Tópicos Especiais em Desenvolvimento de Sistemas

Método Construtor

Quando deseja-se que o objeto de uma determinada classe possua um

determinado comportamento no momento de sua instanciação, este

comportamento deverá ser descrito dentro do método construtordesta classe.

O método construtor poderá exigir argumentos para a instanciação desta

classe. 

O método construtor deverá ter o mesmo nome da sua classe.

Exemplo:

 

No exemplo acima, para se criar uma instância de “MinhaClasse” deve-se

passar dois inteiros como parâmetros ao método construtor que,

automaticamente efetuará a operação de soma e atribuirá o resultado à

variável de classe “soma”.

Exemplo de criação do objeto de MinhaClasse:

MinhaClasse mc = new MinhaClasse(3, 4);

Page 10: Tópicos Especiais em Desenvolvimento de Sistemas

Observação:

podemos criar diversos construtores com

parâmetros diferentes e comportamentos

diferentes em uma única classe.

RESUMINDO: se queremos que o nosso objeto receba alguma parâmetro ou

execute alguma atividade NO MOMENTO DE SUA CRIAÇÃO, nós definimos isto

dentro do método construtor.

Variáveis:

Uma variável é um espaço de memória que serve para armazenar um valor

qualquer. Para se criar uma variável, nós devemos definir um tipo para ela

(int, float, etc.) e um nome para ela. A partir daí ela poderá receber os seus

valores.

Obs: o valor atribuído à variável deverá ser do mesmo tipo o qual ela

foi declarada.

Como declarar variáveis:

<tipo> <nome da variável> “=” <valor inicial> “;”

 

Exemplo1:

Page 11: Tópicos Especiais em Desenvolvimento de Sistemas

int meuNumero = 3;

// esta variável é do tipo inteiro, de nome “meuNúmero” e iniciada com

// valor 3.

 

Exemplo 2: 

Int meuNumero;

// esta variável é igual a de cima no entanto sem valor inicial atribuído a

// ela.

 

Exemplo 3:

String str = new String();

// minha variável str é um objeto da classe “String” e possui todos os métodos

// definidos nesta classe.

As variáveis declaradas no corpo da classe são variáveis de classe, ou seja, são vistas por

todos os métodos desta classe. As variáveis declaradas dentro dos métodos serão vistas

apenas por este método que as declara.

 

Observação: Cada instrução Java termina com um ponto-e-vírgula “;”

Page 12: Tópicos Especiais em Desenvolvimento de Sistemas

Metodos

Os métodos são parte do corpo de uma classe que definem o comportamento

dos objetos desta classe.

São o equivalente a funções ou procedimentos de outras linguagens de

programação.

Quando definimos um objeto num programa orientado a objetos,

implementamos todo o comportamento desse objeto em um ou mais métodos.

 

 

Um método obrigatoriamente deve estarDENTRO de uma

classe!

 

Um método entra em ação no momento em que é chamado.

Método “main”

Existe um método chamado

“main” (principal) que é chamado

pelo interpretador Java para dar

início à execução do programa.

A sintaxe para construção de um método é a seguinte:

Page 13: Tópicos Especiais em Desenvolvimento de Sistemas

Modificador de acesso:

Public, protect ou private.

 

Tipo de retorno:

É opcional e definido por um tipo primitivo ou um objeto que será retornado

pelo método após a sua execução.

Identificador:

É o nome dado ao método.

Parâmetros:

É opcional e define o número e tipo de argumentos esperados pelo método.

Relembrando: As variáveis definidas no corpo dos métodos são variáveis locais, elas só

existem para os métodos que as define.

Em Java, você pode usar especificadores de acesso para proteger tanto as

variáveis quanto os métodos de uma classe quando você os declara. A

linguagem Java suporta quatro níveis de acesso distintos para variáveis e

métodos membros: private,protected, public e, se deixar sem

especificação, package-access  (acessíveis pelas classes do mesmo pacote)

Page 14: Tópicos Especiais em Desenvolvimento de Sistemas

Aplicação de operadores básicos:

x = 3  Atribuição do valor 3 ao x

x + y  Soma x e y

x - y  Subtração de x por y

x * y  Multiplicação de x e y

x / y  Divisão de x por y

x % y  Resto da divisão de x por y

x > y  x é maior do que y

x >= y  x é maior ou igual a y

x <= y  x é  menor ou igual a y

x == y  x é igual a y

x != y  x é diferente de y

x && y  x E y

x || y  x OU y

Page 15: Tópicos Especiais em Desenvolvimento de Sistemas

Estruturas básicas de controle

if :

Se a condição for verdadeira, executa-se o bloco de instruções.

 

if-else:

Se a condição for verdadeira, executa-se o primeiro bloco de instruções, caso

seja falso executa o segundo bloco apenas.

 

for:

Exemplo:

Page 16: Tópicos Especiais em Desenvolvimento de Sistemas

O código acima imprimirá na tela os números de 0 a 9 em cada linha.

 

while:

Exemplo:

O código acima imprimirá na tela os números de 0 a 9 em cada linha.

Page 17: Tópicos Especiais em Desenvolvimento de Sistemas

Analogia for e while para um maratonista:

for: “dê três voltas na pista”;

while: “dê voltas na pista até começar a chover”;

 

switch:

Page 18: Tópicos Especiais em Desenvolvimento de Sistemas

A estrutura verifica se o valor da variável “minhaVar” é igual a alguma das

possibilidades, caso positivo executa o código dentro do bloco relacionado e

caso só houver possibilidades diferentes executará o bloco de “default”.

Parabéns! Você já conhece o conteúdo básico para a criação de programas

simples em Java.

Existe ainda uma vasta coleção de bibliotecas da linguagem com operações

pré-estabelecidas para suporte à programação Desktop, Web ou móvel. Mas

isto será assunto para outra Web Aula!

Page 19: Tópicos Especiais em Desenvolvimento de Sistemas

WEB-AULA 1

A INTERFACE DE DESENVOLVIMENTO NETBEANS1

 

Vamos Começar

Netbeans é uma IDE - Interface de Desenvolvimento Integrado, gratuito e de código aberto, para desenvolvedores de software. Ele oferece as ferramentas necessárias para a criação de aplicações profissionais para ambientes empresariais, desktop, ou móveis baseadas na plataforma Java, C/C++, JavaScript, Groovy e Ruby.

Download

A IDE pode ser baixada gratuitamente do site oficial: http://netbeans.org/

Para a instalação é necessário ter instalado em sua máquina o JDK (Java Development Kit – Kit  de desenvolvimento Java) que pode ser encontrado em:http://www.oracle.com/technetwork/java/javase/downloads/index.html

Obs: Existem outros locais para download da IDE ou de instaladores que já possuem o JDK, mas é

importante que saibamos se esse local é confiável!

Page 20: Tópicos Especiais em Desenvolvimento de Sistemas

Obs: Existem outros locais para download

da IDE ou de instaladores que já possuem o

JDK, mas é importante que saibamos se

esse local é confiável!

1) Configurando um Projeto

Passo 1: criando um projeto para dispositivo móvel:

No IDE, escolha Arquivo > Novo projeto (Ctrl-Shift-N), como mostrado na

figura abaixo:

 

No assistente “Novo projeto”, expanda a categoria:

Java ME para aplicações móveis (Nosso Caso) e selecione Aplicativo Móvel,

como mostrado na figura abaixo. Em seguida, clique em “Próximo”

Page 21: Tópicos Especiais em Desenvolvimento de Sistemas

No assistente “Novo Aplicativo Móvel”, preencha um novo nome para o

projeto (aqui eu chamei de “MinhaPrimeiraAplicaçãoMóvel”), defina

o local para o projeto, o diretório e mantenha selecionado “Configurar como

projeto principal” apenas. Clique em próximo.

Observações:

1. O nome do projeto por convenção não possui espaços.

2. O local define onde serão armazenados todos os arquivos necessários ao

projeto.

3. O Netbeans permite o desenvolvimento simultâneo de diversas aplicações,

portanto devemos definir aquela que será compilada ou

executadaautomaticamente pela IDE quando eu requisitar.

4. “Criar MIDlet olá” é apenas um exemplo para quem desejar ver um projeto

simples funcionando.

Page 22: Tópicos Especiais em Desenvolvimento de Sistemas

 

No assistente “Seleção da Plataforma Padrão”:

 

Page 23: Tópicos Especiais em Desenvolvimento de Sistemas

1. A seleção da plataforma do emulador (a versão mais atualizada é a SDK 3.0)

2. A escolha do dispositivo emulado para testes.

3. A configuração de dispositivo: CLDC – Configuração de dispositivo Conectado Limitado significa que o dispositivo para o qual estamos desenvolvendo tem restrições severas de energia. Os padrões 1.0 e 1.1 definem as limitações de memória para executar o Java, memória para a aplicação, interface com o usuário, poder de processamento e conectividade de rede.

4. O perfil do dispositivo: define as APIs (Interfaces de Programação de Aplicações) para componentes de entrada e tratamento de eventos de interface com o usuário, armazenamento persistente, interligação em rede, levando em consideração as limitações de tela e memória dos dispositivos.

 

Page 24: Tópicos Especiais em Desenvolvimento de Sistemas

Também posso baixar umSDK de um fabricante específico para usar os recursos e testar a funcionalidade do meu software diretamente no emulador deste.

 

Na próxima janela posso utilizar configurações alternativas salvas para este

projeto como por exemplo um emulador da Nokia.

Page 25: Tópicos Especiais em Desenvolvimento de Sistemas

Clicando em finalizar, o meu projeto está criado!

Clicando com o botão direito sobre o nome do projeto, selecionando o campo

“Novo”, abre-se uma janela com diversas opções:

Entre elas as principais:MIDlet: Cria uma nova classe que estende Midlet que implementa os métodos startapp() para iniciar a aplicação, pauseapp() para pausar a aplicação sem fechar e destroyapp() para encerrar o aplicativo.Classe Java: Cria uma nova classe geral.MIDlet Visual: permite a você criar aplicações móveis usando componentes de arrastar e soltar.Por fim, escolhendo-se a MIDlet abre-se a janela abaixo onde preenche-se um nome para a MIDlet e finaliza-se.

Page 26: Tópicos Especiais em Desenvolvimento de Sistemas
Page 27: Tópicos Especiais em Desenvolvimento de Sistemas

Segue um exemplo básico de código, utilizando-se a classes Display e Form.

import javax.microedition.lcdui.Display;

import javax.microedition.lcdui.Form;

import javax.microedition.midlet.*;

public class eeMidlet extends MIDlet {

  Display display;

  Form form;

       public void startApp() {

        display = Display.getDisplay(this);

        form = new Form("Minha Primeira MIDlet");

        form.append("Viva o Java!!");

        display.setCurrent(form);

    }

    public void pauseApp() {

Page 28: Tópicos Especiais em Desenvolvimento de Sistemas

    }

    public void destroyApp(boolean unconditional) {

    }

}

Editado a classe basta agora utilizar os dois atalhos para construir o projeto e

executar:

 

Construir: o Netbeans criará os .class (arquivos compilados em bytecode) e o

.jar (arquivo executável java)

Executar: o Netbeans abrirá o emulador de dispositivo e colocará a aplicação

para rodar.

Ao executar temos a saída abaixo!

Page 29: Tópicos Especiais em Desenvolvimento de Sistemas

 

Informação importante: para descobrir onde estão os arquivos do seu projeto,

basta clicar com o botão direito em cima do projeto, selecionar propriedades e

ver o path (caminho) na aba geral!

 

Essa etapa terminou! Já podemos construir um pequeno MIDlet no Netbeans.

Page 30: Tópicos Especiais em Desenvolvimento de Sistemas

Web Aula 2

PERSISTÊNCIA DE DADOS EM J2ME

Persistência com RMS

O RMS – Record Management System oferece um mecanismo para que as

MIDlets possam armazenar dados persistentemente e depois recuperá-los.

O armazenamento de dados (banco de dados) é chamado de Record Store. O

Record Store é criado pelo MIDlet e utiliza nomes para identificar cada

registro. Caso o MIDlet seja removido do dispositivo, os Record Stores são

removidos também.

Fonte : http://www.guj.com.br/articles/39

Cada Record Store é dependente de plataforma, é armazenado em memória

não volátil, que não fica diretamente exposta aos MIDlets. As classes RMS

deverão fazer chamadas específicas ao gerenciador de dados padrão do

dispositivo para poder acessar os dados.

 

Page 31: Tópicos Especiais em Desenvolvimento de Sistemas

Retirado de http://www.ibm.com/developerworks/library/wi-rms/

Para perfis CLDC (Connected Limited Device Configuration) não existe a

implementação de banco de dados baseados em tabelas, colunas, linhas

gerenciadas por um SGBD (Sistema Gerenciador de Banco de Dados).

Para resolver isso, aplicação deve converter os dados para array de bytes para

poderem ser armazenados. Para ler os dados o processo inverso deve ser

feito.

Cada registro é identificado por um Record ID (identificador

único de gravação) que é um inteiro.

 

Cada registro é formado por um array de bytes e um inteiro!

Page 32: Tópicos Especiais em Desenvolvimento de Sistemas

Cada Record store pode ser visto como uma coleção de gravações que

permanecem persistentes  através de múltiplas chamadas da MIDlet. A

plataforma do dispositivo fica responsável por manter a integridade os

arquivos das MIDlets durante o uso normal do dispositivo, incluindo

desligamentos, troca de baterias, etc

Principais Métodos do Record Store:

openrecordstore(String nome, boolean criarCasoNaoExista): abre ou cria um

Record Store. A função tenta abrir o Record Store de nome informado no

primeiro parâmetro. Caso este não exista ele verifica o segundo parâmetro, se

for true cria o Record Store, se for false só permite abri-lo e não criá-lo.

Exemplo:

1.     try {  

2.     rs = RecordStore.openRecordStore("Agenda", true);  

3.            } catch (RecordStoreException ex) {  

4.                ex.printStackTrace();  

 

Page 33: Tópicos Especiais em Desenvolvimento de Sistemas

Caso o registro “Agenda” exista, a o método abrirá o registro, caso não exista,

criará um novo registro “Agenda”.

closerecordstore(): fecha um Record Store que está aberto.

Exemplo:

rs.closeRecordStore();

Com esta linha, o registro instanciado em RS é fechado 

deleterecordstore(String nomeDoRecordStore): apaga o Record Store

com o nome informado. Para que um Record Store possa ser apagado é

necessário este estar fechado.

Exemplo:

RecordStore.deleteRecordStore(“arquivo”);

int addrecord(byte [] dados, int offset, int numbytes): adiciona um

registro.

byte [] dados: são os dados que deseja armazenar.

int offset: é o primeiro índice do array de bytes que deve ser lido.

int numbytes: tamanho do array de bytes do dado que se quer armazenar.

Exemplo:

int id = rs.addRecord(dados, 0, dados.length);  

Todos os bytes dentro do array “dados” serão armazenados, começando na

posição “0” do array até o tamanho total dele e retorna o id do registro onde

os dados foram colocados.

setrecord(int id, byte [] novosdados, int offset, int numbytes): faz a

atualização de um registro.

Page 34: Tópicos Especiais em Desenvolvimento de Sistemas

int id: identificador do registro que se deseja atualizar.

byte [] dados: são os dados que deseja armazenar.

int offset: é o primeiro índice do array de bytes que deve ser lido.

int numbytes: tamanho do array de bytes do dado que se quer armazenar.

Exemplo:

setRecord(10 , newData, 0, newData.length)

A nova informação em “newData” será armazenada no arquivo com

identificador “10”, iniciando na posição 0 até o final dos bytes de newData..

delederecord(int id): apaga o registro informado pelo parâmetro id.

Exemplo:

deleteRecord(12)

Apaga o registro com id 12

byte [] getrecord(int id): recupera um determinado registro.

O método devolve o dado, armazenado no array de bytes, referente ao id

passado por parâmetro.

Exemplo:

String aux = getRecord(i);

O método getRecord retorna um String do endereço “i”

int getnumrecords(): obtêm a quantidade de registros que tem em um

Record Store.

Exemplo:

rs.getNumRecords()

O total de registros é retornado nesse método.

Page 35: Tópicos Especiais em Desenvolvimento de Sistemas

Filtragem de registros

A classe MIDlet implementa a interface RecordFilter, definindo filtros que

examinam um registro para ver se ele atende os critérios definidos

pelaaplicação. A aplicação deve implementar o método match() de

RecordFilter:

Public boolean matches(byte[] candidate)

{

     String s1 = new String(candidate);

     If (s1.equals("XX"))

          Returns true;

     Else

          Returns false;

}

 

Onde “candidate” é o Record analisado e ” XX” o String que serve de base

para a filtragem!

Estes são os principais métodos RMS utilizados no gerenciamento de

informações persistentes em dispositivos móveis. Estas técnicas podem ser

úteis em um jogo de celular para armazenar o status do jogo, records, perfis

de usuários, etc.

Um exemplo MIDlet para agenda utilizando o RMS para persistência dos dados:

http://www.guj.com.br/articles/39

Agora é colocar a mão na massa!

É ISSO!