Artigo Originalmente publicado na WebMobile 05


=#000000>Clique aqui para ler todos os artigos desta edição

 

 

Desenvolvimento C++ para Symbian OS

Como funciona o sistema de interface com o usuário

Eduardo Peixoto e Renato Iida

Leitura recomendada: Web Mobile 4, artigo Desenvolvimento C++ para Symbian OS: Introdução à programação em Symbian C++.

 

O Symbian OS é um sistema operacional projetado especificamente para o ambiente móvel, preenchendo os requisitos dos aparelhos das gerações 2.5 e 3 de celulares. Ele é composto por uma kernel multi-tarefa, suporte integrado à telefonia, protocolos de comunicação, gerenciamento de dados, suporte a gráficos avançado, interface com o usuário de baixo nível e uma variedade de algoritmos para aplicações. Esse sistema operacional é muito utilizado em aparelhos mais poderosos, os chamados smartphones e communicators. Todas essas características tornam este assunto bastante rico e com diversas formas de ser explorado e é tema desta série de artigos.

No primeiro artigo foram introduzidos alguns conceitos principais sobre o sistema operacional Symbian e sua linguagem de programação, que foi convencionado chamar de Symbian C++. Neste artigo daremos continuidade a este tema, mostrando a estrutura de uma aplicação com interface gráfica e montando uma aplicação que troca conteúdo dinâmico na tela.

Este artigo foi organizado em quatro partes. A primeira mostra a estrutura de arquivos que qualquer tipo de aplicativo que utiliza GUI precisa ter. Os itens que abordam esse primeiro tópico iniciam em “Arquitetura de uma Aplicação” e vão até “Inicialização de uma Aplicação”. A segunda parte mostra que existem três tipos de arquitetura de aplicativos com interface com o usuário, suas vantagens e desvantagens. O item que aborda esse tópico é “Design da Arquitetura da Aplicação”. A terceira parte é um exemplo para demonstrar os conceitos de uma arquitetura tradicional e seus elementos. Nessa parte são mostrados os arquivos complementares à primeira parte do artigo e suas funções que, juntos, criam uma aplicação gráfica funcional para um celular Série 60. Por último, na seção “Gerando o projeto” é mostrado o que muda do projeto do exemplo do artigo Desenvolvimento C++ para Symbian OS: Introdução à programação em Symbian C++ publicado na edição 4 da Web Mobile, quando o projeto consiste de uma aplicação com interface gráfica.

Introdução

Apresentar o conteúdo de forma visual torna mais agradável a experiência para o usuário, permitindo a ele associar funções e comandos a elementos na tela.

Para demonstrar o desenvolvimento de uma aplicação utilizando estas interfaces gráficas, nós iremos seguir a aplicação apresentada no artigo Desenvolvimento C++ para Symbian OS: Introdução à programação em Symbian C++, publicado na edição 4 da Web Mobile. No entanto, será necessário ampliar a infra-estrutura de arquivos e classes mostrada na aplicação original.

No artigo anterior foram discutidos os fundamentos do Symbian OS, bem como as principais diferenças de sua linguagem de programação nativa, o Symbian C++, para o C++ para desktops. Foi apresentada também a sintaxe dos arquivos de compilação de um projeto em Symbian (definições de componentes, bld.inf e especificações de projeto, .mmp). O exemplo usado foi de uma aplicação em console, similar a uma aplicação em linha de comando para DOS. Neste artigo, iremos demonstrar uma aplicação com interface gráfica, similar às aplicações comumente encontradas para celular.

Para o desenvolvimento de aplicações com interface gráfica no Symbian, funcionalidades que em outras plataformas de desenvolvimento podem ser agrupadas em um único arquivo ou classe são separadas desde a concepção. Alguns exemplos dessas funcionalidades são o ponto de entrada da aplicação, o gerenciamento de arquivos de persistência, a lógica da aplicação, o gerenciamento de eventos e as interfaces gráficas. Isso facilita os desenvolvedores na tarefa de separar a lógica de um programa de sua parte visual. No entanto, infelizmente, isso torna o entendimento de uma aplicação gráfica em Symbian mais difícil.

Arquitetura de uma aplicação

As aplicações com interface gráfica em Symbian devem apresentar as seguintes funcionalidades:

·         Exibir graficamente informações para o usuário e permitir interatividade;

·         Responder a eventos iniciados pelo usuário;

·         Responder a eventos iniciados pelo sistema;

·         Ter a capacidade de salvar e recuperar os dados da aplicação;

·         Identificar-se unicamente para o sistema operacional;

·         Exibir informações sobre a aplicação para o sistema operacional.

 

Existe um núcleo básico de classes que formam a aplicação, e algumas classes do sistema operacional que este núcleo deve herdar de forma a obter as funcionalidades básicas para o funcionamento da aplicação. As classes que compõem a arquitetura da aplicação que provêem estas funcionalidades são divididas nessas categorias: Application, Document, AppUI e View.

A classe Application tem uma função fixa e bem definida. Ela serve somente como ponto de entrada da aplicação, e disponibiliza informações sobre a aplicação para o sistema operacional, como o ícone e o nome da aplicação que deve aparecer no gerenciador de aplicativos, e o UID (Unique Identifier Number – o número pelo qual as aplicações Symbian são identificadas) da aplicação. Esta classe tem um papel estático – ela não se envolve com os dados da aplicação ou com a sua lógica.

A classe de Document provê um contexto para a persistência dos dados da aplicação. Esta classe contém métodos para instanciar a classe de AppUI.

A classe de AppUI é um recipiente para várias notificações vindas do sistema operacional, como eventos de teclado ou de sistema. Esta classe irá gerenciar a forma como a aplicação irá tratar esses eventos, despachando para o View que deveria receber a notificação desse evento (por exemplo, a tela de formulário é a tela que deveria ser avisada de que o usuário finalizou o preenchimento desse formulário).

Um View é um conceito que significa “a representação dos dados da aplicação na tela”. O View não é uma categoria de classe de forma restrita. Existem essencialmente três formas diferentes de se fazer o View no Série 60, como será mostrado na continuidade do artigo na seção Design da Arquitetura da Aplicação.

O framework do sistema operacional

O framework do sistema operacional é a maneira pela qual uma aplicação interage com o próprio sistema operacional. Quando esse sistema operacional deseja finalizar uma aplicação, por exemplo, ele se comunica com ela por meio deste framework. Ele é formado por um conjunto de classes núcleo (core classes) que formam a base para todas as aplicações. Estas classes formam a estrutura necessária, e também encapsulam a comunicação entre a aplicação e o sistema operacional.

 

image002.gif

Figura 1. Diagramas das classes núcleo.

 

O diagrama da Figura 1 mostra quatro camadas de classes do framework, simplificado para facilitar o entendimento.

A primeira camada é dividida em dois componentes fundamentais: o AppArc (Application Architecture – arquitetura da aplicação) e o CONE (CONtrol Environment – ambiente de controle).

As classes no AppArc provêem a estrutura básica da aplicação e os mecanismos para retornar ao sistema as informações sobre essa aplicação e sobre os dados persistentes. Este é um componente do Symbian OS, e suas classes têm o nome iniciado com o prefixo “*Apa”, como em CApaApplication.

As classes no componente CONE provêem os mecanismos básicos para gerenciar a entrada do usuário e criar a interface gráfica. Este também é um componente do Symbian OS, e suas classes têm o nome iniciado por “*Coe”, como em CCoeControl.

A segunda camada de classes pertence ao componente Uikon, também chamado Eikon. Este componente contém as implementações de interfaces gráficas que são independentes de plataforma dos diversos recursos do Symbian OS. As classes desse componente têm o nome iniciado por “*Eik”, como em CEikApplication.

A terceira camada de classes é uma implementação das interfaces gráficas específica do Uikon para o Série 60, e é chamada Avkon. A escolha de qual implementação (Avkon ou Uikon) suas classes deverão derivar será explicada mais adiante no artigo, na seção Design da Arquitetura da Aplicação. As classes pertencentes a este componente têm o nome iniciado por “*Akn”, como em CAknApplication.

A quarta camada é a camada específica da aplicação, e demonstra como você poderia derivar as classes de modo a construir sua própria aplicação.

A maior parte das classes na primeira camada são abstratas, definindo apenas as interfaces com o framework que serão utilizadas. A segunda camada adiciona implementações comuns ao Symbian OS, enquanto a terceira adiciona implementações específicas para o Série 60. Por fim, a quarta adiciona as implementações específicas da sua aplicação.

As classes que compõem a infra-estrutura da aplicação – Application, Document, AppUI e AppView – serão mais detalhadas a seguir.

Classe Application

A classe da aplicação deve derivar de CEikApplication (ou de uma outra classe que deriva desta, por exemplo, CAknApplication – Figura 1). Existem duas funções que devem ser implementadas por esta classe. A primeira função, CreateDocumentL() ( ...

Quer ler esse conteúdo completo? Tenha acesso completo