• Nenhum resultado encontrado

CAPÍTULO 3 OPERACIONALIZAÇÃO DA MODELAGEM

3.3. ORGANIZAÇÃO DE CLASSES DO PROGRAMA VISCOTOOL

estimulada pela biblioteca gráfica wxWidgets, uma vez que a primeira é uma sub-biblioteca da segunda criada pelos desenvolvedores SCHALIG e RONDINI (2003) não pertencentes ao grupo wxWidgets. Destaca-se que a utilização do mecanismo de herança entre classes na biblioteca wxMathPlot para construção dos gráficos do programa ViscoTool é, por si só, uma amostra de que o paradigma de POO permite uma reutilização mais natural e facilitada de códigos já existentes.

As principais classes criadas para a versão atual do ViscoTool estão exibidas na Figura 3.2 da página seguinte. Nesta figura, que segue a notação UML (Unified Modeling Language) (OMG, 1997), estão representadas classes tanto de natureza gráfica (classes viscoToolApp, MainFrameViscoTool, ShifFactorDialog, CurveFittingDialog, ExperimentalDataPlot e PronySeriesPlot), quanto de natureza numérica (classes Ctrl, MasterCurve e PronySeries).

A criação de inúmeras classes permitiu utilizar extensivamente o conceito de encapsulamento de dados, resultando em um controle maior sobre modificações pelo mecanismo formal de consulta e atribuição de dados (set and get functions). Além disso,

a criação de classes representando entidades com escopo de atuação limitado permitiu uma maior organização do código, tornando sua expansão mais fácil para versões futuras do ViscoTool. Os parágrafos seguintes apresentam uma breve descrição das classes gráficas e numéricas criadas.

Figura 3.2: Principais classes do programa de caracterização viscoelástica ViscoTool.

Com relação às classes gráficas criadas para o ViscoTool, tem-se inicialmente a classe ViscoToolApp que é responsável pela inicialização do programa pela instanciação da classe principal de interface com usuário (MainFrameViscoTool). Esta última é responsável pela tela inicial do ViscoTool e contém diversas entidades gráficas disponíveis na biblioteca wxWidgets (menus, toolbars, etc.) e uma área de plotagem derivada da biblioteca wxMathPlot para visualização dos resultados experimentais, construção de curva mestra e visualização de séries de Prony. Conforme indicado na Figura 3.2 a estrutura de dados desta classe é deslocada para uma segunda classe específica (classe DataMainFrameViscoTool). A conexão entre a classe gráfica (classe MainFrameViscoTool) e a classe contendo a estrutura de dados (classe DataMainFrameViscoTool) é feita pelo mecanismo de amizade entre classes (friend classes). Esta técnica, embora pareça um esforço desnecessário à primeira vista, é sugerido por SMART et al. (2006), um dos fundadores da biblioteca wxWidgets, para providenciar um código mais modular pela separação explícita entre o código fonte das entidades gráficas e sua estrutura de dados.

Outras duas classes gráficas criadas foram ShifFactorDialog e CurveFittingDialog que representam caixas de diálogos secundárias para interação com usuário no que diz respeito à construção de curvas mestras pelo PSTT e técnica de

MasterCurve MainFrameViscoTool -mf PronySeries <<CppFriend>> -mf -mc Ctrl -mf CurveFittingDialog +curveFittingDialog DataCurveFittingDialog <<CppFriend>> +m_data DataMainFrameViscoTool <<CppFriend>> +m_data DataShiftFactorDialog PronySeriesPlot <<CppFriend>> -psp ShiftFactorDialog <<CppFriend>> +shiftDialog +m_data ExperimentalDataPlot <<CppFriend>> -plottedCurve ViscoToolApp

ajuste de curva para obtenção da série de Prony, respectivamente. A comunicação das mesmas com a classe gráfica principal (classe MainFrameViscoTool) é feita pelo mecanismo de ponteiros, mecanismo este computacionalmente eficiente, pois evita cópia desnecessária de estrutura de dados. Por sua vez, a classe principal MainFrameViscoTool tem acesso aos dados das classes ShifFactorDialog e CurveFittingDialog somente via chamada de funções de acesso (set and get fuctions), que é uma realização do mecanismo de encapsulamento de dados (PRATA, 2005). Nestas duas classes de diálogo secundárias também foi utilizada a técnica de isolamento da estrutura de dados de suas respectivas entidades gráficas.

Já com relação às classes numéricas do ViscoTool, temos inicialmente a classe Ctrl que é uma classe estática

A segunda classe numérica é a classe MasterCurve que é responsável por armazenar os dados experimentais de Função Fluência �(�) ou Módulo de Relaxação �(�) para as diferentes temperaturas de ensaio. Além disso, esta classe constrói a curva mestra da propriedade viscoelástica em questão a partir da aplicação dos fatores de translação horizontal � (ver item

(PRATA, 2005) que gerencia todos os aspectos numéricos (não gráficos) do ViscoTool. O programa ViscoTool foi desenvolvido de tal forma que a classe numérica Ctrl é o único modo com que a classe gráfica principal MainFrameViscoTool pode passar informações para demais classes numéricas (classes MasterCurve e PronySeries). Esta decisão de projeto foi realizada pela definição de classe estática para Ctrl conforme sugerido no trabalho de HOLANDA et al. (2006).

2.2.3) nos dados experimentais. Ao final, a curva mestra é ordenada ao longo do tempo pela chamada do algoritmo recursivo de ordenação computacionalmente eficiente QuickSort (PRESS, 2007). Logo após sua ordenação, a curva mestra é plotada utilizando a classe ExperimentalDataPlot, que é uma classe derivada da biblioteca wxMathPlot.

A última classe numérica construída trata-se da classe PronySeries que é responsável pelo armazenamento das constantes (graus de liberdade) das séries de Prony indicadas nas equações (2.24) e (2.25). Esta classe contém os métodos que realizam o ajuste de curva da série de Prony pelo método da colocação mais clássico (com e sem pré-suavização) e método da colocação por mínimos quadrados linear,

descritos nos item 2.4 da revisão bibliográfica. A partir da classe PronySeries é realizada também a interconversão entre propriedades viscoelásticas no domínio do tempo mostrada no item 2.5. Neste caso, a classe Ctrl contém os métodos que realizam a interconversão, a partir da consulta dos atributos da classe PronySeries. Para fins de informação, o sistema linear resultante do ajuste de curva e/ou interconversão é resolvido pelo algoritmo de Gauss-Jordan com pivoteamento parcial, que é um algoritmo numericamente estável para resolução de pequenos sistemas lineares (PRESS, 2007).

Ao final, as séries de Prony, ajustada a partir dos dados experimentais e interconvertida, são plotadas pela classe PronySeriesPlot, que, conforme já explicado anteriormente, consiste em uma classe derivada da biblioteca wxMathPlot. No próximo item, são mostradas as funcionalidades do programa ViscoTool do ponto de vista de um usuário do programa computacional.