You are on page 1of 4

Modularidad en Java

Tema 2 En Java la unidad modular es la clase


Modularidad en Java Una clase es la abstraccin de un conjunto de
objetos (instancias)
Programacin Orientada a Una clase ofrece unos servicios y oculta otros
Objetos recursos

Modularidad en Java Modularidad en Java


Java no separa la especificacin y la implementacin Java permite organizar las clases en paquetes y
de los mdulos como lo hace Ada. subpaquetes de forma jerrquica
En Java es posible definir objetos interfaz que
contengan la declaracin de un conjunto de Esta jerarqua se refleja en la forma de
operaciones pblicas de una clase. almacenamiento en disco a travs de directorios
Esta interfaz agrupara la especificacin de los mtodos
que exporta un mdulo. java
Es posible definir varias interfaces para una clase.
En la interfaz NO se incluyen los mtodos estticos ni
java.lang java.io java.awt
el mtodo constructor de la clase.
Implementacin: definicin de una clase Java.
Java.awt.peer
Ocultaremos los detalles

Ocultacin de la informacin Ocultacin de la informacin

Principio conservador :
La ocultacin de la informacin en Java se
realiza a travs de los modificadores de
A menos que exista una razn importante para visibilidad
que un miembro sea accesible, ser declarado
Los modificadores de visibilidad se aplican a
privado nivel de clase y a nivel de miembro (atributo o
mtodo)

1
Modificadores de Visibilidad
Modificadores de Visibilidad (clase) (atributos y mtodos)
La visibilidad de las variables miembro (atributos)
Una clase puede declararse: y los mtodos (operaciones) de una clase puede
public: en este caso todas las otras clases la ser:
pueden utilizar package (por defecto): slo accesibles desde su
paquete (no se puede acceder desde sus
con la visibilidad a nivel de paquete, esto es, no subpaquetes)
se puede utilizar fuera del paquete public: accesibles desde todas las clases
private: slo accesibles desde los mtodos de la
si en un fichero se declara ms de una clase,
clase
slo una ser pblica siendo el resto privadas
protected: el miembro es accesible desde las
clases de su paquete y desde las subclases

Modificadores de Visibilidad Ocultacin de la informacin

Acceso Clase Subclase Paquete Universal


El objetivo es ocultar en lo posible los
private X detalles de implementacin de las clases
permitiendo el acceso slo a travs de los
Predeter- X X
minado mtodos pblicos
protected X X X

public X X X X

Ocultacin de la informacin Ocultacin de la informacin

En Java para conseguir esto: Usando los modificadores de visibilidad


conseguimos:
Las variables miembro (atributos) se deben
declarar como privadas evitar accesos directos
controlar los accesos
El acceso a las variables miembro se realizar
simplificar el trabajo del programador
SLO a travs de las operaciones pblicas
no tener problemas al cambiar la
Operaciones pblicas de creacin, consulta y implementacin del paquete mientras no se
modificacin cambie la interfaz

2
Importacin de clases y paquetes Importacin de clases y paquetes
Para especificar las clases e incluso paquetes
enteros que se utilizan desde una clase se utiliza la Para importar una clase:
clusula import import java.net.URL;
public class Ejemplo {...}
import <nombre-paquete>
import <nombre-paquete>
[[ {*
Para importar todas las clases pblicas de un
{* || <nombre-clase>}]
<nombre-clase>}] ;; paquete
*: se
*: se importan
importan todas
todas las
las clases
clases del
del paquete
paquete import java.awt.*;
<nombre-clase>:
<nombre-clase>: slo slo se
se importa
importa lala clase
clase referenciada
referenciada Esto no importa las clases incluidas en
subpaquetes (por ejemplo , java.awt.event)

Una clase puede utilizar las clases pblicas de El paquete java.lang no es necesario
todos los paquetes que se hayan referenciado al importarlo
principio del fichero

Tipos de Mdulos (Java) a) Mdulos de Definicin


Declaracin de constantes y variables
Se declaran sobre clases abstractas (abstract)
Se declaran como estticas (static)
a) Mdulos de definicin
Definiciones de constantes (final)
b) Mdulos de servicio
c) Tipos Abstractos de Datos abstract class ConfiguracionSistema{

d)
static boolean VersionEvaluacion;
Mquinas Abstractas de Estado static int diasUtilizacin;
static final int maxDias;
static String ubicacion;
static String paginaInicial;
}

b) Mdulos de Servicio Ejemplo


abstract class UtilidadesString
Ofrecen un servicio
{
Agrupan un conjunto de operaciones static void aMayusculas(String S)
{...}
Las operaciones de la interfaz se declaran static void eliminarBlancos(String S)
sobre clases no instanciables (abstract y {...}
final) static Boolean esPrefijo (String P, String S)
{...}
Las operaciones son declaradas estticas private static int interna(String P, String S)
(static) {...}
}

3
c) Mdulos de Abstraccin de Datos Ejemplo
public class Coche {
private String matricula;

Representan TADs private double velocidad; // atributos privados


private double velocidadMax;
Se definen el tipo de datos y sus operaciones // Mtodo constructor
public Coche(String pMatricula, double pVelMax) {
La implementacin se realiza como una clase this.matricula= pMatricula;
Java this.velocidad = 0.0;
if (velocidadMax >= 0.0) {
this.velocidadMax = pVelMax; }
else { velocidadMax = 0.0; }
}
// (contina...)

Ejemplo d) Mquinas Abstractas de Estado (MAE)


// Mtodos de consulta
public String getMatricula() { return this.matricula; }
A diferencia de los TADs, las operaciones de una

MAE se efectan sobre un nico objeto (la
// Mtodos de asignacin clase), no se pueden generar diferentes objetos
public void setMatricula(String pMatric) { this.matricula = pMatric; } del mismo tipo

En Java definiremos MAEs a travs de clases
// Otros mtodos que cumplan los siguientes requisitos:
public void Acelerar(double pVel) { No pueden admitir tener varias instancias
this.velocidad = this.velocidadd + pVel; Los mtodos se aplican sobre el nico objeto de
if (this.velocidad > this.velocidadMax) { la clase
this.velocidad = this.velocidadMax; }
Patrn SINGLETON
if (this.velocidad < 0.0) { this.velocidad= 0.0; }
}
}

Ejemplo Librera de clases


public class Pila {
// Atributos El lenguaje Java tiene una librera muy amplia
private static final int CAPACIDAD=1000;
private static int elementos[]; La librera se organiza en paquetes
private int tope; // ndice de la primera posicin libre
private static Pila unaPila = new Pila(); // nica instancia de la clase
En Java los paquetes se utilizan para agrupar
clases que tienen algo en comn
// Constructora
private Pila() {
Antes de implementar una clase en Java comprobar
elementos = new int[CAPACIDAD]; si ya est hecha
tope = 0;
}
Un paquete declara: clases, interfaces, excepciones
y errores
java.appletjava.awt java.lang
// Operacin de acceso
public static Pila obtPila (){ Un paquete se puede organizar en subpaquetes
return unaPila;
}
(que a su vez son paquetes)
java.lang.reflect java.lang

You might also like