PDF de programación - Capítulo 8. Modularidad

Imágen de pdf Capítulo 8. Modularidad

Capítulo 8. Modularidadgráfica de visualizaciones

Publicado el 12 de Abril del 2018
394 visualizaciones desde el 12 de Abril del 2018
229,0 KB
24 paginas
Creado hace 12a (16/01/2012)
Capítulo8. Modularidad.
LenguajesdeProgramación
CarlosUreñaAlmagro
Curso2011-12

Contents
1 Introducción
.
.
.
.
1.1 Compilaciónseparada .
.
.
.
1.2 Ocultamientodeinformación .
.
.
.
.
.
.
1.3 Restriccionesdeacceso .
.
.
.
1.4 Tiposabstractosdedatos .
.
.
.
.
.
2 ModularidadenAda
.
.
.
.
.
2.1
LospackagesdeAda.
.
.
.
2.2 Packagesycompilaciónseparada .
2.3 RestriccionesdeaccesoenAda .
.
.
ImplementacióndeTADsenAda .
2.4
3 ModularidadenC/C++
.
.
.
.
3.1 Compilaciónseparada .
.
3.2
ImplementacióndeTADsenC .
.
.
.
.
.
.
.
3.3 NamespacesenC++ .
4 ModularidadenJava
.
.
4.1 CompilaciónseparadaenJava .

.
.

.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

2
3
3
4
4
5
5
8
10
13
15
15
17
19
21
21

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
1

CONTENTS
22
.
.
.

.

.

CONTENTS
4.2 PackagesyrestriccionesdeaccesodeJava .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

2

1

INTRODUCCIÓN

1 Introducción
Programasgrandes
Imaginemosunprogramagrandequepuedeestarcompuestobásicamentede:
• declaracionesdetipos
• declaracionesdevariablesglobales
• declaracionesdesubprogramas
Acadaunodeestoslollamaremoselementosdelprograma
Enprincipio,cualquiermodificaciónenunelementopuedeafectaracualquierotrodeellos,yaquepuede
haberdependenciasarbitrariasentreellos(aestoselellamacohesión)
• Elprogramaesdifícildeescribiryleer
• Elprogramaesmuydificildemodificaromantener
• Elprogramaespocofiable.
Elobjetivoanteriorsepuedeconseguirdiviendounprogramaenpartes,cadaunadeellassiendoungrupo
deelementos,deformaque:
• Cadaelementodeungrupoestafuertementerelaccionadoconotroselementosdedichogrupo
• Lasdependenciasentreelementosdegruposdistintossonlasmenoresposibles,yencualquiercaso
estánbiendocumentadas.
• Cadapartepuedeserreutilizableenmásdeunprograma
Latécnicaanteriorsellamamodularidad,yesesencialparalaconstruccióndeprogramasgrandes.
• Elparticionamientoadecuadoesunatareadediseñoquepuedeserllevadaalaprácticausandocasi
cualquierlenguajedeprogramación
• Lamayoríadeloslenguajescontemplanmecanismosque,bienayudanarealizarelparticionamiento,
obiensoportanexplicitamentelamodularidad.
Acadaunadelaspartesdeunprogramaselellamará,engeneral,módulo.
Enestecapítuloveremosvariosdedichosmecanismos:
• namespacesdeC++yC#
3

INTRODUCCIÓN

1.1 Compilaciónseparada
• packagesdeAda
• packagesdeJava
Además,veremoslosmecanismosparalacompilaciónseparada,ocultamientodeinformaciónyrestricciones
deacceso,mecanismosrelacionadosendistintogradoconlosanteriores,yquesirvenalmismopropósito.
1.1 Compilaciónseparada
Lacompilaciónseparadaeslaposibilidaddeescribirunprogramaenmásdeunarchivofuente,deformaque
cadaunodeestosarchivospuedansertraducidos(compilado)independientementeendistintasejecuciones
deltraductor.
• Cadaunodelosarchivosfuentesedenominaunaunidaddecompilación
• Cadamódulodeunprogramasedebesituarenunaovariasunidadesdecompilación.
Elmecanismodecompilaciónseparada:
• Hacemáseficienteentiempoymemorialatraducción,yaquedespuésdeuncambiosolotieneque
hacerseparalasunidadesdecompilaciónafetectadas,enlugardeparatodoelprogramafuente.
• Sepermiteeltrabajosimultáneodevariosprogramadoresendistintaspartesdeunprograma
Enlamayoríadeloslenguajes,losmecanismosdemodularidadycompilaciónseparadaestánrelaccionados.
UnaexcepciónaestoesC/C++.
1.2 Ocultamientodeinformación
Una forma de prevenir que se establezcan dependencias innecesarias entre partes de programas es usar
mecanismos que permitan o ayuden al programador de un módulo impedir el establecimiento de dichas
dependenciasdesdeotrosmódulos.
Elocultamientodeinformación(informationhidding)eslacapacidaddealgunoslenguajesdeimpedirque
desdeunmódulo Aseuseunadeclaraciónincluidasenotromódulo B. Estosehacelimitandoelámbitode
dichadeclaraciones(sedicequeladeclaraciónnoesvisibledesde A).
Ventajas
• Elocultamientodeinformaciónayudaareducirladependenciasentremódulos,yaque,sisesabeque
unadeclaraciónnoesvisibleenotrosmódulos,podemosasumirquecualquiercambioquehagamos
enlamismanoafectaráaesosotrosmódulos,sinoúnicamenteaaquelmódulodondeaparece.
• Este mecanismo permite al diseñador de un módulo seleccionar que declaraciones del mismo serán
visibles desde otros módulos, por tanto, se hace explícito en el programa las dependencias que se
puedenestablecer

1

4

1

INTRODUCCIÓN

1.3 Restriccionesdeacceso
Implementaciónendistintoslenguajes
• LoslenguajesAdayJavatienenmecanismosexplícitosdeocultamientodeinformación, asociadosa
losmecanismosdemodularidad(packages)
• En el lenguaje C/C++, el ocultamiento de información solo se puede lograr mediante el uso de
compilaciónseparada.
1.3 Restriccionesdeacceso
Enalgunoscasos,esconvenientequeunadeclaracióndeuntipoincluidaenunmóduloseavisibledesde
otros, de forma que se puedan declarar variables de ese tipo, pero sin que se pueda acceder a la repre-
sentaciónasociadaaltipo. Estopermite:
• usarlasvariablesdeltiposintenerquepreocuparsedelarepresentación,locualmejoralalegibilidad
ylafiabilidad.
• modificarlarepresentacióndeltiposinmodificarlosprogramasqueusanvariablesdedichotipo,con
locualelmantenimientosehacemásfácil.
Sedicequeestostipossontiposprivadosdelmódulo.
1.4 Tiposabstractosdedatos
Lasrestriccionesdeaccesopermitenlaimplementacióndetiposabstractosdedatos,quesontiposdedatos
(conjuntos) sobre los que existen un conjunto de funciones cumpliendo determinadas propiedades. Estas
propiedadesdefinenaltipo(noelconjuntodevalores)
Los tipos abstractos de datos se implementan mediante tipos o clases definidas por el programador que
puedenserusadasdeformaindependientedesurepresentaciónatravésdeunconjuntodesubprogramas.
EjemploSea Aunconjuntocualquiera,talqueexisteotroconjuntonovacío B,unaseriedefunciones(a
lasquellamamos vacia, inserta, extrae, tope),yunelemento nueva ∈ Atalesque ∀p ∈ Ay ∀x ∈ B,se
cumpleque:

vacia ∈ A → { f alse , true }
vacia(nueva) = true

push ∈ A × B → A

vacia(push(p, x)) = f alse

extrae ∈ A − {vacia} → A

extrae(push(p, x)) = p

tope ∈ A − {vacia} → B

tope(push(p, x)) = x

5

2 MODULARIDADENADA
Si Ay Bsondosconjuntosdotadosdelasfuncionesdescritasanteriormente,entoncesloselementosde A
sonlaspilasLIFOconelementosdetipo B. Estosepuedeafirmarindependientementedequerepresentación
seusepara A,esdecir,nospodemosabstraerdelarepresentación.
UnTADssepuedeimplementarencualquierlenguajemedianteuntipodefinidoporelusuario. Elcódigo
queusaeltipononecesitadependerdelarepresentacióndeltipo,aunqueodríahacerlo.
Lasrestriccionesdeaccesoyelocultamientodeinformaciónpermitengarantizarqueelcódigoqueusael
tipovaasersiempreindependientedelarepresentación,yaquenovaaaccedernuncaalamisma.
Mecanismospararestriccionesdeaccesoenvarioslenguajes
• EnCnoexistenmecanismosespecíficos
• EnC++,existenmecanismosligadosalmecanismodeclase
• EnAda,existenmecanismosasociadosalospackage
• EnJava,existenmecanismosasociadosalmecanismodeclaseyalospackages
2 ModularidadenAda
Elprincipalmecanismoparamodularidad,compilaciónseparadayocultamientodeinformaciónenellenguaje
Adaeselpackage.
EnestasecciónveremoscomosedefinenyusanlospackagesdeAda.
2.1 LospackagesdeAda
Un package en Ada es un conjunto de declaraciones a las que se da un nombre, de forma que dichas
declaracionessepuedenreusarenvariospuntosdeunprograma.
LospackagesdeAdasonlaherramientaadecuadaparalaimplementacióndelamodularidad,puespermiten
agrupardeclaraciones,yformarprogramasuniendovariospackages.
DeclaracionesdepackagesenAda
Unadeclaracióndepackageesuntipodedeclaración,conlasiguienteforma:
packageidentificador is
declaraciones
end[identificador ];

6

;

2 MODULARIDADENADA
2.1 LospackagesdeAda
• Cuandoseelabora,seproduceunaasociaciónentreelnombreyelconjuntodedeclaraciones,yse
elaboranlasdeclaraciones,
• Cadadeclaracióninternaalpackagetienecomoámbitoelinteriordelpackagemáselámbitodela
declaracióndepackage(enestesegundocasohayqueanteponerelnombredelpackagecomoprefijo).
EjemplodedeclaraciónyusodeunpackageAda:
procedure Proc01 is
package Ejemplo is
constant Float
:= 3.1415927 ;
:
pi
: Float
:= pi
x
;
type MiArray is array(1..10) of Float
;
end
:= 2.0 ;
y : Float
;
a : Ejemplo.MiArray := (1..10 => 5.0 )
begin a(3)
;
:= y + Ejemplo.x
Ejemplo.x := Ejemplo.pi
;
end
Lacláusula useenAda
procedure Proc02 is
package Ejemplo is
pi
:
constant Float
:= 3.1415927 ;
x
;
:= pi
: Float
type MiArray is array(1..10) of Float
;
end
y : Float
:= 2.0 ;
use Ejemplo ;
a : MiArray := (1..10 => 5.0 )
begin a(3)
:= y + x
x := pi
;
;
end
ColisionesdenombresenpackagesAda
Laapariciónenunpuntodelprogramadeunmismoidentificadordedospackagesdistintoseserróneasino
seanteponeelnombredelpackage,yaqueocurreunaambigüedadqueelcompiladornopuederesolver.

;

;

;

;

7

2 MODULARIDADENADA

; end ;
; end ;

2.1 LospackagesdeAda
procedure Proc03 is
: Float
package P1 is x
:
package P2 is x
Integer
use P1 ; use P2 ;
beginx := 0 ;
−− error
P1.x := 3.0 ; −− bien
P2.x := 5 ;
−− bien
;
end
Cabeceraycuerpodelospackages
Enlaformavista,unpackagenopuedeincluirunadeclaracióndeunsubprograma:
procedure Proc04 is
package Ejemplo is
procedure Nada is −− Error
beginnull
end ;
;
end
beginnull
;
;
end
Cabeceraycuerpodelospackages. Sintaxis.
Paralograrloanteriorhayquedividirelpackageendospartes,conlasiguientesintaxis:

;

packageidentificador is
declaraciones-1
end[identificador ];
......packagebodyidentificador is
declaraciones-2
end[identificador ];

Cabeceraycuerpodelospackages. Ambitos.
• Laprimeraparteesllama
  • Links de descarga
http://lwp-l.com/pdf10373

Comentarios de: Capítulo 8. Modularidad (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad