Documentos de Académico
Documentos de Profesional
Documentos de Cultura
• Doble papel:
– Módulo: unidad de descomposición del software
– concepto sintáctico
– Recordad: módulo, paquetes, agrupación (Cluster en Eiffel),
espacio de nombres (Namespaces en .NET/packages en Java),etc.
– Tipo: descripción estática de ciertos objetos dinámicos
– concepto semántico
• Dualidad Módulo-Tipo
Las facilidades de la clase A, vista como módulo, son las
operaciones disponibles de las instancias (ejemplares,
objetos) de A, vista como tipo.
• Propiedad fundamental
Todo objeto es una instancia de alguna clase
x p
y
• Rutinas:
– Devuelven un resultado FUNCIONES
– No devuelven nada PROCEDIMIENTOS
Funciones Procedimientos
p = x2 y2 trasladar
= arctg (y /x) rotar
escalar
• Construcción de software OO
– Para obtener código ejecutable ensamblamos un
conjunto de clases
Cierre de un sistema
Paquete
– es una colección de clases relacionadas que se combinan con
otros paquetes para construir aplicaciones (sistemas)
– Contienen:
• clases, interfaces, subpaquetes y recursos como imágenes,
ficheros de texto, etc.
String System
ref
ColorSpace
• En ejecución
– Es necesario utilizar el nombre completo cualificado de la clase raíz
• En ambos casos CLASSPATH correcto para localizar clases necesarias a partir del punto inicial de
compilación o ejecución
.
– Ejemplo:
Ejecutamos desde aquí…
paquete1
package paquete1.subpaquete2.subpaquete3;
public class HolaMundo{
subpaquete2
...
public static void main(String args[])
{ ... } subpaquete3
... código fuente
} asociado al
fichero .class HolaMundo.class
HolaMundo.class
– java paquete1.subpaquete2.subpaquete3.HolaMundo
• Nota: es posible no tener que importar el paquete y referirnos a la clase con la ruta
completa (en la práctica casi no se usa salvo colisiones sin otra solución):
– Ejemplo: com.mmm.nnn.Clase c=new com.mmm.nnn.Clase();
• No accesibles
• Detalles de implementación Parte Privada
• Sin restricciones en cuanto a cambios
siempre que la clase siga siendo “correcta”.
JAVA package
Nivel de visibilidad
public
“amigo”
"amigable"
protected
Acceso
Herencia
Clase Clase
●
Los módulos / clases implementan tipos
– Con propiedades: estado (atributos) y comportamiento (rutinas)
– Es un concepto estático
• Hasta que no ejecutamos no tendremos “objetos”
●
Las clases se ensamblan para formar un sistema en ejecución
– Fundamental el uso de paquetes e importaciones en Java
●
Las clases ocultan detalles de implementación a los clientes
– En Java, mediante el uso de modificadores de acceso incluidos en el
lenguaje
• Lecturas recomendadas
– [Eckel 2007]. Eckel, B. (2007). Piensa en Java. (4ª
Edición). Prentice Hall.
• Capítulo 6. Control de Acceso
Este obra está bajo una licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Unported.
No se permite un uso comercial de esta obra ni de las posibles obras derivadas, la distribución de las cuales se debe
hacer con una licencia igual a la que regula esta obra original