O que é um framework?

Um framework captura a funcionalidade comum a várias aplicações. As aplicações devem ter algo razoavelmente grande em comum: pertencem a um mesmo domínio de problema. Há várias definições de frameworks.

Por | @oficinadanet Programação
<p>Ol&aacute; pessoal qual &eacute; o problema? Programar &eacute; dif&iacute;cil? Onde est&aacute; a maior dificuldade? "Interface design and functional factoring constitute the key intelectual content of software and is far more difficult to create or re-create than code" (Peter Deutsch).</p> <p>Mas nossos programadores s&atilde;o mortais, solu&ccedil;&atilde;o: Temos que fornecer formas de re-uso que v&atilde;o al&eacute;m de c&oacute;digo: re-uso de an&aacute;lise, design, c&oacute;digo. Framework orientado a objeto</p> <h3 class="interno">O que &eacute; um Framework?</h3> <p>Um framework captura a funcionalidade comum a v&aacute;rias aplica&ccedil;&otilde;es. As aplica&ccedil;&otilde;es devem ter algo razoavelmente grande em comum: pertencem a um mesmo dom&iacute;nio de problema. H&aacute; v&aacute;rias defini&ccedil;&otilde;es de frameworks.</p> <p>A defini&ccedil;&atilde;o que usamos foca quatro caracter&iacute;sticas principais de um framework (Orientado a Objeto):</p> <ul> <li>"Um framework prov&ecirc; uma solu&ccedil;&atilde;o para uma fam&iacute;lia de problemas semelhantes, ...</li> <li>Usando um conjunto de classes e interfaces que mostra como decompor a fam&iacute;lia de problemas, ...</li> <li>E como objetos dessas classes colaboram para cumprir suas responsabilidades, ...</li> <li>O conjunto de classes deve ser flex&iacute;vel e extens&iacute;vel para permitir a constru&ccedil;&atilde;o de v&aacute;rias aplica&ccedil;&otilde;es com pouco esfor&ccedil;o, especificando apenas as particularidades de cada aplica&ccedil;&atilde;o"</li> </ul> <p>Observe que um framework &eacute; uma aplica&ccedil;&atilde;o quase completa, mas com peda&ccedil;os faltando. Ao receber um framework, seu trabalho consiste em prover os peda&ccedil;os que s&atilde;o espec&iacute;ficos para sua aplica&ccedil;&atilde;o. As t&eacute;cnicas b&aacute;sicas s&atilde;o Template Method e Composi&ccedil;&atilde;o</p> <h3 class="interno">Diferen&ccedil;as entre um Framework e uma Biblioteca de Classes OO</h3> <p>Numa biblioteca de classes, cada classe &eacute; &uacute;nica e independente das outras. Num framework, as depend&ecirc;ncias/colabora&ccedil;&otilde;es est&atilde;o embutidas (wired-in interconnections). Com biblioteca, as aplica&ccedil;&otilde;es criam as colabora&ccedil;&otilde;es</p> <p>V&ecirc;-se portanto que um framework imp&otilde;e um modelo de colabora&ccedil;&atilde;o&nbsp;&nbsp;(o resultado da an&aacute;lise e design) ao qual voc&ecirc; deve se adaptar. J&aacute; que a comunica&ccedil;&atilde;o entre objetos j&aacute; est&aacute; definida, o projetista de aplica&ccedil;&otilde;es n&atilde;o precisa saber quando chamar cada m&eacute;todo: &eacute; o framework que faz isso. N&atilde;o se pode embutir conhecimento do dom&iacute;nio (an&aacute;lise + design) numa biblioteca de classes. O framework &eacute; usado de acordo com o Hollywood Principle ("Don't call us, we'll call you"). &Eacute; o framework que chama o c&oacute;digo da aplica&ccedil;&atilde;o (que trata das particularidades dessa aplica&ccedil;&atilde;o). Framework = Upside-down library</p> <p><strong>Exemplo do Hollywood Principle</strong></p> <ul> <li>Modelo de eventos em Java/AWT</li> <li>AWT &eacute; um framework</li> </ul> <p><br /> No c&oacute;digo abaixo, mouseClicked() e mousePressed() s&atilde;o chamados pelo framework (AWT)</p> <pre><code>public class MeuMouseListener implements MouseListener { public void mouseClicked(MouseEvent event) { ... } public void mousePressed(MouseEvent event) { ... } ... } ...<br /> MeuMouseListener mouseListener = new MeuMouseListener();<br /> JButton meuBotao = new JButton("clique aqui");<br /> // O seguinte metodo estabelece a interacao entre o objeto // meuBotao e o objeto mouseListener<br /> meuBotao.addMouseListener(mouseListener);</code></pre> <p>A diferen&ccedil;a entre um framework e uma biblioteca de classes n&atilde;o &eacute; bin&aacute;ria</p> <h3 class="interno">Diferen&ccedil;as entre Frameworks e Design Patterns</h3> <p>Aparentemente, os dois consistem de classes, interfaces e colabora&ccedil;&otilde;es prontas.</p> <p><strong>As diferen&ccedil;as s&atilde;o:</strong></p> <ul> <li>Design patterns s&atilde;o mais abstratos do que frameworks</li> <li>Um framework inclui c&oacute;digo, um design pattern n&atilde;o (s&oacute; um exemplo do uso de um pattern)</li> <li>Devido &agrave; presen&ccedil;a de c&oacute;digo, um framework pode ser estudado a n&iacute;vel de c&oacute;digo, executado, e reusado diretamente</li> </ul> <p><strong>Design patterns s&atilde;o elementos arquiteturais menores do que frameworks</strong></p> <p><strong></strong>Um framework t&iacute;pico cont&eacute;m v&aacute;rios design patterns mas o contr&aacute;rio nunca ocorre. Exemplo: Design patterns s&atilde;o frequentemente usados para documentar frameworks. Design patterns s&atilde;o menos especializados do que frameworks. Frameworks sempre t&ecirc;m um dom&iacute;nio de aplica&ccedil;&atilde;o particular enquanto design patterns n&atilde;o ditam uma arquitetura de aplica&ccedil;&atilde;o particular</p> <h3 class="interno">Caracter&iacute;sticas B&aacute;sicas de Frameworks</h3> <p>Um framework deve ser reus&aacute;vel. &Eacute; o prop&oacute;sito final! Para ser reus&aacute;vel, deve primeiro ser us&aacute;vel. Bem documentado.F&aacute;cil de usar. Deve ser extens&iacute;vel. O framework cont&eacute;m funcionalidade abstrata (sem implementa&ccedil;&atilde;o) que deve ser completada. Deve ser de uso seguro. O desenvolvedor de aplica&ccedil;&otilde;es n&atilde;o pode destruir o framework. Deve ser eficiente. Devido a seu uso em muitas situa&ccedil;&otilde;es, algumas das quais poder&atilde;o necessitar de efici&ecirc;ncia.Deve ser completo. Para endere&ccedil;ar o dom&iacute;nio do problema pretendido.</p>

Mais sobre: framework programacao oquee
Share Tweet
Recomendado
Comentários
Carregar comentários
Destaquesver tudo
  • ASSINE NOSSA NEWSLETTER

    As melhores publicações no
    seu e-mail

  • Preencha para confirmar