O que é 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.

O que é Framework?

Olá pessoal qual é o problema? Programar é difícil? Onde está 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).

Mas nossos programadores são mortais, solução: Temos que fornecer formas de re-uso que vão além de código: re-uso de análise, design, código. Framework orientado a objeto

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.

A definição que usamos foca quatro características principais de um framework (Orientado a Objeto):

  • "Um framework provê uma solução para uma família de problemas semelhantes, ...
  • Usando um conjunto de classes e interfaces que mostra como decompor a família de problemas, ...
  • E como objetos dessas classes colaboram para cumprir suas responsabilidades, ...
  • O conjunto de classes deve ser flexível e extensível para permitir a construção de várias aplicações com pouco esforço, especificando apenas as particularidades de cada aplicação"

Observe que um framework é uma aplicação quase completa, mas com pedaços faltando. Ao receber um framework, seu trabalho consiste em prover os pedaços que são específicos para sua aplicação. As técnicas básicas são Template Method e Composição

Diferenças entre um Framework e uma Biblioteca de Classes OO

Numa biblioteca de classes, cada classe é única e independente das outras. Num framework, as dependências/colaborações estão embutidas (wired-in interconnections). Com biblioteca, as aplicações criam as colaborações

Vê-se portanto que um framework impõe um modelo de colaboração (o resultado da análise e design) ao qual você deve se adaptar. Já que a comunicação entre objetos já está definida, o projetista de aplicações não precisa saber quando chamar cada método: é o framework que faz isso. Não se pode embutir conhecimento do domínio (análise + design) numa biblioteca de classes. O framework é usado de acordo com o Hollywood Principle ("Don't call us, we'll call you"). É o framework que chama o código da aplicação (que trata das particularidades dessa aplicação). Framework = Upside-down library

Exemplo do Hollywood Principle

  • Modelo de eventos em Java/AWT
  • AWT é um framework


No código abaixo, mouseClicked() e mousePressed() são chamados pelo framework (AWT)

public class MeuMouseListener implements MouseListener {
    public void mouseClicked(MouseEvent event) {
        ...
    }
    public void mousePressed(MouseEvent event) {
        ...
    }
    ...
}
...
MeuMouseListener mouseListener = new MeuMouseListener();
JButton meuBotao = new JButton("clique aqui");
// O seguinte metodo estabelece a interacao entre o objeto // meuBotao e o objeto mouseListener
meuBotao.addMouseListener(mouseListener);

A diferença entre um framework e uma biblioteca de classes não é binária

Diferenças entre Frameworks e Design Patterns

Aparentemente, os dois consistem de classes, interfaces e colaborações prontas.

As diferenças são:

  • Design patterns são mais abstratos do que frameworks
  • Um framework inclui código, um design pattern não (só um exemplo do uso de um pattern)
  • Devido à presença de código, um framework pode ser estudado a nível de código, executado, e reusado diretamente

Design patterns são elementos arquiteturais menores do que frameworks

Um framework típico contém vários design patterns mas o contrário nunca ocorre. Exemplo: Design patterns são frequentemente usados para documentar frameworks. Design patterns são menos especializados do que frameworks. Frameworks sempre têm um domínio de aplicação particular enquanto design patterns não ditam uma arquitetura de aplicação particular

Características Básicas de Frameworks

Um framework deve ser reusável. É o propósito final! Para ser reusável, deve primeiro ser usável. Bem documentado.Fácil de usar. Deve ser extensível. O framework contém funcionalidade abstrata (sem implementação) que deve ser completada. Deve ser de uso seguro. O desenvolvedor de aplicações não pode destruir o framework. Deve ser eficiente. Devido a seu uso em muitas situações, algumas das quais poderão necessitar de eficiência.Deve ser completo. Para endereçar o domínio do problema pretendido.

Vídeo em destaque: Galaxy A52 REVIEW

Analisamos o Galaxy A52 versão de 4G, um smartphone muito bonito, com especificações excelentes que tornam ele um dos, senão o melhor custo benefício até R$ 2200.

Conteúdo relacionado

Samsung Galaxy A52 Review: Melhor custo benefício até R$ 2200?
Smartphones

Samsung Galaxy A52 Review: Melhor custo benefício até R$ 2200?

Analisamos o Galaxy A52 versão de 4G, um smartphone muito bonito, com especificações excelentes que tornam ele um dos, senão o melhor custo benefício até R$ 2200.

Codeigniter: Produtividade na criação de aplicações web em php
Programação

Codeigniter: Produtividade na criação de aplicações web em php

O livro traz, por meio de dois projetos completos, a aplicação de recursos, bibliotecas, boas práticas, dicas e um pouco de teoria sobre o desenvolvimento de sites e sistemas, utilizando o framework CodeIgniter.

Integrando o Composer com o CodeIgniter
Programação

Integrando o Composer com o CodeIgniter

Nesse tutorial vou mostrar como integrar o Composer com a framework PHP CodeIgniter. Sozinhos eles já agilizam bastante o trabalho, juntos podem fazer muito mais.

Rails 3.2.13: Libera atualização para correção de Falhas em DoS e XSS
Programação

Rails 3.2.13: Libera atualização para correção de Falhas em DoS e XSS

Os desenvolvedores do Rails lançaram atualizações para as versões 3.2.13, 3.1.12 e 2.3.18, para corrigir quatro falhas de segurança em seu framework de aplicação web. Eles ainda recomendam que os usuários atualizem o mais rápido possível, para as últimas versões do Rails.

Sistema de Login em PHP com Codeigniter
Programação

Sistema de Login em PHP com Codeigniter

Olá pessoal, recentemente tive que fazer um sistema de login em codeigniter e resolvi disponiblizar aqui. É um sistema bem simples que utiliza: Banco de dados MySQL; Framework CodeIgniter; Geralmente utilizo a IDE Netbeans para programar em PHP;

Framework CodeIgniter: do Machado à Motosserra
Programação

Framework CodeIgniter: do Machado à Motosserra

“As pessoas não sabem o que querem até você mostrar a elas.” (Steve Jobs). Para você, leitor, entender melhor o objetivo deste artigo, apresento-lhe este exemplo