Está en la página 1de 30

Manejo de Paquetes

POO II
CUN 2019
Introducción
◦ Cuando hacemos aplicaciones que involucran muchas
clases, suele suceder que nos perdemos al buscar la
ubicación de las clases o se encuentran en el mismo lugar
clases que no tienen relación unas con otras.

◦ Cada vez tenemos más y más clases. Meterlas todas en el


mismo directorio no suele ser bonito.

◦ Es mejor hacer grupos de clases, de forma que todas las


clases que traten de un determinado tema o estén
relacionadas entre sí vayan juntas.
Ámbito de  El ámbito de una variable define su alcance de uso, o
variables en lo que es lo mismo, en que secciones de código una
Java variable estará disponible. Fuera de este ámbito,
una variable no podrá ser accedida (no existe).
 En Java tenemos tres tipos de ámbito que pueden
aplicar a una variable:
Tipos de  Local
ámbito  Global
 Estático
Ejemplo
 Las variables de ámbito local, o de bloque, son
aquellas que sólo pueden ser accedidas desde el
bloque de código en el que han sido declaradas
(que no inicializadas).

Variables de
ámbito local
 Las variables de ámbito global, o de instancia, son
aquellas que pertenecen a cada instancia concreta
de la clase donde han sido declaradas, y
dependiendo del modificador de visibilidad usado
(más tarde hablaremos sobre ésto) podrían ser sólo
accedidas desde la propia instancia a la que
Variables de pertenecen:
ámbito
global
 Las variables estáticas, o de clase, son aquellas que
pertenecen a la propia clase donde han sido declaradas, y
dependiendo del modificador de visibilidad usado podrían
ser sólo accedidas desde la propia clase en la que han sido
declaradas:

Variables
estáticas

 UnaClase compartirá una única copia de la variable


variableEstatica independientemente del número de
inicializaciones que hagamos de la clase, y el último valor de
dicha variable será el que esté vigente en cada momento. Al
ser una variable de clase, repito, no es necesario crear
ninguna instancia de dicha clase para poder usarla (no es
necesario invocar a new).
Ejercicio
Prediga el resultado del siguiente programa Java.
Ejercicio
Prediga el resultado del siguiente programa Java.
Ejercicio
Prediga el resultado del siguiente programa Java, en caso de error
como seria la forma correcta.
 En general, un conjunto de llaves {} define un
alcance.
 En Java, generalmente podemos acceder a una
variable siempre que se haya definido dentro del
Algunos mismo conjunto de corchetes que el código que
puntos estamos escribiendo o dentro de cualquier paréntesis
dentro de los corchetes donde se definió la variable.
importantes  Cualquier variable definida en una clase fuera de
sobre el cualquier método puede ser utilizada por todos los
métodos miembros.
ámbito de las  Cuando un método tiene la misma variable local que
variables en un miembro, la palabra clave “this” se puede usar
para hacer referencia a la variable de clase actual.
Java:  Para que una variable se lea después de la terminación
de un ciclo, debe declararse antes del cuerpo del ciclo.
Quiz
Para las líneas de código
9,11,17,22,24,26 colocar el
nivel de acceso o en caso de
error porque no se podría
acceder a la variable
 Public: podemos acceder a las propiedades y
métodos desde cualquier lugar, desde la clase
actual, clases que heredan de la clase actual y
Visibilidad desde otras clases.
de atributos  Protected: se puede acceder al atributo o método
desde la clase que lo define y desde cualquier otra
y métodos que herede de esta clase.
(public,  Private: los atributos o métodos solo son accesibles
protected y desde la clase que los define.
private).
Definición de paquetes
◦ Un Paquete en Java es un contenedor de clases que
permite agrupar las distintas partes de un programa cuya
funcionalidad tienen elementos comunes.

◦ Son el mecanismo por el que Java permite agrupar clases,


interfaces, excepciones y constantes.

◦ Un paquete no es más que un conjunto o ruta de


directorios en los cuales se almacenaran nuestras clases,
quedando en un mismo directorio las clases que tengan
relación entre ellas.
Ventajas del uso de paquetes

• Agrupamiento de
2 • Mayor seguridad al
4 • resuelven el
clases con • Reutilización de existir niveles de • Incrementa la problema del
características acceso. conflicto entre los
comunes. código. facilidad para nombres de las
localizar y controlar clases.
los accesos a las
clases e interfaces
1 3 5
Ejemplos de paquetes
Ejemplos de paquetes
Contenido de los paquetes

Otros
Interfaces
paquetes

Archivos con
recursos
Clases
adicionales
(imágenes)
Paquete
Creación de un paquete (Declaración)

• se utiliza la sentencia package seguida del nombre del paquete


que estemos creando

package NombrePaquete;

• la sentencia de declaración de paquete ha de ser la primera en


un archivo fuente Java

• Por ejemplo, para incluir la clase Rectangulo dentro del


paquete geometria:
Creación de un paquete (Nomenclatura)

– Por convención se recomienda usar el nombre invertido del


dominio de Internet y si hace falta se le agrega la región

com.compañia.nombrePaquete
com.compañia.region.nombrePaquete

se propone asignar como paquetes y subpaquetes el nombre de dominio


dentro de Internet.

Ejemplo: para un dominio que se llamase japon.magic.com, un nombre


apropiado sería

com.magic.japon.paquete.
Uso de un paquete
– se utiliza la sentencia import seguida del nombre de paquete o
paquetes a importar.

• Para importar todas las clases e interfaces de un


Importar todos paquete se utiliza el metacaracter *

los elementos
• import PaquetePrueba.*;

Importar uno o • import Paquete.Subpaquete1.Clase1;


algunos de los
elementos de un
paquete.
Modificadores de acceso
/* Archivo A.java Ejemplo que explica el nivel de acceso publico */

package p1;
public class A {
public int x = 10; // Atributo publico

/*Método publico */
public void visualizar() {
System.out.println("Valor de X en A" + x);
}
}

A nivel de Referencia A nivel de Herencia


// Archivo B.java // Archivo B.java
package p1; O package p1; O
public class B { K public class B extends A{ K
public void prueba() { public void pruebaB() {
A a = new A(); x = 20;
a.x = 20 visualizar();
a.visualizar(); }
} }
}

// Archivo C.java //Archivo C.java


package p2; O package p2; O
import p1.*; K import p1.*; K
public class C { public class C extends A {
public void prueba() { public void pruebaC() {
A a = new A(); x = 20;
a.x = 20 visualizar();
a.visualizar(); }
} }
}
Modificadores de acceso
/* Archivo A.java Ejemplo que explica el nivel de acceso paquete */

package p1;
public class A {

int x = 10; // Atributo de paquete


/*Metodo paquete */
void visualizar() {
System.out.println("Valor de X en A" + x);
}
}

A nivel de Referencia A nivel de Herencia


// Archivo B.java // Archivo B.java
package p1; O package p1; O
public class B { K public class B extends A{
public void prueba() { public void pruebaB() { K
A a = new A(); x = 20;
a.x = 20 visualizar();
a.visualizar(); }
} }
}

// Archivo C.java //Archivo C.java


package p2; E package p2; E
import p1.*; R import p1.*; R
public class C { R public class C extends A { R
public void prueba() { public void pruebaC() {
O O
A a = new A(); x = 20;
a.x = 20
R visualizar();
R
a.visualizar(); }
} }
}
Modificadores de acceso
/* Archivo A.java Ejemplo que explica el nivel de acceso privado */

package p1;
public class A {

private int x = 10; // Atributo privado


/*Metodo privado */
private void visualizar() {
System.out.println("Valor de X en A" + x);
}
}

A nivel de Referencia A nivel de Herencia


// Archivo B.java // Archivo B.java
package p1; E package p1; E
public class B { R public class B extends A{ R
public void prueba() { R public void pruebaB() { R
A a = new A(); x = 20;
O O
a.x = 20 visualizar();
a.visualizar();
R }
R
} }
}

// Archivo C.java //Archivo C.java


package p2; E package p2; E
import p1.*; R import p1.*; R
public class C { R public class C extends A { R
public void prueba() { public void pruebaC() {
O O
A a = new A(); x = 20;
a.x = 20
R visualizar();
R
a.visualizar(); }
} }
}
FIN

También podría gustarte