Introdução Ao Java Swing e AWT PDF
Introdução Ao Java Swing e AWT PDF
Introdução Ao Java Swing e AWT PDF
Como se v pela figura, saber construir interfaces grficas com o utilizador no significa saber construir boas interaces. No entanto, para saber desenhar e implementar boas interfaces, o primeiro passo um passo meramente tcnico que consiste em aprender uma linguagem de construo de interfaces grficas. Assim, este captulo do Guia dos Laboratrios de Interaco Homem-Mquina pretende iniciar os alunos na construo de Interfaces com o utilizador usando as Java Foundation Classes (JFC) Swing. No que diz respeito linguagem Java, a programao de Interfaces Grficas com o Utilizador, frequentemente designadas por GUIs (do ingls Graphical User Interfaces) deu os seus primeiros passos com o Abstract Window Toolkit (AWT). O AWT tem estado presente em todas as verses do Java. Os objectos AWT so construdos sobre objectos de cdigo nativo, o que fornece um look-and-feel nativo. Costumam ser designados como o menor denominador comum de todas as plataformas. Os objectos Swing (que so os que iremos estudar) so escritos em Java puro e apresentam o mesmo look-and-feel em todas as plataformas. No entanto, podem ser adaptados pelo programador para estilos particulares. No JDK 1.2, os objectos Swing so parte integrante das JFCs. Por todos estes motivos, os objectos AWT caram em desuso e em importncia ao longo do tempo.
Componentes Bsicos
O seguinte esquema mostra a maioria das classes que compem o Java Swing e mostra tambm a relao entre as classes AWT (a amarelo) e as classes Swing (a azul):
Figura 1: Diagrama resumido das classes AWT (amarelo) e Swing (azul). Vamos comear pelas classes JButton e JFrame. Vamos criar dois botes com imagens e responder perante a seleco deles. Alm de reagir ao rato vamos responder tambm a eventos vindos do teclado atravs dos chamados aceleradores. Obtenha os ficheiros para este exemplo: FirstSwing.java, bee.gif e dog.gif. Importe o pacote Swing. Defina duas instncias da classe Icon na classe FirstSwing chamadas bee e dog. Carregue os ficheiros dessas duas imagens. Crie dois botes com cone chamados bee e dog. Adicione um acelerador a cada boto. Ao trabalharmos com JFrames adicionamos componentes a uma rea interior JFrame: obtenha uma referencia para este Container atravs do mtodo getContentPane() . Para fazer com que os botes apaream um por cima do outro, modifique o esqueleto do construtor para que o layout (disposio) do contedo seja um GridLayout com 2 linhas e 1 coluna. Adicione os botes a esse GridLayout. Corra e teste a IU. Note que a tecla aceleradora a Alt em Windows e Solaris e Option em Mac.
Associe os cones aos objectos JCheckbox apropriados. Use o mtodo setIcon() para associar o cone ao estado no-seleccionado e setSelectedIcon para o estado seleccionado.
Coloque as checkboxes numa Box vertical na rea direita do cran. Adicione uma etiqueta Ingredientes a caixa do tamanho. Por fim, crie um JScrollPane com um JLabel para a zona central do cran. O label ser usado para mostrar a imagem da pizza. Necessita ser declarado como final e ter o nome imageLabel. O boto de encomenda de pizza est j colocado no cran no quadrante Sul (no cdigo esqueleto inicial). Corra o programa desenvolvido e teste a IU.
Adicione um MouseListener e faa-o alternar entre os dois tipos de border quando o rato for clicado. Para o quinto boto, crie um DoubleBorderedButton. Faa uma das suas borders ficar com relevo (BevelBorder) com uma cor de destaque azul e sombra amarela. Para a outra faa o mesmo mas com o relevo ao contrrio. A etiqueta deste boto deve ser Azul. O ltimo boto usa uma border diferente, DashedBorder. Esta mostra uma linha a tracejado em vez da slida. Antes de us-la, porm, preciso completar a definio. A interface Border tem trs mtodos, paintBorder(), isBorderOpaque() e getBorderInsets(). Os mtodos paintBorder() e isBorderOpaque() j esto definidos. Defina o mtodo getBorderInsets() para retornar um objecto Insets com THICKNESS volta. THICKNESS uma constante pr-definida na classe DashedBorder. Compile, corra e teste. O resultado dever ser algo semelhante a esta figura:
excepo do doAboutCommand(), ser necessrio fazer as ligaes necessrias ao tratamento de eventos. Para o comando doAbout() ser necessrio criar o correspondente JDialog. No cdigo esqueleto comece por criar do topo para baixo, uma JToolbar, JTextArea e uma JLabel (para uma mensagem de estado do sistema). Guarde as referncias para a JTextArea e JLabel no painel de variveis de instncia pane e statusInfo, respectivamente, j que os mtodos de tratamento de eventos necessitam de lhes aceder. Coloque a JTextArea dentro de um JScrollPane a fim de suportar scrolling .
9
A JToolbar no deve ser flutuvel para no ser arrastada fora da frame. Crie agora uma JMenuBar e adicione-a JFrame. Crie o primeiro menu nessa JMenuBar. Crie um JMenu chamado Ficheiro com os respectivos itens (JMenuItems): Novo, Abrir..., Guardar e Fechar. Coloque um separador entre Guardar e Fechar. Adicione uma mnemnica de teclado para cada item. Para cada JMenuItem, crie um ActionListener annimo para processar o evento e chamar o mtodo apropriado ao tratamento desse evento (ex: Novo ... doNewCommand() etc.) No mtodo doAboutCommand(), crie um JDialog chamado dialog que ir mostrar a informao do Acerca de.... Esta varivel tem de ser final a fim de poder ser usada no tratamento de eventos interno. Agora que os menus esto feitos, resta a barra de ferramentas. Vamos criar quatro JButtons, chamados Novo, Abrir..., Guardar e Acerca de..., e coloc-los na barra. Adicione um separador entre o Guardar e Acerca de....
Para cada boto, adicione uma tooltip com uma mensagem apropriada. Crie ainda um ActionListener annimo para processar o evento e chamar o mtodo necessrio ao tratamento do evento. Compile e corra o editor de texto.
Vista: A vista apresenta o contedo de um modelo. responsabilidade da vista manter a consistncia quando o modelo se altera. Controlador: o controlador traduz as interaces realizadas na vista em aces a serem realizadas pelo modelo. Em Swing, por exemplo, as interaces podem ser cliques no boto do rato ou seleces de itens num menu. As aces realizadas pelo modelo incluem activar processos de negocio (por exemplo, iniciar uma reserva) ou alterar o estado do modelo. Baseado nas interaces do utilizador e no resultado das aces do modelo, o controlador responde seleccionando uma vista apropriada.
Vistas em rvore
O Swing fornece um componente que permite desenhar vistas em rvore que mostram uma vista hierarquizada de outros componentes: JTree. Cada n da JTree implementa a interface TreeNode, onde a classe fornecida por defeito a DefaultMutableTreeNode. Nesta seco, vamos criar uma vista hierrquica muito simples contendo algumas das classes da biblioteca Swing. Vamos mostrar a rvore numa caixa com scroll para o caso da rvore ficar maior do que a frame que a contm. Quando o utilizador seleccionar um n, devemos mostrar tanto a localizao especfica desse n como o caminho para l chegar. Obtenha o cdigo esqueleto para este exemplo e comece por importar o pacote Swing tree. De seguida, crie um conjunto de objectos DefaultMutableTreeNode no construtor do TreeExample, um para cada n na hierarquia de classes.
Component Container Box JComponent AbstractButton JButton JMenuItem JToggleButton JLabel ... [literalmente "..."]
Uma vez criados todos os ns, adicione-os a cada um para construir a hierarquia. DefaultMutableTreeNode inclui um mtodo add que define os filhos de um n. Uma vez criada a hierarquia, crie uma classe que implemente TreeSelectionListener. Faa-a mostrar a etiqueta da clula seleccionada e o caminho completo at ela. Depois de criar a classe TreeSelectionListener, instancie-a. Crie uma classe TreePanel e passe-a raiz do componente da hierarquia e ao TreeSelectionListener. Adicione o painel frame. Vamos completar a descrio do TreePanel depois. A classe TreePanel ir oferecer a representao visual da rvore. Modifique o construtor do TreePanel para que este crie uma JTree chamada tree ligada root passada no construtor. Modifique a propriedade lineStyle da rvore para Angled. Associe o TreeSelectionListener JTree se este for no-nulo.
11
Crie ento um objecto JScrollPane e coloque a rvore nesse objecto. Compile, corra o programa e teste a IU.
Exerccios
1.1. Escreva um programa que permite ao utilizador escolher uma (e apenas uma) de entre as seguintes trs opes: Dolby B, Dolby C e Dolby S. O programa deve tambm mostrar uma legenda com a opo seleccionada. 1.2. Escreva um programa que apresente trs botes: Desporto, Msica e Arte. O programa deve permitir ao utilizador seleccionar os botes apropriados atravs do rato e tambm atravs do teclado via uma mnemnica onde uma letra sublinhada utilizada para a seleco. 1.3. Crie uma simples interface de login/password em Swing. No se preocupe em validar ou verificar os campos de texto, concentre-se apenas na interface. 1.4. Crie uma interface que permita ao utilizador seleccionar uma estao de rdio de entre as seguintes: Rdio Clube Ingls Rdio Especial Rdio Renascimento Rdio 4
(a) a partir da barra de menus da aplicao Swing; (b) a partir de um menu pop-up; (c) a partir de uma toolbar; 1.5. A Loja do Cidado contratou-o para desenhar em Java Swing uma interface de introduo de dados do cidado, para ser usado pelos funcionrios. A interface deve permitir a introduo de: Primeiro e ltimo Nome; Morada, que inclui Rua, Nmero de Porta, Cdigo Postal e Cidade; Tipo de requisio (h trs tipos: B.I., Passaporte e Carta de Marinheiro).
12
1.6. Redesenhe a interface anterior usando containers para dividir a informao no espao de interaco. 1.7. Crie uma interface simples que apresente: Trs botes so dispostos horizontalmente e etiquetados como H1, H2 e H3; Trs botes so dispostos verticalmente e etiquetados como V1, V2 e V3; Os botes horizontais devem apresentar uma border vermelha volta; Os botes verticais devem apresentar uma border azul volta; Os botes verticais devem ser centrados e alinhados com o boto H2 do painel horizontal.
1.8. Crie uma interface que permite ao utilizador compor uma mensagem de correio electrnico semelhante da seguinte figura:
13
Most of us do many things quite well without having much of a clue as to precisely how we do them. L. Constantine, Software For Use.
Motivao
Como so desenhadas as Interfaces com o Utilizador (IU) hoje em dia? As boas abordagens so aquelas onde se ganha uma correcta percepo das tarefas do utilizador e do papel que este assume perante o sistema. So abordagens iterativas, em que se constroem e revem modelos e prottipos da IU. As abordagens aceitveis (e infelizmente mais frequentes) consistem em implementar um prottipo da IU recorrendo aos populares Interface Builders, focando-se na disposio dos elementos, mas imitando IUs familiares ou bem sucedidas e seguindo as convenes (as famosas Guidelines). As abordagens realmente ms focam-se na implementao e nos aspectos tcnicos do sistema, deixando a construo da IU para ltimo plano. Normalmente os designers que seguem estas abordagens assumem que so eles prprios os utilizadores do sistema. Portanto, se eles se sentem familiares e confiantes, tambm os utilizadores finais do produto se sentiro.
modelos de tarefas que representam a estrutura das necessidades dos utilizadores: a arquitectura do uso do sistema (Constantine, 2003). Existem muitas formas de modelar o uso de um sistema. Desde diagramas de fluxo (que descrevem as tarefas em termos de eventos sequenciais) at cenrios (que representam narrativas de uma ou mais actividades). Nos casos de utilizao estruturados, a narrativa do cenrio de utilizao do sistema dividida em duas seces: o modelo das aces do utilizador, que mostra o que o utilizador faz, e o modelo de resposta do sistema, que mostra como o sistema reage ao utilizador. A Tabela seguinte mostra um exemplo clssico de um caso de utilizao estruturado para a tarefa de obter dinheiro a partir de uma caixa multibanco: Obter dinheiro
Aces do Utilizador Inserir carto Resposta do Sistema Ler fita magntica Pedir PIN Inserir PIN Verificar PIN Mostrar menu de opes de transaco Carregar na tecla Pedir quantia a levantar Inserir quantia Mostrar quantia Carregar na tecla Devolver carto Remover carto Fornecer dinheiro Remover dinheiro
Os casos de utilizao estruturados tipicamente contm muitas pr-definies (quer implcitas quer explcitas) sobre a forma da IU que ainda est para ser desenhada. Tendem por isso a ficar muito prximos dos detalhes de implementao do sistema, e se nos basearmos num caso de utilizao muito concreto que contenha decises de desenho implcitas, corremos o risco de perder muitas hipteses de obter um desenho bom, focado nos utilizadores e no no computador, linguagem de programao, etc. Isto levou inveno dos casos de utilizao essenciais, que so definidos da seguinte maneira: Um caso de utilizao essencial uma narrativa estruturada, expressa na linguagem do domnio da aplicao e dos utilizadores, composta por uma descrio simplificada, generalista, abstracta e independente da tecnologia da tarefa ou interaco que completa, com significado e bem definida do ponto de vista dos utilizadores, cujos papis personificam o propsito ou intenes subjacentes interaco. Um caso de utilizao essencial estruturado em trs partes: uma frase que descreve a inteno expressa do utilizador, e uma narrativa dividida em duas partes: o modelo da inteno do utilizador e o modelo da responsabilidade do sistema.
16
A diferena entre um caso de utilizao essencial e um caso de uso estruturado pode parecer subtil, mas as consequncias no. Constantine descreve o seguinte exemplo, que consiste em reescrever o caso anterior na forma essencial, focando-se nas intenes e no nas aces, e tambm simplificando e generalizando a partir do caso concreto. Comeamos por nos interrogar sobre o porqu de um utilizador inserir um valioso carto numa caixa multibanco. primeira vista, pareceria uma aco ridcula, sobretudo tendo em conta que uma mquina pode falhar e ficar com o carto, nunca o devolvendo. No entanto, milhes de utilizadores cumprem esta tarefa todos os dias. Portanto, a questo que pomos : Para qu? Para que ele (o utilizador) se identifique perante o sistema multibanco. Eles fazem isto porque no querem que mais ningum retire dinheiro das suas contas. O caso essencial reescrito desta forma: Obter dinheiro
Intenes do Utilizador Identificar-se Responsabilidades do Sistema Verificar identidade Oferecer escolhas Escolher Fornecer dinheiro Levar dinheiro
Este caso de utilizao essencial dramaticamente mais curto e simples que o concreto (para a mesma interaco) porque inclui apenas os passos que so essenciais e de interesse genuno ao utilizador. Visto ser orientado ao problema, e no soluo, deixa propositadamente em aberto muitas possibilidades em aberto em relao ao desenho e implementao do sistema. Por exemplo, alm de cartes de fita magntica, existem muitas outras maneiras de identificar um utilizador perante um sistema. A caixa multibanco pode examinar a retina ou a impresso digital para descobrir quem est a utilizar o sistema. Outra possibilidade que deixada em aberto pelo caso essencial oferecer as escolhas atravs da voz ou confirm-las pelo processamento da resposta vocal.
17
(ii) o modelo de desenvolvimento subjacente ao processo Wisdom, que assenta numa nova arquitectura de modelos UML que suporta o desenvolvimento centrado nos utilizadores e o desenho de interfaces com o utilizador; (iii) a arquitectura Wisdom introduz novos modelos UML que suportam a modelao de perfis de utilizadores, da interaco, do dilogo homem-mquina, e das questes de apresentao; (iv) a notao Wisdom uma contextualizao e extenso do UML que define um novo conjunto de elementos de modelao que suportam o processo e a arquitectura Wisdom. Como o Wisdom um mtodo focado nos sistemas interactivos, utiliza a interpretao essencial dos casos de utilizao de Constantine, que vimos na seco anterior. O Wisdom guiado pelos casos de utilizao, os quais tambm servem para encontrar e especificar classes de anlise, fluxos de tarefas, espaos de interaco e mesmo requisitos no-funcionais (usando notas/comentrios). Os fluxos de tarefas so fulcrais na abordagem Wisdom. Um fluxo de tarefas corresponde a uma descrio das intenes do utilizador e responsabilidades do sistema durante o decorrer de uma tarefa especfica. Essa descrio feita de uma forma independente da tecnologia. Na soluo proposta no Wisdom, promove-se uma representao diagramtica que facilita simultaneamente a integrao com materiais utilizados em sesses participadas ( esquerda) e diagramas de actividade UML que so fceis de manter, relacionar com outros elementos de modelao e expandir medida que o conhecimento do problema aumenta. Desta forma, o Wisdom combina as narrativas essenciais propostas por Constantine com tcnicas participadas. Esta representao, consistente com a norma da UML, promove a recolha de requisitos atravs de tcnicas participadas uma vez que permite uma melhor manipulao do que as narrativas em linguagem natural propostas por Constantine. Os fluxos de tarefas, construdos inicialmente em sesses participadas atravs de materiais lowtech (cartes adesivos, stickers, etc.), so depois traduzidos em diagramas UML fceis de manter, estender, relacionar e documentar pela equipa de desenvolvimento. A ideia garantir que a equipa de desenvolvimento produza uma interface de utilizador que reflicta a estrutura do uso do produto e no a estrutura interna da aplicao.
18
Figura 2: Exemplo de modelao Wisdom para um sistema de reservas de hotel: (a) modelo de casos de utilizao essenciais para dois utilizadores distintos; (b) modelo do domnio e (c) fluxo de tarefas para o caso de uso check-out. [Retirado de (Nunes, 2000a)]. A Figura 2 ilustra a modelao de casos de utilizao essenciais e fluxo de tarefas para um exemplo clssico: um sistema de reservas de hotel: The guest makes a reservation with the Hotel. The Hotel will take as many reservations as it has rooms available. When a guest arrives, he or she is processed by the registration clerk. The clerk will check the details provided by the guest with those that are already recorded. Sometimes guests do not make a reservation before they arrive. Some guests want to stay in non-smoking rooms. When a guest leaves the Hotel, he or she is again processed by the registration clerk. The clerk checks the details of the staying and prints a bill. The guest pays the bill, leaves the Hotel and the room becomes unoccupied. O diagrama de casos de utilizao essenciais (a) exemplifica um requisito no funcional (Availability must be real time) . O modelo de domnio (b) representa os objectos mais importantes no contexto do sistema. O fluxo de tarefas (c) modelado em UML por um diagrama de actividade que no exemplo da Figura refere-se ao caso de utilizao da tarefa de Checkout.
Exerccios
2.1. Suponha que est a construir uma ferramenta de modelao (UML por exemplo) e que aps algumas iteraes voc e a sua equipa chegaram ao esquema de casos de utilizao descrito na figura seguinte:
19
A fim de refinar o caso de utilizao Procurar Modelo, especifique o caso de utilizao essencial seguindo a norma de Constantine. De seguida especifique (para o mesmo caso) o diagrama de fluxo de tarefas de acordo com o mtodo Wisdom. 2.2. Considere um caso de utilizao consultar saldo bancrio. Especifique o caso de utilizao essencial e o diagrama de fluxo de tarefa. Repita o mesmo exerccio para o caso de utilizao transferir dinheiro (entre contas bancrias) e consultar transaces do carto
20
na fase de anlise que so refinados e estruturados os requisitos descritos na arquitectura do uso do sistema. As principais actividades de anlise so identificar e estruturar classes de anlise e classes especficas ao mtodo Wisdom (espaos de interaco e tarefas). As classes de anlise representam abstraces de conceitos capturados na fase de requisitos. So focadas nos requisitos funcionais, deixando os requisitos nofuncionais para a fase de desenho. Seguindo a norma UML, as classes de anlise so divididas em trs tipos: entity (entidade, informao passiva), control (controlo, lgica de negcio complexa) e boundary (fronteira, comunicao com o exterior). O mtodo Wisdom estende a modelo conceptual de anlise do UML introduzindo duas novas classes especficas interface com o utilizador. Espaos de interaco (interaction spaces) so uma classe que modela a interaco entre o sistema e os actores. So responsveis por receber e apresentar informao de/para os utilizadores. As classes interaction spaces tm aces (actions) em vez de operaes e atributos estereotipados com input e output elements que modelam, respectivamente, informao recebida pelo utilizador e informao apresentada ao utilizador. A outra classe a das Tarefas (tasks). As classes tarefa so responsveis pelo sequenciamento das tarefas e pela consistncia das entidades de apresentao (espaos de interaco). As classes tarefa encapsulam as dependncias temporais complexas, e outras restries, entre actividades, isolando as alteraes na estrutura de dilogo; A Figura 3 mostra as notaes para o modelo de anlise e de interaco.
Figura 3: Notaes alternativas para os esteretipos de classes dos modelos de anlise e interaco. A Figura 4 ilustra um exemplo de uma arquitectura Wisdom para o mesmo sistema de reservas de hotel do captulo anterior, com as classes de anlise esquerda e as classes de interaco direita.
Figura 4: Exemplo da arquitectura Wisdom para o modelo de Interaco e de Anlise, para um sistema de reservas de hotel.
Exerccios
3.1. Considere que est a modelar uma sistema para deteco e gesto de informao sobre defeitos de usabilidade de programas. Para o seguinte diagrama de tarefas relativo ao caso de utilizao Gravar Defeito de Usabilidade, apresente uma arquitectura para o modelo de anlise e de interaco seguindo o mtodo Wisdom:
22
3.2. Para os diagramas de fluxo de tarefas relativos ao exerccio 2.2 (casos de utilizao consultar saldo bancrio, transferir dinheiro (entre contas bancrias) e consultar transaces do carto, especifique uma arquitectura conceptual Wisdom.
23
A notao Wisdom (Nunes, 2000a) consiste num conjunto de notaes compatveis com o UML, que suportam a modelao eficaz e eficiente de sistemas interactivos. Para suportar a modelao dos aspectos de apresentao da IU numa fase de desenho, o mtodo Wisdom prope as seguintes extenses ao UML (Nunes, 2000a): - Interaction Space, um esteretipo de classe que representa o espao contido na IU onde o utilizador interage com todas as ferramentas e materiais no decorrer de uma tarefa ou conjunto de tarefas inter-relacionadas; - navigates, um esteretipo de associao entre dois espaos de interaco que denota uma mudana de espao de interaco por parte do utilizador; - contains, um esteretipo de associao entre duas classes espaos de interaco que denota que a classe fonte (o contentor) contm a classe alvo (o contedo); Este esteretipo de associao s pode ser utilizado entre dois espaos de interaco e unidireccional; - input element, um esteretipo de atributo que denota informao recebida pelo utilizador, isto , informao sobre a qual o utilizador pode operar (note-se a semelhana deste conceito com os hbridos da notao cannica); - output element, um esteretipo de atributo que denota informao apresentada ao utilizador, ou seja, informao que o utilizador recebe mas no manipula; - action, um esteretipo de operao que denota algo que o utilizador pode realizar na IU e que causa uma alterao significativa no estado interno do sistema. A Figura 5 mostra a criao de interfaces concretas via modelo de apresentao Wisdom, para o mesmo problema que temos vindo a considerar nos captulos anteriores.
Figura 5: Transformao do modelo de apresentao Wisdom do sistema de reservas de hotel numa interface concreta.
Exerccios
4.1. (Exame poca Especial 2003/2004). A Figura seguinte representa uma interface que permite ao utilizador compor uma mensagem de correio electrnico. Apresente um modelo de apresentao para esta interface utilizando as tcnicas do mtodo Wisdom. Comece por reduzir o modelo aos espaos de interaco mais genricos e depois detalhe cada um dos espaos de interaco em termos dos seus elementos de entrada, sada e aces.
25
4.1. A Figura seguinte representa outra interface bem conhecida que permite ao utilizador imprimir uma folha de clculo. Apresente um modelo de apresentao para esta interface. Comece por reduzir o modelo aos espaos de interaco mais genricos e depois detalhe cada um dos espaos de interaco em termos dos seus elementos de entrada, sada e aces.
4.3. Apresente um modelo de apresentao Wisdom para o diagrama de fluxo de tarefas relativo ao caso de utilizao essencial Procurar Modelo do exerccio 2.1. Esboce uma possvel concretizao desse modelo para um sistema Windows.
26
Formas diferentes de retratar janelas: esquerda o abstracto Fentres de R. Delaunay. direita o concreto Venetian Windows de M. Flemingham.
A prototipagem rpida de sistemas interactivos utilizada com o objectivo de validar e avaliar ideias de desenho numa fase inicial do processo de desenvolvimento. Tenta-se, portanto, promover a colaborao entre todas as pessoas envolvidas no projecto (desde os gestores, designers e programadores at aos utilizadores finais), assim como facilitar os ciclos iterativos de reviso e teste. Neste captulo, descreve-se alguns mtodos para o desenvolvimento rpido de prottipos de IU e a notao base que iremos estudar, a notao Abstracta Cannica: uma nova linguagem de especificao de prottipos abstractos que assenta numa notao prtica para definir e comparar ideias de interaco visuais (Constantine, 2003).
Outra estratgia, utilizada pela abordagem DiaMODL, combina este aspecto com uma ligao mais forte ao elementos concretos da IU (Trtteberg, 2003), esperando-se com isso favorecer o processo de teste, uma vez que o utilizador lida com um cran concreto. A prototipagem de interfaces atravs de ferramentas de esboo electrnicas tambm obteve algum sucesso em sistemas como o SILK (Landay 2001) ou o DENIM (Newman, 2003). O esboo importante durante o processo de prototipagem inicial porque incentiva a criatividade do designer: a ambiguidade inerente dimenso ou tipo dos esboos encoraja a explorao de novos desenhos sem que o designer se perca em detalhes. Isto obriga a que o designer se concentre nos assuntos mais importantes desta etapa, como a estrutura geral e o fluxo da interaco (Landay, 2001). Contudo, a tarefa de reconhecimento dos componentes concretos a partir do esboo no fcil, uma vez que qualquer algoritmo de reconhecimento de padres susceptvel de errar. Testes de usabilidade a estas ferramentas revelaram que alguns utilizadores sentiram dificuldades em manipular e introduzir elementos textuais, assim como em compreender a forma de seleccionar, agrupar e mover objectos.
Figura 6: Os trs smbolos bsicos sobre os quais assenta a notao abstracta cannica (da esquerda para a direita): ferramenta abstracta genrica, material abstracto genrico e material activo (ou hbrido) genrico.
28
A Figura 1 mostra os trs smbolos bsicos da notao Abstracta Cannica. A Figura contm a notao em mais detalhe. A notao completa e detalhada encontra-se descrita e exemplificada nas figuras seguintes.
Apesar de os PACs no possurem um formalismo preciso nem a semntica necessria a fornecer ferramentas de suporte ou gerao automtica de IU, verificamos que a notao suficientemente expressiva para gerar Interfaces concretas a partir da especificao abstracta cannica.
29
Figura 7: esquerda, uma representao PAC de uma interface de pr-visualizao. direita, um exemplo concreto (dilogo do Microsoft PowerPoint). Na Figura 7, apresentamos as representaes Wisdom e Cannica para o padro de IU identificado e classificado como Pr-visualizao (Welie, 2000). Tambm apresentamos um exemplo concreto deste padro (neste caso, um dilogo do Microsoft PowerPoint). O problema ocorre quando o utilizador procura por um item numa pequeno conjunto de itens e tenta encontrar o item desejado navegando nesse conjunto. Este padro particularmente til quando a natureza do contedo do item no a mesma que a natureza do seu ndice de procura (por exemplo, um conjunto de imagens ou clips udio indexadas pelo nome). A soluo consiste em fornecer ao utilizador uma pr-visualizao do item que estiver seleccionado num determinado instante (Welie, 2000).
Exerccios
5.1. Modele em PAC o padro de Navegao em Contentores. Quando o utilizador necessita de encontrar um item numa coleco de contentores, a soluo deste padro consiste em dividir o espao de interaco em trs partes: uma para visualizar a coleco de todos os contentores, outra para visualizar um determinado contentor e outra para visualizar um determinado item desse contentor. A mostra um exemplo concreto deste padro: o visualizador de Mail/News do Netscape Navigator, assim como a representao de desenho Wisdom. Discuta as vantagens de uma notao em relao outra. Nota : na sua soluo, tenha em conta que o utilizador selecciona, em primeiro lugar, um determinado contentor, depois um item contido nesse contentor e s ento visualiza o item seleccionado. (Sugesto: lembre-se da forma ocidental de leitura/escrita).
30
Figura 8: O padro de Navegao em Contentores. 5.2. Escolha um padro de interface de entre os disponveis na coleco Amsterdam (www.welie.com/patterns). Modele esse padro em Wisdom e PAC. Discuta as diferenas de cada soluo. 5.3. Considere o prottipo abstracto representado na figura seguinte. Apresente uma representao concreta (em esboo ou em Java Swing) para este prottipo. Lembre-se que a soluo deve ser criativa e suportar a tarefa: mostrar uma lista de itens dando ao mesmo tempo a possibilidade de reorden-los. A primeira interface que desenhar provavelmente ir ter problemas. Identifique-os, corrija-os e reitere at chegar a uma soluo no-trivial.
5.4. Proponha um prottipo abstracto cannico para o caso de utilizao essencial relativo ao Procurar Modelo do exerccio 2.1. 5.5. Proponha um prottipo abstracto cannico para o caso de utilizao Transferir dinheiro do exerccio 2.2.
31