RV: Objetos e Implementação Prof. Dr. Annibal Hetem Jr. Programação de RVs Ainda não existem no mercado ferramentas específicas para o desenvolvimento de RVs. As aplicações existentes usam códigos desenvolvidos especialmente para sua implementação. Widgets A bibliografia e os projetistas de RV convencionaram chamar de “widget” uma entidade de software OO que encapsulam em um único objeto Estados Funcionalidades Aparência Interface Tipos de widgets As widgets são associadas em “tipos”. Cada instância de uma widget contém dados e funcionalidades específicas de seu tipo. Cada “tipo” é definido pela lista destas especificidades e seu comportamento. O tipo de uma widget é definido no momento de seu instanciamento. Biblioteca de Widgets Permite que o desenvolvedor utilize aspectos comuns às widgets e chame funções específicas de uma instância de widget. São o primeiro passo no sentido de uma linguagem (ou uma meta-linguagem) padrão para a RV. Herança funcional Cada widget pode ser construída a partir de outras widgets. Permite que mecanismos de interação sejam prototipados. Facilita a reprogramação de comportamentos específicos. A implementação parte da construção de primitivas simples, e evolui para as mais complexas. Herança de recursos Widgets de diferentes tipos podem compartilhar o uso de recursos comuns. Facilita o projeto de interfaces modulares. Eventos gerados por widgets podem ser usados como triggers de outras widgets. O projeto de widgets assume um caráter hierárquico. Eventos As ações e mudanças de estado das widgets são disparadas (triggered) por eventos. Eventos podem ser atômicos (simples) Pegar, avançar, ligar... Eventos podem ser compostos (complexos) Jogar para cima, chutar, puxar uma alavanca. Widgets x Eventos As widgets respondem aos eventos através de um mecanismo de call-back. O call-back permite “uma ação disparar outras Evento gerado ações”. pelo usuário Call-back de Exemplo: primeira ordem Mudar um objeto de lugar pode fazer um outro objeto cair ou deformar-se, que por sua vez gera um ruído. Call-back de segunda ordem Atributos e propriedades Algumas propriedades são comuns a todas as widgets: Nome, cor, ícone, widget pai, etc. Algumas propriedades são atribuídas por herança. A widget “raiz” (root) tem valores default e a partir dela são geradas as outras instâncias. Exemplo: widget escalar Permite ao usuário escolher um valor escalar entre um mínimo e um máximo. Controle de cores A combinação de várias widgets pode compor widgets mais complexas. Exemplos de widgets complexas Vizualizar documento de texto (longo) Busca na Internet/Intranet Login Calendário e relógio Customização de ícone