sábado, 5 de julho de 2008

Desenvolvimento J2ME para celulares

Entre os grandes desafios do momento na Mobiltec estão alguns projetos específicos para desenvolvimento mobile. Entre os dispositivos móveis "alvo" dos projetos, temos os celulares convencionais e dispositivos Blackberry da RIM.

Uma pouco de pesquisa na internet nos leva a um ponto em comum: A Plataforma JavaME.

E junto, dois novos conceitos são introduzidos:

  • Connected Limited Device Configuration (CLDC): É a especificação do conjunto de interfaces e da máquina virtual Java para dispositivos móveis limitados em recursos
  • Mobile Information Device Profile (MIDP): É um perfil do JavaME, baseado no CLDC. É o ambiente JavaME mais popular hoje encontrado em celulares

Para desenvolvimento JaveME, é necessário o J2ME Wireless Toolkit, combinado com uma IDE Java para desenvolvimento (como Eclipse ou Netbeans).

Após a pesquisa inicial, um pouco de ambientação... Montamos o Eclipse com seu plug-in para JavaME, o EclipseME. A equipe desenvolveu alguns exemplos de MIDLet (aplicativo JavaME).

Próxima visita, site do Blackberry Developer Program. Lá encontramos o BlackBerry JDE. Segundo o site:

"The BlackBerry® Java® Development Environment (BlackBerry JDE) is a fully integrated development environment and simulation tool for building Java Micro Edition (Java ME™) applications for Java ® based BlackBerry® smartphones. It is a Mobile Information Device Profile (MIDP) compliant Java ME environment for developers who wish to maintain seamless portability in their wireless applications."

Ambiente instalado, e a surpresa: Uma série de pacotes específicos do Blackberry (net.rim.*), que me levam a desconfiar que os ambientes são incompatíveis e que os MIDLets de exemplo construídos anteriormente não funcionarão no Blackberry. Ou estes pacotes seriam apenas um novo conjunto de recursos?

Onde fica o "JavaME compliant"?

  [Ver post Compatibilidade da JVM do Blackberry com J2ME]

Outra preocupação fica na parte do "visual" dos aplicativos, que parece limitadíssimo. Tudo bem que estamos falando de "Limited Device Configuration", mas os componentes visuais já embutidos são extremamente simples.

E a aventura está apenas começando...

quinta-feira, 3 de julho de 2008

Conceitos da Orientação a Objetos com UML, parte 2

Segue mais um conjunto de conceitos da orientação a objetos. Embora o título do post cite a UML, esta segunda parte não apresenta diagramas da mesma. Isto pelo fato de que neste post são tratadas características mais conceituais da Orientação a Objetos.

Abstração

É a ação de pensarmos nas características essenciais de um objeto, sem nos preocuparmos como ele atinge estes objetivos. A abstração nos permite lidar mais facilmente com a complexidade de um sistema, pois em etapas iniciais da concepção do mesmo, ainda não dispomos de conhecimento suficiente para determinar os detalhes de cada objeto.

Dentro do conceito de abstração, definimos o que um objeto é capaz de fazer e o que a classe 'sabe'. Isso inclui atributos e métodos de interesse. O resto é postergado.

Coesão

A coesão refere-se à relação da implementação de uma classe ou método, com o seu propósito.

Classe e métodos altamente coesos são aqueles que implementam exatamente as suas responsabilidades. Quanto mais uma classe ou método implementa lógicas e controles que não são de sua responsabilidade, mais baixa é a sua coesão.

Caso não tomemos os devidos cuidados, a medida que um sistema é implementado a coesão das classes e métodos tente a diminuir, onde o ideal seria manter uma alta coesão.

Para lidarmos com este problema, é essencial um bom 'design' da estrutura do nosso sistema. Padrões de projeto são excelentes recursos para estruturarmos classes e métodos e eles nos ajudam a priorizar uma série de aspectos da OO, inclusive a alta coesão.

Acoplamento

O acoplamento está diretamente relacionado à dependência entre duas classes. O acoplamento é alto quando uma classe depende da implementação de outra (isto é, acessa os atributos da outra classe diretamente). Quando uma classe sabe interagir com outra sem conhecimento dos detalhes de implementação da segunda (apenas interagindo com esta através de métodos), então esta relação é de baixo acoplamento.

Encapsulamento

Refere-se a idéia de agrupar os conceitos de um determinado objeto dentro dele mesmo. Os métodos e atributos que conceitualmente pertencem a um objeto são compartimentados dentro da especificação da classe que o define.

O encapsulamento nos permite redefinir a implementação interna de uma classe, sem afetar outras classes e componentes do sistema, pois a utilização de um objeto não depende de sua implementação, mas sim de sua interface.

Mensagem

A mensagem é uma requisição de um objeto a outro, seja para obter uma informação ou para executar uma atividade. Uma mensagem é composta pelo nome de um método e lista de parâmetros.

Polimorfismo

É a habilidade de diferentes objetos responderem a uma mesma mensagem de forma distinta. Com o polimorfismo, é possível tratarmos instâncias de várias classes de uma forma comum. Assim, um objeto pode enviar uma mensagem a outro sem saber exatamente o seu tipo, e este segundo irá trabalhar corretamente.

Colaboração

É uma característica natural da OO, onde as classes trabalham em conjunto para realizar suas atividades

Conceitos da OO nos posts anteriores:

Nos próximos posts, ainda serão tratados:

terça-feira, 1 de julho de 2008

Conceitos da Orientação a Objetos com UML, parte 1

Em uma série de posts, estarei cobrindo os principais conceitos da Orientação a Objetos. Além disso, irei apresentar estes conceitos através de pequenos diagramas da UML.

Classes e objetos

A classe é a abstração de um objeto. Ela define a estrutura de atributos e métodos dos objetos que são criados a partir dela.

O objeto, por sua vez, é o elemento que representa um conceito do mundo real. O objeto é capaz de realizar ações típicas do elemento que ele representa.

Instância: É um objeto de uma determinada classe. Ao processo de criação de um objeto, dá-se o nome de instanciação.

Classe concreta: Classe da qual podemos criar instâncias

Classe abstrata: Classe da qual não podemos criar instâncias

Atributos e métodos

Atributos são dados que determinam o estado de um objeto. Os métodos, por outro lado, são funções que determinam o comportamento do objeto.

Os métodos podem executar atividades que modifiquem o estado (atributos) do próprio objeto, ou que apenas computem um valor significativo retornado ao invocador dos mesmos.

Abaixo, diagrama de classes ilustrando métodos, atributos e relações. Na notação da UML, o primeiro quadro de uma classe exibe o nome da mesma. Os dois quadros opcionais abaixo deste exibem os atribudos e métodos da classe.

O próximo diagrama é um exemplo de diagrama de objetos. Cada objeto representando uma entidade real, instanciada no sistema. Atributos já podem se encontrar valorados.