Tópicos Especiais em Desenvolvimento de Sistemas
-
Upload
fabiano-souza -
Category
Documents
-
view
93 -
download
53
Transcript of Tópicos Especiais em Desenvolvimento de Sistemas
Fabiano Souza
Ads - Sem 6º
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.
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 */
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:
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
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
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]
}
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);
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:
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 “;”
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:
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)
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
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:
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.
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:
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!
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!
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”
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.
No assistente “Seleção da Plataforma Padrão”:
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.
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.
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.
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() {
}
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!
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.
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.
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!
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();
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.
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.
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!