Paradigmas de Linguagens de Programação - Modularização, componentização e reutilização de código
adrianots
2,907 views
22 slides
Oct 24, 2011
Slide 1 of 22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
About This Presentation
No description available for this slideshow.
Size: 503.66 KB
Language: pt
Added: Oct 24, 2011
Slides: 22 pages
Slide Content
Prof. Adriano Teixeira de Souza
Modularização, componentização e
reutilização de código
Sistemas são feitos para resolver problemas do
mundo real.
Estudos mostram que a construção de sistemas
grandes a partir de pequenas partes (módulos)
permite um desenvolvimento mais rápido e com
menor índice de erros – “DIVIDIR PARA
CONQUISTAR”.
Em Java há 3 tipos de módulos:
◦métodos;
◦classes;
◦pacotes.
Prof. Adriano Teixeira de Souza
Módulos são integrados com o objetivo de atender
a um requisito
“Dividir e conquistar”
Prof. Adriano Teixeira de Souza
A modularização consiste em decompor um
programa em uma série de subprogramas individuais.
Trata-se de um método utilizado para facilitar a
construção de grandes programas, através de sua
divisão em pequenas etapas (dividir para conquistar),
que são os módulos ou subprogramas;
A primeira delas, por onde começa a execução do
trabalho, recebe o nome de programa principal, e as
outras são os subprogramas propriamente ditos, que
são executados sempre que ocorre uma chamada dos
mesmos, o que é feito através da especificação de
seus nomes.
Prof. Adriano Teixeira de Souza
Planejar mais fácil
Manutenção
Testes e depuração
Ocultação de Informações
Módulos devem ser especificados e projetados de
tal modo que informações desnecessárias sejam
inacessíveis
Apenas o necessário é fornecido para a
realização de funções
Abstração + ocultação (erros não são
propagados nas modificações)
Prof. Adriano Teixeira de Souza
COESÃO: robustez funcional de um módulo (módulo realiza
uma única tarefa)
ACOPLAMENTO : indicação da interdependência entre módulos
Prof. Adriano Teixeira de Souza
“Software reuse is the use of existing
software knowledge or artifacts to build new
software artifacts” [Frakes, 1995]
Vantagens (em POTENCIAL)
◦MAIS Qualidade
◦MENOS Tempo de desenvolvimento
◦MENORES custos TOTAIS no ciclo de vida...
implementação, testes... integração,
documentação, manutenção... evolução...
Prof. Adriano Teixeira de Souza
Código compilado [fonte]
Casos de testes
Modelos e projetos: frameworks e padrões
Interface de usuário
Planos, estratégias e regras arquiteturais
...
Prof. Adriano Teixeira de Souza
Aspectos de um componente
◦Descrever ou realizar uma função específica
◦Estar em conformidade e prover um conjunto
de interfaces definidas
◦Ter uma documentação adequada
◦Estar inserido no contexto de um modelo que
oriente a composição deste componente com
outros
Categorias [Williams, 2001]
◦Componentes GUI
◦Componentes de Serviços
◦Componentes do Domínio [Negócio]
Prof. Adriano Teixeira de Souza
Reuso : A habilidade de reusar componentes
existentes para criar sistemas mais
complexos.
Evolução : Um sistema altamente
componentizado é de mais fácil manutenção.
Em um sistema bem projetado, as alterações
serão localizadas, e essas poderão ser feitas
no sistema com pouco ou nenhum efeito nos
componentes restantes.
Prof. Adriano Teixeira de Souza
Programas Java são concebidos através da união de
classes e métodos criados pelo programador,
juntamente de classes e métodos disponibilizados
em bibliotecas de classes Java, a API Java – Java
Application Programming Interface –, e outras
bibliotecas de classes criadas por outros
programadores.
As bibliotecas são utilizadas por meio do uso da
instrução import.
◦Ex: import java.util.*;
Prof. Adriano Teixeira de Souza
A API Java contém classes que permitem:
◦a realização de cálculos matemáticos simples;
◦manipulação de strings;
◦de caracteres;
◦operações de entrada/saída;
◦de bancos de dados;
◦de rede;
◦processamento de arquivos;
◦tratamento de erros;
◦etc.
Prof. Adriano Teixeira de Souza
A API faz parte das JDK.
É importante, antes de criar algo novo, que se
verifique se a API já disponibiliza as operações
(métodos) em suas classes para não se “reinventar
a roda”.
É possível obter informações a respeito da API Java
por meio do uso de Javadocs.
A reutilização de código é uma vantagem da
Orientação a Objetos e para que isso possa ser
feito, é importante que os métodos tenham tarefas
muito bem definidas.
Prof. Adriano Teixeira de Souza
Classes predefinidas agrupadas em
categorias de classes relacionadas –
pacotes
Uso de import:
◦import java.util.Scanner;
◦import java.util.*;
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
Pacote Descrição
java.applet O Java Applet Package contém uma classe e várias interfaces exigidas
para criar applets Java — programas que executam nos navegadores da
Web.
java.awt O Java Abstract Window Toolkit Package contém as classes e interfaces
exigidas para criar e manipular GUIs no Java 1.0 e 1.1. Nas versões atuais
do Java, os componentes GUI Swing dos pacotes javax.swing são
freqüentemente utilizados em seu lugar.
java.awt.event O Java Abstract Window Toolkit Event Package contém classes e
interfaces que permitem o tratamento de eventos para componentes GUI
tanto nos pacotes java.awt como javax.swing.
java.io O Java Input/Output Package contém classes e interfaces que permitem
aos programas gerar entrada e saída de dados.
java.lang O Java Language Package contém classes e interfaces (discutidas por
todo esse texto) que são exigidas por muitos programas Java. Esse
pacote é importado pelo compilador para todos os programas, assim o
programador não precisa fazer isso.
Prof. Adriano Teixeira de Souza
Pacote Descrição
java.net O Java Networking Package contém classes e interfaces que permitem aos
programas comunicar-se via redes de computadores, como a Internet.
java.text O Java Text Package contém classes e interfaces que permitem aos
programas manipular números, datas, caracteres e strings. O pacote
fornece recursos de internacionalização que permitem a um programa
ser personalizado para um local específico (por exemplo, um programa
pode exibir strings em diferentes idiomas com base no país do usuário).
java.util O Java Utilities Package contém classes utilitárias e interfaces que
permitem ações como manipulações de data e hora, processamento de
números aleatórios (classe Random), armazenamento e processamento
de grandes volumes de dados e a divisão de strings em parte menores
chamadas tokens (classe StringTokenizer).
javax.swing O Java Swing GUI Components Package contém classes e interfaces para
componentes GUI Swing do Java que fornecem suporte para GUIs
portáveis.
javax.swing.ev
ent
O Java Swing Event Package contém classes e interfaces que permitem o
tratamento de eventos (por exemplo, responder a cliques de botão) para
componentes GUI no pacote javax.swing.
Refinamento
◦Processo de elaboração (alto nível -> mais detalhes)