1 suit - simple user interface toolkit maria alice grigas varella ferreira ep-usp abril 2003
TRANSCRIPT
1
SUIT - Simple User Interface Toolkit
Maria Alice Grigas Varella FerreiraEP-USP
Abril 2003
2Maria Alice Grigas Varella Ferreira – EP-USP
SUIT - Simple User Interface Toolkit
Biblioteca de procedimentos que ajuda os programadores a aprenderem a criação de interfaces gráficas (visa o aprendizado)UNIX, DOS e WindowsImplementa a habilidade de mover janelas e redimensioná-las em tempo de execução da aplicaçãoOrientação a objeto (porém não é orientada a objetos, realmente)
3Maria Alice Grigas Varella Ferreira – EP-USP
Orientação a objetos
Segundo Rambaugh (1991) um objeto é “um elemento que combina estruturação de dados com procedimentos”.
ProcessosDados
métodos (procedimentos)
4Maria Alice Grigas Varella Ferreira – EP-USP
Vantagens da orientação a objetos
Encapsulamento de dados – os dados são manipulados somente através dos métodos definidos para eles
ProcessosDados
Métodos (procedimentos)
5Maria Alice Grigas Varella Ferreira – EP-USP
Vantagens da orientação a objetos
Abstração – não é necessário conhecer o interior do objeto; é preciso conhecer só o seu funcionamento
Processos
6Maria Alice Grigas Varella Ferreira – EP-USP
Vantagens da orientação a objetos
Herança - novos objetos podem ser gerados a partir de objetos já existentes, de forma organizada: os programas que usavam os objetos “antigos”
continuam usando estes objetos os programas que necessitam dos novos objetos
utilizam somente os “novos” objetos - os herdadosHierarquia de objetos - conjunto dos objetos antigos (ancestrais) e novos (descendentes)
7Maria Alice Grigas Varella Ferreira – EP-USP
Hierarquia de objetos
Sim Não
Tem certeza?
Finalizar
RAIZ
Caixa de diálogo Botão Finalizar
Botão Sim Botão Não Mensagem
8Maria Alice Grigas Varella Ferreira – EP-USP
Widgets – objetos de telaBounded value - potenciômetroMenu - coleção de botõesScrollable list - scroll barRadio buttons - seleção de apanas uma opção dentro de um conjunto de opçõesText editor - padrão EmacsColor chips - para seleção de uma cor atualType in box - texto de uma linhaOn / Off switchButtons – botões
9Maria Alice Grigas Varella Ferreira – EP-USP
Que são widgets
Cada widget caracteriza uma classeCada elemento que aparece na tela, e que é de um determinado tipo de widget é uma instância da classeCada objeto possui um conjunto de propriedades
Sim Não
Tem certeza?
Duas instâncias da classe Button
10Maria Alice Grigas Varella Ferreira – EP-USP
Quem são os widgets
O sistema fornece uma Biblioteca de Objetos já definidos: menus, caixas de diálogo, scroll bars, botões, etc.
A Biblioteca contém além dos objetos de interface os elementos gráficos mais comuns em Computação Gráfica bidimensional, tais como linhas, pontos, círculos e ícones, importados da SRGP.
Para ser um bom projetista, utilizador de toolkits, deve-se, antes de mais nada, conhecer muito bem a biblioteca de objetos.
11Maria Alice Grigas Varella Ferreira – EP-USP
12Maria Alice Grigas Varella Ferreira – EP-USP
13Maria Alice Grigas Varella Ferreira – EP-USP
Como manipular os Widgets
Cada classe de objeto apresenta um conjunto de atributos particulares (propriedades) , bem como de métodos, os quais se acham ligados às características de funcionamento de cada classe. Assim, para que o programador possa instanciar um objeto, ele deve antes de mais nada saber como esta classe funciona e quais os atributos do protótipo.
Não é fácil conhecer todos os procedimentos e atributos de todas as classes!
14Maria Alice Grigas Varella Ferreira – EP-USP
Como usar os widgets
Os objetos que comparecem em um programa podem ter sua aparência e funcionamento definidos através da atribuição de valores conveniente aos seus parâmetros, e da chamada adequada de seus procedimentos.
15Maria Alice Grigas Varella Ferreira – EP-USP
Construção da interface
A interface do aplicativo é construída através da colocação dos widgets sobre uma tela.Cada elemento que compõe a tela é criado por meio de uma primitiva de criação; ele é incorporado a um conjunto que caracteriza a interface do programa, e que é armazenado em um arquivo denominado suit.sui.Os objetos podem, então, ser reposicionados e redimensionados dinamicamente na tela, sendo os seus atributos correntes armazenados neste arquivo
16Maria Alice Grigas Varella Ferreira – EP-USP
Construção da interfaceO programador pode instanciar quantos objetos quiser de cada classe, dentro dos limites impostos pelo ambiente utilizado, e capacidades de sua máquina.Após a instanciação do objeto, o programador deverá "moldá-lo" às necessidades do aplicativo; para isso ele deverá:
1. atribuir valores apropriados aos atributos e 2. utilizar os métodos particulares de cada
classe.
17Maria Alice Grigas Varella Ferreira – EP-USP
SUIT EditorPermite alterar as propriedades das widgetsColocando o cursor sobre a widget e teclar SUIT-e, chama este editorAs propriedades podem ser do objeto, da classe e globais (!)
Objeto:“bounded value Grau”
Classe: Todos os “bounded values”
Globais: para todas as janelas
Como o sistema procura a propriedade
18Maria Alice Grigas Varella Ferreira – EP-USP
Criação de uma interface
/* Programa básico para criação de interfaces - o “loop” principal – fornecido na forma de template */
#include "suit.h“
void main (int argc, char *argv[]) { SUIT_init(argv[0]); /* inicializa o sistema */ /* define os objetos de tela */ SUIT_beginStandardApplication();}
19Maria Alice Grigas Varella Ferreira – EP-USP
Comando SUIT_beginStandardApplication(); Equivale a:
SUIT_beginDisplay(); /* cria os objetos na tela, inicia o
sistema e desenha todos os objetos na tela */while (TRUE){ SUIT_checkAndProcessInput(INDEFINITE) /* verifica mouse e teclado e envia os eventos para os
“widgets apropriados *}
20Maria Alice Grigas Varella Ferreira – EP-USP
Categorias de Rotinas
Inicialização do sistemaFinalização e “limpeza” do sistemaFunções geométricasAtribuição de valores às propriedades dos objetosLeitura dos valores das propriedades dos objetosFunções de exibição
21Maria Alice Grigas Varella Ferreira – EP-USP
Categorias de Rotinas
Tratamento de eventosFunções de criação das widgetsFunções de HierarquizaçãoFunções de draggingManipulação de cadeiasMiscelâneaFunções gráficas (da SRGP)Biblioteca de widgets
22Maria Alice Grigas Varella Ferreira – EP-USP
Programa 3cell - calculadora
34 34+ = 68
GO
DONE
num1 num2 result
23Maria Alice Grigas Varella Ferreira – EP-USP
Programa 3cellAo todo, existem 7 objetos na tela:
6
34 34+ = 68
GO
DONE
num1 num2 result
1
1
7
5
43
2
24Maria Alice Grigas Varella Ferreira – EP-USP
Programa 3cell
Três objetos possuem nomes (num1, num2 e result); os demais são anônimos. Os objetos anônimos não serão “alterados” pelo programa.1 e 2 são caixas de texto (Type in the box)5 é do tipo Label; Label exibe valores na tela, mas não pode ser manipulado pelo usuário.6 e 7 são botões; 7 é um botão especial: ele encerra o funcionamento do programa.
25Maria Alice Grigas Varella Ferreira – EP-USP
Criação de objetos em 3cellvoid main (int argc, char *argv[]) { SUIT_init(argv[0]);
// criação dos objetos num1 = SUIT_createTypeInBox("num 1",NULL); num2 = SUIT_createTypeInBox("num 2",NULL); SUIT_createLabel("+"); SUIT_createLabel("="); result = SUIT_createLabel("result"); SUIT_createButton("GO", PerformAddition); SUIT_createDoneButton(NULL);
caption
Rotina de callback
26Maria Alice Grigas Varella Ferreira – EP-USP
Rotina de Callback de 3cellvoid PerformAddition(SUIT_object button) { double temp1, temp2; char buffer[100]; temp1 = atof(SUIT_getText(num1,"current value")); temp2 = atof(SUIT_getText(num2,"current value")); sprintf(buffer, "%f", temp1 + temp2); SUIT_setText(result, "label", buffer); } Atributo de Label que recebe o
conteúdo de buffer
Atributo de Type in the Box que recebe o valor fornecido pelo usuário
27Maria Alice Grigas Varella Ferreira – EP-USP
Referências bibliográficas
Documentos da SUIT – manual está no site. Há uma cópia para consulta na bibliotecaFoley, J. D. et al. Computer Graphics Principles and Practices. Addison-Wesley, Reading, 1990. Cap. 8-10.