PDF de programación - Programación II - Programación Modular

Imágen de pdf Programación II - Programación Modular

Programación II - Programación Modulargráfica de visualizaciones

Publicado el 1 de Marzo del 2019
886 visualizaciones desde el 1 de Marzo del 2019
204,6 KB
53 paginas
Creado hace 14a (23/04/2010)
Programación II

Programación Modular

g

Ángel Lucas González Martínez

Jaime Ramírez
Guillermo Román
Gu e
o o á

DLSIIS. Facultad de Informática
Universidad Politécnica de Madrid

1

MÓDULOS

2

Módulos
Módulos

i

it

• Mecanismo que permite:

M
– Separar componentes de un programa
– Dividir el código de forma estructurada
Dividir el código de forma estructurada
– Encapsulación y ocultación de datos y código

• Un módulo puede encapsular:
• Un módulo puede encapsular:

– Constantes
– Variables (no recomendable en general)
Variables (no recomendable en general)
– Tipos (atributos en POO) y servicios asociados a

esos tipos (TADS)

• Permiten separar definición (interfaz) de

implementación

3

Módulos
Módulos

Cada mód lo en ja a p ede estar definido por
• Cada módulo en java puede estar definido por:
– Una clase (fichero .java)
– Un paquete que puede contener varias clases
Un paquete que puede contener varias clases
(carpeta)

• Un módulo ofrece una interfaz (parte pública) y una

i
i d )
implementación (parte privada)

ió (

t

l

t

• El usuario del módulo “compilado” no ve la

implementación
implementación

• En java la definición de los servicios ofrecidos y su
implementación están en el mismo .java, a no ser
que:
– Se utilice una interfaz (interface)…

4

Módulos
Módulos

• Se pueden acceder a los elementos según su

visibilidad

• Una clase o módulo puede requerir de otros ⇒

necesidad de importar

• Los módulos se pueden empaquetar en librerías

(ficheros .jar) Reutilización
(ficheros .jar) Reutilización

• Cada módulo se puede compilar por separado
Nos centraremos en crear módulos (clases) que
• Nos centraremos en crear módulos (clases) que
definan Tipos Abstractos de Datos (TAD)

5

Módulos: Paquetes
Módulos: Paquetes

t

it

• Un paquete permite agrupar en una misma

U
unidad varias clases e interfaces estructurar
U
– Dos clases pertenecientes a distintos

• Un paquete crea un espacio de nombres ⇒

i d

b

t

i

paq etes se p eden llamar ig al
paquetes se pueden llamar igual

• Un paquete puede contener otros paquetes
l
• Si no se especifica nada la clase pertenece al

d l

t

l

• Los paquetes son una forma de crear módulos

ód l

d

f

ifi

Si
paquete por defecto
L
en java

t

6

Módulos: Cómo crear un paquete
Módulos: Cómo crear un paquete

• Por convenio se usan minúsculas en el identificador
• Por convenio se usan minúsculas en el identificador
• Una forma habitual de nombrar los paquetes es:

– Tipo de organización: org
Tipo de organización: org
– Nombre Organización: upm
– Proyecto: programacion2
– Detalles proyecto: practica1
– Otras divisiones …

p g

y

• Si el paquete ‘a’ está dentro del paquete ‘b’, y éste a su vez está

dentro de ‘c’, entonces:

package c.b.a;

k

b

• Al comienzo de todos los ficheros pertenecientes a un mismo

paquete ‘a’:
paquete a :

package a;
package a;

7

Módulos: Cómo crear un paquete
Módulos: Cómo crear un paquete

i

E
• En un mismo fichero .java se pueden definir
i
varias clases y/o interfaces, sólo una puede
ser pública
ser pública

d fi

fi h

d

j

• Todos los ficheros del paquete a deben:

l

t

li d

– o estar localizados en un directorio llamado a

ll
cuyo path esté incluido en la variable
CLASSPATH (por ejemplo: c/b/a)
CLASSPATH (por ejemplo: c/b/a)

di

d

t

i

– o estar incluidos en una carpeta a dentro de un
fichero .jar o .zip, y el path del fichero debe estar
incluido en la variable CLASSPATH (por ejemplo:
/misclases/libreria.jar)

p, y

p

j

8

Módulos: Cómo usar un paquete
Módulos: Cómo usar un paquete

• Escribiendo la referencia completa al elemento

d l

ibi

t

t

l

l

l

E
i
(importación calificada):
t

b P

f

nombrePaquete.nombreElem

b El

• Importando (importación no calificada):

– el paquete entero:

t

t

l

import nombrePaquete.*;

l

t

ól

– o sólo el elemento a ser utilizado:

l
import nombrePaquete.nombreElem;
t d
t

• La importación permite usar el conjunto de

L i
identificadores definidos. No se trae el código

tili d



it

j

l

9

Módulos: Cómo usar un paquete
Módulos: Cómo usar un paquete

i

t

P

t

t

t

t 2

// i
//calificada Punto2 -> puntos.Punto2

i
import puntos.Punto2; //si se comenta se usa importación

import consola.Consola;
public class TestPuntos2 {
p
{
static Punto2 leerPunto () {//leerPunto
float x,y;
.....
return new Punto2 (x,y);
)

C lifi d
Calificada

t 2 (

t

P

}//leerPunto
static void imprimirPunto (puntos.Punto2 p)
p
p)
{//imprimirPunto
System.out.printf("La coordenada x del punto es %f\n",
S
System.out.printf("La coordenada y del punto es %f\n",
}//imprimirPunto

p.getX());
d
p.getY());

i tf("L

%f\ "

d l

(p

t

d

t

t

10

Módulos: Cómo usar un paquete
Módulos: Cómo usar un paquete

t

l

l

t

t

i

t

t

P

iP

t

i

t 3

i
import puntos.iPuntos; import puntos.Punto3; import consola.Consola;
C
public class TestPuntos3 { Sólo al construir aparece la clase concreta
static iPuntos leerPunto () {//leerPunto
...
return new Punto3 (x,y);
}//l
t
}//leerPunto
static void imprimirPunto (iPuntos p) {//imprimirPunto
...
}//imprimirPunto
}
public static void main(String[] args) {
iPuntos p1,p2;
p1=leerPunto ();
p2=leerPunto();
2 l
t ()
System.out.println ("Datos del primer punto");
imprimirPunto(p1);

P

p

P

...}}

11

¿Qué clases puedo usar?
¿Qué clases puedo usar?

t

d

• En un proyecto se pueden usar clases de

E
l
muchos paquetes ¿de cuáles?
D t d

• De todos los que estén en el CLASSPATH:
l CLASSPATH
• Cuando usamos una clase la máquina virtual



d

l

i

l

l

t

t

id

t d

ód l

b
busca entre todos los módulos incluidos en
CLASSPATH
– Directorio que esté incluido en la variable

Di
CLASSPATH
Carpeta a dentro de un fichero jar o zip y el
– Carpeta a dentro de un fichero .jar o .zip, y el
path del fichero debe estar incluido en la variable
CLASSPATH

i bl

té i

id

l

i

l

12

Compilación separada
Compilación separada

Implementación

Provedor de Servicos

Compilacion

Módulo

Interface

Implementación

p

Interface

Cliente

Enlazado

Aplicación

Compilacion

Código objeto

13

Compilación separada
Compilación separada

Provedor de Servicos
Provedor de Servicos

Cliente

(Implementación/

Interface)
Interface)

.java

(Implementación/

Interface)

.java

(Compilacion)
(
)

p
javac

(Módulo)
(
)

.class

(Compilacion)

javac

(Aplicación)

.class

(Enlazado/
Ejecución)

java

14

OCULTACIÓN DE INFORMACIÓN

15

Separación Público Vs Privado
Separación Público Vs Privado

• Mecanismos:

– Ocultar la definición de los tipos o atributos
– Ocultar la implementación de sus operaciones
– Ocultar las operaciones privadas o auxiliares

• Ventajas:

– Facilita la programación: Abstracción de los detalles
– Menor acoplamiento y facilita reutilización
– Desarrollo en paralelo de aplicaciones
– Mejora de implementaciones sin afectar al resto del

sistema

16

Mecanismos de ocultación
Mecanismos de ocultación

• No todos los lenguajes dan las mismas

funcionalidades (C vs. Ada, C vs C++, ...)

• La ocultación se puede dar en:

– Restricción de acceso a nombres
– Restricción de acceso a funciones y estructuras de

datos (aun conociendo los nombres)

– Imposibilidad de inspección visual del código

17

Contenidos de parte pública y

privada en java

Parte Pública
• Cabeceras de los
métodos públicos
• Semántica de los

ét d

úbli

métodos: explica qué
métodos: explica qué
hacen

Normalmente, esta
información es la que se
q
incluye en la documentación
javadoc

Parte Privada

• Solicitud de módulos






i

necesarios en la
l
implementación
Implementación de las
Implementación de las
estructuras de datos
Implementación de los
Implementación de los
métodos: se especifica
un cuerpo {…}
}

p {

18

Separación física de la parte

pública y privada en java

• La parte pública y la privada están mezcladas en el

• Para no tener que ver la parte privada cuando se

código fuente (ficheros .java).
P
t
quieren usar los servicios de una clase, se utiliza la
documentación javadoc en files html
documentación javadoc en files html.

i d

d

t

l

• En la doc javadoc se encuentra la descripción de la
parte pública, que incluye todo lo que necesitamos
pa e púb ca, que
c uye todo o que eces ta os
saber para usar los servicios de una clase.

p

g

• Para poder generar esta doc, tenemos que incluir los
comentarios apropiadas en el código fuente (/** … */)
para cada método público.

q

19

ét d

Modificadores de Acceso
t ib t

• Para atributos y métodos, ordenados de más a

P
menos restrictivos:
– private: sólo es visible dentro de la clase que lo

ibl d

t
definió.
“sin modificador o friendly”: sólo es visible
– sin modificador o friendly : sólo es visible
dentro del paquete que incluye la clase que lo
definió.

ól

t

d l

l

d

d

d

á

i

i

– protected: es friendly, y además es visible para

todas las subclases de la clase que lo definió.

– public: es visible para todos.

Recordatorio:

l

20

Ocultación entre módulos
Ocultación entre módulos

J

• Java permite restringir a quien se da acceso
• Establece cuatro niveles distintos:

t i

d

it

i

i

Modificador Clase Paquete Subclase Universo
public
protected
t d
t
nada
private
private

Si
Si
Si
No
No
No

Si
N
No
No
No
No

Si
Si
Si
Si
No
No

Si
Si
Si
Si
Si
Si

• La importación se realiza por medio de la

palabra reservada import
palabra reservada import

• El cliente tiene acceso a las definiciones según

los criterios enumerados
los criterios enumerados

21

Módulos: Ejemplo de clase sin

ocultación

public class Punto1 {
P t 1 {

bli

l

public float x;
public float y;
public float y;

Definición de servicios e
implementación en el mismo fichero

public static double distancia (Punto1 p1, Punto1 p2 ) {
return java.lang.Math.sqrt ((p1.x - p2.x)*(p1.x - p2.x) +

2 )*( 1

t (( 1

M th

2 )

(p1.y - p2.y)*(p1.y - p2.y));

t

j

l

}

public static boolean esOrigen (Punto1 p )
{
return p.x==0 && p.y==0;
}
}

Visible y usable po
  • Links de descarga
http://lwp-l.com/pdf15383

Comentarios de: Programación II - Programación Modular (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