Está en la página 1de 25

OCA-Java Building Blocks-UMC02

Declaración e importación de Paquetes


Declaración e importación de paquetes

• El entorno de Java se distribuye con miles de clases incorporadas y tambien hay


muchas mas provenientes de diferentes grupos de desarrolladores

• Con tan gran cantidad de clases disponibles se requiera una forma de organizarlas en
una aplicación

• Java maneja una manera similar a lo que hacemos nosotros al guardar documentos,
videos, imágenes, canciones etc.
Declaración e importación de paquetes

Java organiza las clases en paquetes. Los paquetes son agrupaciones


lógicas de clases.
Declaración e importación de paquetes
Java necesita que le digas qué paquetes buscar para encontrar el código que va a utilizar y
que se encuentra precisamente en ellos.

public class Galleta {


public static void main(String[] args) {
Panque p = new Panque(); // No compila
System.out.println(p.imprimeSabor());
}
}
Declaración e importación de paquetes

• Muchas veces suele suceder que tenemos el problema del ejemplo anterior y
pensamos que se debe a un error de sintaxis o del IDE. Puede ser que verifiques varias
veces en donde esta el error y no lo encuentres.

• Es necesario incluir las instrucciones de importación que le dicen al JRE qué paquetes
buscar para las clases, como no le dijiste a Java dónde buscar la clase Panque, no tiene
ni idea de su existencia.
Declaración e importación de paquetes

import com.mx.develop.panque.Panque; // Importar la clase Panque

public class Galleta {


public static void main(String[] args) {
Panque p = new Panque();
System.out.println(p.imprimeSabor()); // Imprime el sabor que tiene ese método
}
}
Declaración e importación de paquetes

Las clases de Java se agrupan en paquetes. La declaración de importación le dice al


compilador qué paquete buscar para encontrar una clase. Esto es similar a cómo funciona
el envío de una carta.

¿?
Declaración e importación de paquetes
• Los nombres de los paquetes son jerárquicos, esto quiere decir que los paquetes
deben partir de algún nombre inicial. Si el nombre del paquete comienza con java
o javax, significa que el paquete está en el JDK

• Si el paquete comienza con otro nombre, es probable que muestre de dónde


proviene el uso del nombre. Normalmente es del sitio web con un orden inverso.
Por ejemplo, mx.com.develop.profesores nos dice que el código proviene del
dominio develop.com.mx
Declaración e importación de paquetes

• Después del nombre del sitio Web, pueden agregarse los paquetes con las clases
que sean necesarios. Por ejemplo, mx.com.develop.alumnos.examen también
está en develop.com.mx

• Java importa los paquetes de paquetes secundarios más detallados


(especializados), por ejemplo mx.com.develop.profesores es un paquete
secundario de develop.com.mx. Se puede decir que describe mejor que paquete
vamos a utilizar, por lo tanto es más específico
Declaración e importación de paquetes
En el examen verás nombres de paquetes que no siguen esta convención. No hay que
sorprenderse al ver los nombres de paquetes como a.b.c. La regla para los nombres de
paquetes es que en su mayoría son letras o números separados por puntos.

Las reglas son las mismas que para los nombres de variables, que veremos más adelante.

El examen puede intentar engañarte con nombres de variables no válidos,


afortunadamente no trata de engañarte dando nombres de paquetes no válidos.
El caracter Comodín
(Wildcards)
El caracter Comodín (Wildcards)
Las clases en el mismo paquete a menudo se importan juntas. Puedes usar un atajo para
importar todas las clases en un paquete:

import com.mx.develop.panque.*; // importar las clases que se encuentren en el paquete


public class Galleta {
public static void main(String[] args) {
Panque p = new Panque();
System.out.println(p.imprimeSabor());
}
}
El caracter Comodín (Wildcards)

• El asterisco (*) es un carácter comodín que coincide con todas las clases en el
paquete.

• Cada clase en el paquete java.util está disponible para este programa cuando Java lo
compila. No importan paquetes, campos o métodos secundarios; sólo importa las
clases.

• Está bien, solo son clases por ahora, pero hay un tipo especial de importación
llamado "importación estática (static import)" que importa propiedades y métodos
estáticos.
El caracter Comodín (Wildcards)

Nota:

Podrías pensar que incluir tantas clases ralentiza tu programa, pero no lo hace. El
JRE se da cuenta de lo que realmente es necesario. El enfoque que elijas es de
preferencia personal
Importación Redundante
Importación redundante
El paquete java.lang es especial porque se importa de manera automática, no es
necesario hacerlo explícitamente; sin embargo podría importarse sin generar error
alguno. Esto provocaría lo que se conoce como importación redundante. En el siguiente
código, ¿cuántas de las importaciones crees que son redundantes?

import java.lang.System;
import java.lang.*;
import java.util.Random;
import java.util.*;
public class ImportExample {
public static void main(String[] args) {
Random r = new Random();
System.out.println(r.nextInt(10));
}
}
Conflicto de nombres
Importación redundante
Una de las razones para usar paquetes es que los nombres de clase no tienen que ser
únicos en una API Java. Esto significa que a veces querrás importar clases que tienen el
mismo nombre pero que hacen cosas diferentes y se encuentran en diferentes lugares de
la API. Un ejemplo común de esto es la clase Date.

Java proporciona implementaciones de java.util.Date y java.sql.Date. Este es otro ejemplo


en el que no necesita saber los nombres de los paquetes para el examen OCA; te los
proporcionarán. ¿Qué importación podríamos usar si queremos la versión java.util.Date?

public class Conflicts { java.util.*;


Date date; or
// Cuerpo de la clase import java.util.Date;
}
Importación redundante
Si realmente necesitas usar dos clases con el mismo nombre ...

A veces realmente quieres usar la fecha de dos paquetes diferentes. Cuando esto sucede,
puede elegir uno para usar en la importación y usar el nombre de clase completo del otro
(el nombre del paquete, un punto y el nombre de la clase) para especificar que es
especial. Por ejemplo:

import java.util.Date; import java.util.Date;


public class Conflicts { public class Conflicts {
Date date; java.util.Date date;
java.sql.Date sqlDate; java.sql.Date sqlDate;
} }
Creando un nuevo Paquete
Creando un nuevo paquete
• Hasta ahora, todo el código que hemos escrito en este capítulo se encuentra en el
paquete default. Este es un paquete especial sin nombre que debe utilizarse solo para
código que no pertenezca a una estructura definida por el desarrollador.

• Puedes saber que el código está en el paquete predeterminado, porque no hay ningún
paquete creado.

• En el examen, verás que el paquete predeterminado se usa mucho para ahorrar


espacio en las listas de código.
Creando un nuevo paquete
C:\temp\packagea\ClassA.java C:\temp\packageb\ClassB.java

package packagea; package packageb;

public class ClassA { import packagea.ClassA;


}
public class ClassB {
public static void main(String[] args) {
ClassA a;
System.out.println(”Hola");
}
}
Creando un nuevo paquete

Cuando ejecuta un programa Java, Java sabe dónde buscar esos nombres de
paquetes. En este caso, ejecutar desde C: \ temp funciona porque tanto los paquetes
como los paquetes están debajo de él.
Creando un nuevo paquete

• Aprenderás Java mucho más fácilmente usando la línea de comandos para compilar
y probar tus ejemplos. Una vez que conozca bien la sintaxis de Java, puede cambiar
a un entorno de desarrollo integrado (IDE) como Neetbeans.

• Un IDE te ahorrará tiempo en la codificación. Para el examen, su objetivo es


conocer detalles sobre el lenguaje y no hacer que el IDE los oculte.

También podría gustarte