Download Tema 9

Document related concepts
no text concepts found
Transcript
Paquetes
Los paquetes permiten agrupar una colección
de clases e interfaces funcionalmente
relacionadas asignándole un nombre
Todo nombre en Java está dentro de un
paquete
Paquetes
n
n
Java
Arrays y Cadenas
package nombrePaquete; // fichero como parte
de un paquete
El paquete default contiene todas las clases no
definidas explícitamente en un paquete
1
Paquetes
Java
Arrays y Cadenas
2
Paquetes
Librería A
Librería B
public class Text {
....
}
public class Text {
....
}
es.fdi.ucm.a
es.fdi.ucm.b
public class Text {
....
}
public class Text {
....
}
Mi programa
Mi programa
es.fdi.ucm.a.Text txt = new
es.fdi.ucm.a.Text ();
...
es.fdi.ucm.b.Text msg = new
es.fdi.ucm.bText ();
Text txt = new Text();
...
Text msg = new Text();
¿Qué
¿Qué clase
clase Text
Text se
se instancia?
instancia?
Java
Arrays y Cadenas
3
Paquetes
Para evitar colisión de nombres
Sirven para definir bibliotecas de clases e
interfaces
n
Arrays y Cadenas
4
Paquetes
Definen contextos de denominación
n
Java
Reutilización: no volver a inventar la rueda
Permiten organizar el código de una gran
aplicación
Un paquete determina un subdirectorio del
disco
Java
Arrays y Cadenas
5
Las declaraciones de los paquetes tienen que estar
al principio de los ficheros fuente.
Sólo se permite la declaración de un paquete en
cada fichero fuente.
//Clase Empleado del departamento de
//finanzas de la compañía ABC.
package abc.financeDept;
public class Empleado {
...
}
Los nombres de los paquetes están jerarquizados
separados por puntos.
Java
Arrays y Cadenas
6
1
Paquetes
Paquetes
La palabra reservada package debe aparecer
en la primera línea del fichero fuente.
Por lo general el nombre de los elementos
de un paquete es todo en minúsculas.
El nombre de las clases empieza en
mayúscula y la primera letra de cada palabra
añadida al nombre también.
Los paquetes pueden anidarse
n
Convención para el nombrado de
paquetes
(para conseguir nombres únicos):
n
Java
Arrays y Cadenas
7
Paquetes
n
Define una jerarquía:
paquete.subpaquete.subpaquete.clase
dominio.empresa.departamento.proyecto
Java
Arrays y Cadenas
8
La sentencia import
dominio.empresa.departamento.proyecto
(nombre de dominio Internet al revés)
Ejemplo:
es.ucm.sip.cursoJava
Java
Arrays y Cadenas
9
La sentencia import
Uso de paquetes
Se puede llamar a la clase Empleado como
abc.financedept.Empleado
o se puede utilizar la sentencia import y sólo
el nombre de la clase Empleado.
Java
Arrays y Cadenas
Indica al compilador dónde encontrar las
clases.
Debe preceder a todas las declaraciones de las
clases.
import abc.financeDept.*;
public class Jefe extends
Empleado{
String departamento;
Empleado [] subordinados;
}
Java
Arrays y Cadenas
10
11
Utilización de nombres de un paquete:
n
Usando un nombre completo:
class ImprimeFecha1
ImprimeFecha1 {{
class
public static
static void
void main
main ()
() {{
public
java.util.Date ahora
ahora == new
new
java.util.Date
java.util.Date();
java.util.Date();
System.out.println(ahora);
System.out.println(ahora);
}}
}}
Java
Arrays y Cadenas
12
2
Uso de paquetes
n
Directorio de trabajo
Los paquetes se guardan en directorios cuyos
nombres coinciden con los de los paquetes.
Usando la cláusula import:
import java.util.Date;
java.util.Date;
import
class ImprimeFecha2
ImprimeFecha2 {{
class
public static
static void
void main
main ()
() {{
public
Date ahora
ahora == new
new Date();
Date();
Date
System.out.println(ahora);
System.out.println(ahora);
}}
}}
Java
Arrays y Cadenas
13
Control de acceso a
miembros de una clase
Importación de clases
n
package abc.financeDept
public class Empleado{
}
javac Empleado.java
¿Cuál es el directorio de Empleado.class?
Java
Arrays y Cadenas
14
classpath\abc\financeDept\Empleado.class
Hay cuatro niveles de protección en
función de los atributos de acceso y de
la organización en paquetes
No es necesario para el paquete java.lang
w Por defecto: import java.lang.*
n
* permite referirse a todas las clases e
interfaces de un paquete
n
n
import java.*;
n
// ERROR: no vale para paquetes
Publico, paquete, protegido y privado
Ejemplo: Para importar la clase Applet:
w import java.applet.Applet; // directamente la
clase
w import java.applet.*; // todos los nombres del
paquete
Java
Arrays y Cadenas
15
Control de acceso a
miembros de una clase
n
Si no se indica nada un miembro es accesible
desde todo el paquete
private
w acceso sólo dentro de la clase
n
public
w acceso desde cualquier lugar
n
protected
w acceso en la clase, las subclases (en cualquier paquete)
y desde las clases del mismo paquete
Java
Arrays y Cadenas
Arrays y Cadenas
16
Control de acceso a
miembros de una clase
Atributos de acceso
n
Java
17
Modificador Misma
Clase
Mismo
Paquete
Subclase
Universal
public
sí
sí
sí
sí
protected
sí
sí
sí
default
sí
sí
private
sí
Java
Arrays y Cadenas
18
3
Ejemplo control de acceso
Ejemplo control de acceso
El control de acceso se aplica tanto a
atributos como a métodos
métodos public
// redefinición
redefinición de
de la
la clase
clase rectángulo
rectángulo con
con control
control de
de
//
acceso
acceso
public class
class Rectangulo
Rectangulo {{
public
private int
int x;//
x;// accesible
accesible sólo
sólo dentro
dentro de
de la
la clase
clase
private
int
y;
//
accesible dentro
dentro del
del paquete
paquete (( por
por defecto)
defecto)
int y;
// accesible
public int
int ancho;//
ancho;// accesible
accesible desde
desde todos
todos los
los sitios
sitios
public
protected int
int alto;
alto;
// accesible
accesible desde
desde el
el paquete
paquete yy
protected
//
//
desde las
las subclases
subclases
//
desde
private int
int calcularSuperficie()
calcularSuperficie() //
// accesible
accesible sólo
sólo
private
//dentro de
de la
la clase
clase
//dentro
.……...
{{ .……...
}}
}}
Java
Arrays y Cadenas
19
Llamadas
(mensajes)
métodos private
3 variables
private
2
Una
instancia
Java
1Arrays y Cadenas
20
4