Escolar Documentos
Profissional Documentos
Cultura Documentos
ESTRUTURAÇÃO DE
MÓDULOS
– procedimento externo
– unit do Turbo Pascal
– arquivo fonte em C e C++
– arquivo fonte em Java
– pacote da ADA
– module de Oberon-2
@Roberto S. Bigonha e Mariza Bigonha Estruturação de Sistemas O.O. - Estruturação de Módulos 3
Modularidade
■ MODULARIDADE é a chave para o desenvolvimento
de software com arquitetura flexível.
– Unidade Lingüística
– Baixa Conectividade
– Interface Pequena
– Interface Explícita
– Ocultação de Informação
– Unidade Focal
@Roberto S. Bigonha, Mariza Bigonha Estruturação de Sistemas O.O. 5
– continuidade:
minimizar propagação de alterações
– proteção:
erros propagam para poucos módulos
– inteligibilidade:
baixa conectividade facilita entendimento
baixa conectividade aumenta grau de reusabilidade.
@Roberto S. Bigonha e Mariza A.S.Bigonha Estruturação de Módulos 7
Suponhamos que:
■ cada lâmpada representa um módulo.
■ Apagar ou acender uma lâmpada equivale a
modificar a interface de um módulo.
@Roberto S. Bigonha e Mariza A.S.Bigonha Estruturação de Sistemas O.O. 9
- Equilíbrio em 20 minutos
@Roberto S. Bigonha e Mariza A.S.Bigonha Estruturação de Sistemas O.O. - Módulos 11
q CONCLUSÃO:
Conectividade é muito importante. Ao se
estabelecer uma conectividade entre
módulos está-se diretamente aumentando
o custo de manutenção
@Roberto S. Bigonha e Mariza A.S.Bigonha Estruturação de Sistemas O.O. 12
Princípio da Interface Pequena
■ Se dois módulos não podem evitar de se comunicarem,
então a comunicação entre eles deve ser a mínima possível
■ O controle do volume e tipo de comunicação entre
módulos é fundamental para obter sistemas modulares.
■ Contra-Exemplos:
– Common block do Fortran
Fortran: cada subrotina é um módulo compilado separadamente,
não tem aninhamento. É possível estabelecer áreas de dados
comuns usando commun.
– External do C
– Composibilidade:
Composição só é possível se conexões forem claras.
– Continuidade:
Componentes afetados por mudanças devem ser óbvios.
– Inteligibilidade:
Como entender comportamento de um módulo se ele
é influenciado por outro módulo de alguma forma?
@Roberto S. Bigonha e Mariza A.S.Bigonha Estruturação de Sistemas O.O. Módulos 14
Definição de Interface Explícita
Para ilustrar o valor de interfaces explícitas, considere os módulos A e B
de uma biblioteca BiblioX definidos a seguir, onde o arquivo A.java tem o
código:
package BiblioX;
public class A {
private int pri = 1; protected int pro = 3;
public int op(int z){
X x = new X( ); Y y = new Y( );
pri = x.pac + y.op(z) + pri + pro; return pri;
}
}
class X{
private int pri = 1; int pac = 2; …
}
class Y{ Dentro da biblioteca, a
private int pri = 1; interface é o A, X e Y;
int op(int z) { return z+pri; }; fora da biblioteca, só o
} A
@Roberto S. Bigonha e Mariza A.S.Bigonha Estruturação de Sistemas O.O. Módulos 15
public class A {
public static class B{ private int x; private int y; … }
private static class C { public int z; … }
}
Posso escrever: A.B fora de A?
A.C do lado de for A?
A.C.z dentro de A?
A.B.y fora de A?
A.B.x fora de A?
26
@Roberto S. Bigonha e Mariza A.S.Bigonha Estruturação de Sistemas O.O.
… Recomendações de Boa Prática
public class A {
public static class B{ private int x; private int y; … }
private static class C { public int z; … }
}
Posso escrever: A.B fora de A? SIM
A.C do lado de for A? NÃO
A.C.z dentro de A? SIM
A.B.y fora de A? NÃO
A.B.x fora de A? NÃO
CONCLUSÃO: posso ter uma classe dentro de outra classe. Se a classe interna
é pública, ela é válida fora de A. Se ela for privada, ela só vale dentro de A,
contudo ela pode ter membros públicos, mas a publicidade deles é só do lado de
fora da classe e não do lado de fora da classe que a está envolvendo.
@Roberto S. Bigonha e Mariza A.S.Bigonha Estruturação de Sistemas O.O. 27
ESTRUTURAÇÃO DE
SISTEMAS ORIENTADOS A
OBJETOS
ORGANIZAÇÃO DO
ACERVO DE BIBLIOTECAS
@Roberto S. Bigonha, Mariza Bigonha Estruturação de Sistemas O.O. Organização do acervo de bibliotecas 30
Conceito de Biblioteca
■ Uma biblioteca é um conjunto de módulos
■ A
hierarquia de acervo pode pertencer a
uma camada de software
@Roberto S. Bigonha, Mariza Bigonha Estruturação de Sistemas O.O. - Organização do acervo de bibliotecas 31
@Roberto S. Bigonha, Mariza Bigonha Estruturação de Sistemas O.O. Organização do acervo de bibliotecas 37
FIM
@Roberto S. Bigonha, Mariza A.S.Bigonha Estruturação de Sistemas O.O. Organização do acervo de bibliotecas 38