5. EXPERIÊNCIA DE USO DO HYPERTOOLBUILDER
5.2 Considerações sobre o desenvolvimento do HYPERBOOK
Após descritas as funcionalidades da ferramenta de autoria HyperBook cabe ressaltar a forma que a mesma foi desenvolvida baseada no framework HyperToolBuilder.
A Figura 5-15 ilustra as especializações das classes do framework HyperToolBuilder para o desenvolvimento da ferramenta de autoria HyperBook. Para a criação da ferramenta de autoria HyperBook foi criada uma subclasse concreta BookAuthoringTool, da classe abstrata
AuthoringTool do framework. Dessa forma a aplicação herda automaticamente os
relacionamentos de suas superclasses do framework. Herda o relacionamento de
AuthoringTool com StorageManager, reutilizando dessa forma o procolo de controle de
armazenamento de documentos. Além disso, como o framework já possui uma subclasse concreta de StorageManager chamada FileStorageManager, ele já disponibiliza através dessa classe toda a funcionalidade para armazenamento de documentos em arquivo. Ao desenvolver a aplicação, o usuário poderá decidir entre apenas instanciar a classe do framework
FileStorageManager caso deseja armazenar documentos em arquivos, ou criar outras
Menu Popup
subclasses de StorageManager com as funcionalidades para outras formas de armazenamento, em banco de dados ou em formato XML, por exemplo.
Através da especialização da classe AuthoringTool a aplicação herda também o relacionamento com a classe Player, responsável por controlar a execução ou visualização de um documento. O framework já possui uma subclasse concreta de Player chamada
PlayerDefault, que apresenta seqüencialmente todas os elementos de seção de um documento
em tela cheia. Porém, Player também consiste em um ponto flexível do framework já que permite a criação de outras subclasses com outras implementações de execução de documentos.
Para a criação da aplicação HyperBook foram reutilizadas as duas classes concretas:
FileStorageManager e PlayerDefault, herdando do framework toda a funcionalidade de
armazenamento em arquivo e execução de livro.
Foi especializada a classe ToolBar, criando a subclasse concreta BookToolBar, para implementar uma barra de comandos ou barra de atalho (optou-se por utilizar barra de atalho ao invés de barra de menu por brevidade) que disponibiliza os possíveis comandos a serem executados pelo usuário-autor.
E, finalmente, foi especializada a classe ToolPanel do framework criando a classe
BookToolPanel responsável por agregar as subclasses concretas de EditionTool já disponíveis
no framework HyperToolBuilder. Instâncias de SelectionTool, SentenceTool, TextTool,
ButtonTool, ImageTool e MovieTool foram agregadas à uma instância de BookToolPanel
para compor a barra com as ferramentas da aplicação.
A Figura 5-16 ilustra as especializações das classes do framework HyperToolBuilder para a composição da estrutura de um documento (livro) manipulado pela ferramenta de autoria HyperBook.
Através da Figura 5-16 pode-se observar o grande número de classes e relacionamentos que são reutilizados do framework para a criação de um documento do tipo livro. Livro é o documento que será manipulado pela ferramenta de autoria HyperBook.
Para criar um livro20 foi especializada a classe abstrata do framework Presentation criando a classe Book que é um tipo de documento multimídia. A classe Section criando a subclasse concreta Chapter representando os capítulos do livro. E a classe SectionElement criando a subclasse concreta Page que representa as páginas de um capítulo. Como a classe
Book é subclasse de Document ela herda o relacionamento com as superclasses Section e SectionElement.
Todas as unidades de informação (Sentence, Text, Button, Image, Sound, Movie) previstas para serem inseridas em um livro estão previstas no framework, bem como sua utilização. A instanciação das subclasses concretas de StaticMedia e DynamicMedia acontece em tempo de execução da aplicação, toda a vez que o usuário-autor seleciona a ferramenta correspondente a unidade de informação, a mesma fabrica (instancia) um objeto dessas classes.
O protocolo de controle do relacionamento entre as unidades de informação e as possíveis ações sobre as mesmas também é herdado do framework. Apenas se fez necessário criar subclasses concretas da classe Action para disponibilizar na aplicação as ações específicas da mesma. Foram criadas apenas três ações por brevidade através das seguintes subclasses: ExecuteSound, ExecuteMovie e GoToPage.
Através da Figura 5-15 e Figura 5-16 pode-se perceber a substancial quantidade de reuso obtido para o desenvolvimento do HyperBook baseado no framework HyperToolBuilder. A partir da análise dos diagramas das figuras observa-se que seria necessário a criação de aproximadamente vinte e nove classes para o desenvolvimento da aplicação,21 sem a utilização do framework. Com a utilização do framework foram reusadas 9 classes do mesmo através de herança de classes abstratas e 20 classes foram reusadas por composição, através da instanciação de classes concretas do framework.
20 O conceito de livro foi convencionado para a criação da aplicação HyperBook como sendo um documento
multimídia dividido em capítulos e estes divididos em páginas.
21 Nem todas as classes do framework que aparecem no diagrama são reutilizadas para a ferramenta de autoria
HyperBook. Além disso, a contagem realizada inclui apenas as classes do domínio do problema, não incluindo classes de Visão e Controle do modelo MVC
Figura 5-15 Modelo de Objetos da ferramenta de autoria HyperBook, desenvolvida sob o framework HyperToolBuilder MenuBar <<RE>> ToolBar <<R>> StorageManager <<RE>> Player <<RE>> LearningDocument <<RE>> BookToolBar BookToolPanel BookAuthoringTool PlayerDefault FileStorageManager AuthoringTool <<RE>> EditionTool <<RE>> ToolPanel <<RE>> SelectionTool SentenceTool TextTool ButtonTool ImageTool MovieTool QuestionTool ChoiceTool
Framework
HyperToolBuilder
Aplicação
HyperBook
Figura 5-16Modelo de Objetos do documento(livro) da ferramenta de autoria HyperBook, desenvolvida sob o framework HyperToolBuilder Page Presentation <<RE>> Book Practice <<RE>> Chapter SectionComposite Section <<RE>> Tutorial <<RE>> LearningDocument <<RE>>
OpenQuestion TrueOrFalse MarkerDefault Media <<RE>> S tati cMed ia <<RE>> DynamicMedia <<RE>> Handle MultipleChoice Marker <<RE>> QuestionComposite <<RE>> Edge ChoiceComposite <<RE>> GameObjectComposite <<RE >> Group <<RE>> MobileObjectComposite <<RE>> 33 SectionElement <<RE>> InformationUnit <<RE>>
Inform ati onUn itD ecora tor
Exit ActionComposite
Action
GoToPage ExecuteSound Exe cut eMov ie Sentence
Text Button Image Link Sound Movie Animation