Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modular Id Ad
Modular Id Ad
Tema 2
Modularidad en Java
En Java la unidad modular es la clase Una clase es la abstraccin de un conjunto de objetos (instancias) Una clase ofrece unos servicios y oculta otros recursos
Modularidad en Java
Java no separa la especificacin y la implementacin de los mdulos como lo hace Ada. En Java es posible definir objetos interfaz que contengan la declaracin de un conjunto de operaciones pblicas de una clase.
Esta interfaz agrupara la especificacin de los mtodos que exporta un mdulo. Es posible definir varias interfaces para una clase. En la interfaz NO se incluyen los mtodos estticos ni el mtodo constructor de la clase.
Modularidad en Java
Java permite organizar las clases en paquetes y subpaquetes de forma jerrquica Esta jerarqua se refleja en la forma de almacenamiento en disco a travs de directorios
java java.lang java.io java.awt Java.awt.peer
Ocultacin de la informacin
Principio conservador :
A menos que exista una razn importante para que un miembro sea accesible, ser declarado privado
Ocultacin de la informacin
La ocultacin de la informacin en Java se realiza a travs de los modificadores de visibilidad Los modificadores de visibilidad se aplican a nivel de clase y a nivel de miembro (atributo o mtodo)
Modificadores de Visibilidad
Acceso private Predeterminado protected public Clase Subclase Paquete Universal X X X X X X X X X X
Ocultacin de la informacin
El objetivo es ocultar en lo posible los detalles de implementacin de las clases permitiendo el acceso slo a travs de los mtodos pblicos
Ocultacin de la informacin
En Java para conseguir esto:
Las variables miembro (atributos) se deben declarar como privadas El acceso a las variables miembro se realizar SLO a travs de las operaciones pblicas Operaciones pblicas de creacin, consulta y modificacin
Ocultacin de la informacin
Usando los modificadores de visibilidad conseguimos:
evitar accesos directos controlar los accesos simplificar el trabajo del programador no tener problemas al cambiar la implementacin del paquete mientras no se cambie la interfaz
Una clase puede utilizar las clases pblicas de todos los paquetes que se hayan referenciado al principio del fichero
a) Mdulos de Definicin
Declaracin de constantes y variables Se declaran sobre clases abstractas (abstract) Se declaran como estticas (static) Definiciones de constantes (final)
abstract static static static static static } class ConfiguracionSistema{ boolean VersionEvaluacion; int diasUtilizacin; final int maxDias; String ubicacion; String paginaInicial;
a) b) c) d)
Mdulos de definicin Mdulos de servicio Tipos Abstractos de Datos Mquinas Abstractas de Estado
b) Mdulos de Servicio
Ofrecen un servicio Agrupan un conjunto de operaciones Las operaciones de la interfaz se declaran sobre clases no instanciables (abstract y final) Las operaciones son declaradas estticas (static)
Ejemplo
abstract class UtilidadesString { static void aMayusculas(String S) {...} static void eliminarBlancos(String S) {...} static Boolean esPrefijo (String P, String S) {...} private static int interna(String P, String S) {...} }
Ejemplo
public class Coche { private String matricula; private double velocidad; // Mtodo constructor public Coche(String pMatricula, double pVelMax) { this.matricula= pMatricula; this.velocidad = 0.0; if (velocidadMax >= 0.0) { this.velocidadMax = pVelMax; } else { velocidadMax = 0.0; } } // (contina...) // atributos privados private double velocidadMax;
Ejemplo
// Mtodos de consulta public String getMatricula() { return this.matricula; } // Mtodos de asignacin public void setMatricula(String pMatric) { this.matricula = pMatric; }
// Otros mtodos
public void Acelerar(double pVel) { this.velocidad = this.velocidadd + pVel; if (this.velocidad > this.velocidadMax) { this.velocidad = this.velocidadMax; } if (this.velocidad < 0.0) { this.velocidad= 0.0; } } }
Patrn SINGLETON
Ejemplo
public class Pila { // Atributos private static final int CAPACIDAD=1000; private static int elementos[]; private int tope; // ndice de la primera posicin libre private static Pila unaPila = new Pila(); // nica instancia de la clase // Constructora private Pila() { elementos = new int[CAPACIDAD]; tope = 0; } // Operacin de acceso public static Pila obtPila (){ return unaPila; }
Librera de clases
El lenguaje Java tiene una librera muy amplia La librera se organiza en paquetes En Java los paquetes se utilizan para agrupar clases que tienen algo en comn Antes de implementar una clase en Java comprobar si ya est hecha Un paquete declara: clases, interfaces, excepciones y errores
java.appletjava.awt java.lang