Está en la página 1de 4

Modularidad en Java

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

Programacin Orientada a Objetos

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

Implementacin: definicin de una clase Java.

Ocultaremos los detalles

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 (clase)


Una clase puede declararse:
public: en este caso todas las otras clases la pueden utilizar con la visibilidad a nivel de paquete, esto es, no se puede utilizar fuera del paquete si en un fichero se declara ms de una clase, slo una ser pblica siendo el resto privadas

Modificadores de Visibilidad (atributos y mtodos)


La visibilidad de las variables miembro (atributos) y los mtodos (operaciones) de una clase puede ser:
package (por defecto): slo accesibles desde su
paquete (no se puede acceder desde sus subpaquetes) public: accesibles desde todas las clases private: slo accesibles desde los mtodos de la clase protected: el miembro es accesible desde las clases de su paquete y desde las subclases

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

Importacin de clases y paquetes


Para especificar las clases e incluso paquetes enteros que se utilizan desde una clase se utiliza la clusula import
import <nombre-paquete> import <nombre-paquete> [[ {* || <nombre-clase>}] ;; {* <nombre-clase>}] *: se importan todas las clases del paquete *: se importan todas las clases del paquete <nombre-clase>: slo se importa la clase referenciada <nombre-clase>: slo se importa la clase referenciada

Importacin de clases y paquetes


Para importar una clase:
import java.net.URL; public class Ejemplo {...}

Para importar todas las clases pblicas de un paquete


import java.awt.*;

Esto no importa las clases incluidas en subpaquetes (por ejemplo , java.awt.event)

Una clase puede utilizar las clases pblicas de todos los paquetes que se hayan referenciado al principio del fichero

El paquete java.lang no es necesario importarlo

Tipos de Mdulos (Java)

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) {...} }

c) Mdulos de Abstraccin de Datos


Representan TADs Se definen el tipo de datos y sus operaciones La implementacin se realiza como una clase Java

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; }

d) Mquinas Abstractas de Estado (MAE)


A diferencia de los TADs, las operaciones de una MAE se efectan sobre un nico objeto (la clase), no se pueden generar diferentes objetos del mismo tipo En Java definiremos MAEs a travs de clases que cumplan los siguientes requisitos:
No pueden admitir tener varias instancias Los mtodos se aplican sobre el nico objeto de la clase

// 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

Un paquete se puede organizar en subpaquetes (que a su vez son paquetes)


java.lang.reflect java.lang

También podría gustarte