Programas de Aplicações, Toolkits e Frameworks

Extraído do livro: 
Padrões de Projeto - Soluções Reutilizáveis de Software Orientado a Objetos - Gof



Uma breve descrição relacionada ao uso dos padrões de projeto sobre estas três categorias de sistemas.

1.0 - Programas de Aplicações


Se você esta construindo um programa de aplicação tal como um editor de documentos ou uma planilha, então as prioridades mais altas são reutilizabilidade interna, facilidade de manutenção e de extensão. A reutilizabilidade interna garante que você não projete, nem implemente, mais do que necessita.
Os padrões de projeto que reduzem dependências podem aumentar a reusabilidade interna. O acoplamento mais fraco aumenta a probabilidade de que uma classe de objetos possa cooperar com várias outras. Por exemplo, quando você elimina dependências de operações específicas, pelo isolamento e encapsulamento de cada operação, torna mais fácil a reutilização de uma operação em contextos diferentes. A mesma coisa também pode acontecer quando você remove dependências algorítmicas e de representação.


Os padrões de projeto também tornam uma aplicação mais fácil de ser mantida quando são usados para limitar dependências de plataforma e dar uma estrutura de camadas a um sistema. Eles melhoram a facilidade de extensão ao mostrar como estender hierarquias de classes e explorar a composição de objetos. O acoplamento reduzido também melhora a facilidade de extensão. Estender uma classe isoladamente é mais fácil se a classe não depender de muitas outras classes.

2.0 - Toolkits (bibliotecas de classes)


Frequentemente uma aplicação incorporará classes de uma ou mais bibliotecas de classes pré-definidas, chamadas toolkits. Um toolkit é um conjunto de classes relacionadas e reutilizáveis, projetadas para fornecer um funcionalidade útil e de finalidade geral. Um exemplo de um toolkit é um conjunto de classes de coleções para listas, tabelas associativas, pilhas e outras coisas do tipo. A biblioteca I/O stream de C++ é um outro exemplo. Os toolkits não impõem um projeto específico à sua aplicação; simplesmente fornecem funcionalidades que podem auxiliar sua aplicação a executar o seu trabalho. Eles permitem a você, como implementador, evitar a recodificação de funcionalidades comuns. Os toolkits enfatizam a reutilização de código Eles são o equivalente em orientação a objetos a bibliotecas de sub-rotinas.
o projeto de toolkit e consideravelmente mais difícil que o projeto de aplicações, porque os toolkits devem funcionar em muitas aplicações para serem úteis. Além do mais, o autor do toolkit não esta numa posição que lhe permita saber quais serão essas aplicações. ou suas necessidades especiais. Isso torna ainda mais importante evitar suposições e dependências que possam limitar a flexibilidade do toolkit e consequentemente sua aplicabilidade e sua efetividade.

3.0 - Frameworks (arcabouço de classe)


Um framework é um conjunto de classes cooperantes que constroem um projeto reutilizável para uma determinada categoria de software [Deu89,JF88]. Por exemplo, um framework pode ser orientado a construção de editores gráficos para diferentes domínios, tais como desenho artístico, composição musical e sistemas de CAD para mecânica [VL90,Joh92]. um outro framework pode lhe ajudar a construir compiladores para diferentes linguagens de programação e diferentes processadores [JML92]. Um outro, ainda, pode ajudar a construir aplicações para modelagem financeira [BE93]. Você customiza um framework para uma aplicação específica através da criação de subclasses específicas para a aplicação, derivadas das classes abstratas do framework.
O framework dita a arquitetura da sua aplicação. Ele irá definir a estrutura geral, sua divisão em classes e objetos e em consequência as responsabilidades-chaves das classes de objetos, como estas colaboram, e o fluxo de controle. Um framework predefine esses parâmetros de projetos, de maneira que você, projetista/implementador da aplicação, possa se concentrar nos aspectos específicos da sua aplicação.
Um framework captura as decisões de projeto que são comuns aos seu domínio de aplicação. Assim, frameworks enfatizam reutilização de projetos em relação a reutilização de código, embora um framework, geralmente, inclua subclasses concretas que que você pode utilizar diretamente A reutilização neste nível leva a uma inversão de controle entre a aplicação e o software sobre a qual ela está baseada. Quando você usa um toolkit (ou, pelos mesmos motivos, uma biblioteca convencional de sub-rotinas) escreve o corpo principal da aplicação e chama o código que quer reutilizar. Quando usa um framework, você reutiliza o corpo principal e escreve o código que este chama. Você terá que escrever operações com nomes e convenções de chamada já especificadas; porém isso reduz as decisões de projeto que você tem que tomar.
Como resultado, você pode não somente construir aplicações mais rapidamente, como também construí-las com estruturas similares. Elas são mais fáceis de manter e parecem mais consistentes para seus usuários. Por outro lado, alguma liberdade criativa, uma vez que muitas decisões de projeto já terão sido tomadas por você.

Postagens mais visitadas deste blog

Python - Fatorial