Departamento de Ciência da Computação Universidade de Brasília Computação Básica 2004.1 Professor Jorge H. C. Fernandes Textos de Introdução à Programação em Java O Conceito de Módulos Obedecendo à noção de programação modular, qualquer programa é formado por um conjunto de módulos de vários tipos. Considerando que estaremos programando em Java, neste momento os principais tipos de módulos com os quais trabalharemos são chamados de Classe. Representação visual dos módulos de um programa A Figura 1 apresenta um diagrama típico de representação de um programa Java, que no exemplo trata de imposto de renda. O programa exemplo seria formado por cinco classes, chamadas DeclaracaoCompleta, IdentificacaoContribuinte, Dependentes, Rendimentostributaveis e BensEDireitos. A seta que sai da classe DeclaracaoCompleta para as outras indica relação de dependência de um módulo com relação a outro. No caso uma declaração completa de IRPF depende da identificação do contribuinte, dos seus dependentes, rendimentos tributáveis bens e direitos, etc. Figura 1 Um Programa Java formado por 5 classes. Esta relação entre os módulos que fazem parte de um programa e a aparência externa do mesmo é um dos aspectos interessantes que facilitam o desenvolvimento de programas. A estruutra modular da Figura 1 foi concebida de forma similar à interface do programa de imposto de renda produzido pela SRF do Ministério da Fazenda, apresentada na Figura 2.
Outro exemplo concreto de representação de um programa através de um conjunto de módulos seria um programa que simula um veículo, composto por módulos: motor, carroceria, suspensão. Esta relação de dependência entre módulos pode continuar até que seja obtido o menor módulo útil. Deste modo o módulo motor poderia ser composto pelos módulos: pistão, virabrequim, comando de válvulas, bielas, etc. O módulo suspensão pode ser composto por: Pneu, Roda, Tambor, Amortecedor, etc. A Figura abaixo representa visualmente a estrutura de um programa que simula este veículo, composto por vários módulos e suas dependências.
Figura que representa um modelo de um simulador de veículos. Perceba ainda que há no canto superior esquerdo da figura um elemento adicional, que representa um documento. Este documento também é um módulo que compõe o programa simulador de veículo. Do mesmo modo que um manual de usuário de veículo não tem aplicação direta no funcionamento de um veículo, módulos de programas do tipo documento não são usados para comandar a execução de nenhuma atividade computacional automaticamente. Documentos são compreendidos apenas por pessoas, e auxiliam as pessoas no desenvolvimento e uso do software. A aparência real de um veículo é similar à apresentada no diagrama da Figura 3. Compare a foto do veículo com o modelo computacional. Existem similaridades mas o modelo é sempre uma simplificação da realidade, portanto os detalhes desnecessários para a simulação são desconsiderados do modelo. Outro exemplo que demonstra a existência de módulos em um programa é o do simulador do computador visível, que é composto por 19 módulos de classes + 1 módulo de documentação, como pode ser visto na Figura 4. Figura 4 Diagrama de Classes do Computador Visível vc0. Uso, Reuso e Reusabilidade de Módulos A grande vantagem em desenvolver um artefato composto através de módulos é que isto permite grande possibilidade de fazer múltiplos usos de cada módulo, em diferentes situações. Este múltiplo uso é chamado de reuso. Módulos que tem alta capacidade de reuso são chamados módulos reusáveis.
Por exemplo, a separação de partes de um veículo em motor, suspensão, etc., e a separação de uma suspensão em pneus e amortecedores permite que estes módulos possam ser usados em outros artefatos. É possível, por exemplo, retirar um pneu de um veículo e usar em outro. No caso do programa de imposto de renda pessoa física, o módulo de identificação de contribuinte poderia ser usado para construir um outro programa da SRF, usado, por exemplo, para pagamento mensal de tributos através do carnê leão. Perceba que os módulos que tem mais reusabilidade são em geral aqueles dos quais os outros módulos mais dependem. Por exemplo, o módulo IO, no canto superior direito da Figura 4. é um módulo do qual dependem 9 outros módulos. Como ele não depende de nenhum outro isto é uma indicação que este módulo tem alto grau de reusabilidade. Interfaces entre módulos Para que um módulo pneu seja usado em dois veículos diferentes é necessário que as dimensões da roda na qual ele será acoplado sejam compatíveis. Por outro lado, para que uma roda seja usada em um veículo é necessário que haja compatibilidade entre os furos da roda e do tambor na suspensão. As dimens ões do pneu também precisam ser compatíveis com o restante da suspensão. A especificação 185/65R14, por exemplo, define um tamanho padrão de pneu que pode ser usado apenas em rodas que sejam compatíveis, sendo indicado para uso em automóveis Santana ano 2000. <Figura de Pneu, com Roda, acoplado ao tambor> A Figura abaixo mostra o programa Eco e seus dois módulos, apresentados no programa
Ao se pressionar o menu do mouse sobre o módulo IO a interface de um módulo de software é apresentada, e consiste basicamente na listagem dos vários métodos aos quais o módulo responde. Cada um dos métodos da interface de um módulo oferece um servi ço aos seus clientes. Destaca-se no módulo IO um conjunto de 13 métodos, cujas assinaturas são void println(string), void println(intnumber), void println(shortnumber), etc. A dependência entre o módulo Eco relativa ao módulo IO indica que o módulo Eco usa algum tipo de servi ço prestado por IO. Neste caso, o módulo Eco usa um ou mais métodos de saída (print()) e de entrada de dados (read()) oferecidos por IO.