160 likes | 375 Views
Programación Orientada a Objetos. Unidad 5 Paquetes. Temario. Paquetes como módulos La variable CLASSPATH Incluyendo una clase en un paquete Estructura de directorios Clases públicas y no públicas Acceso y uso de paquetes La sentencia import Archivos .JAR. Paquete.
E N D
Programación Orientada a Objetos Unidad 5 Paquetes
Temario • Paquetes como módulos • La variable CLASSPATH • Incluyendo una clase en un paquete • Estructura de directorios • Clases públicas y no públicas • Acceso y uso de paquetes • La sentencia import • Archivos .JAR
Paquete • Un paquete (package) es una colección de clases e interfaces relacionadas • Un paquete puede asociarse al concepto de módulo en software • Mecanismo de agrupación con dos propósitos principales: • Evitar conflictos de nombres (un gran problema al desarrollar código reusable) • Control del nivel de acceso (encapsulación)
java.applet java.awt java.beans java.io java.lang java.math java.net java.rmi java.security java.sql java.text java.util javax.naming javax.print javax.swing javax.xml Principales Paquetes de Java
Jerarquía de Paquetes • Los nombres de paquetes son jerárquicos • Ejemplo: java.awt.event • Las clases deben residir en un subdirectorio que mapea el nombre del paquete • Ejemplo: Una clase que pertenece al paquete java.awt.event debe estar ubicada en el subdirectorio java\awt\event • Los subdirectorios donde comienzan los paquetes pueden estar ubicados en cualquier parte del sistema de archivos
La variable classpath • La variable classpathesutilizadaparaindicar la raíz de los paquetesque se usarándurante la compilación/ejecución • Ej. javc/java –classpath directorio1;directorio2;… Programa.java
Clases en un Paquete • Para agregar una clase a un paquete se utiliza la sentencia packagecomo la primera sentencia del archivo fuente (convención para el nombre del paquete: dominio de la empresa invertido + sistema + subsistema + …) package cl.sii.renta; public class Empresa { // implementación de la clase } • Se almacena la clase en un subdirectorio que mapea el nombre del paquete
Estructura de Directorios • La empresa Taranis tiene un paquete gráfico con la clase Rectangle • El archivo puede tener una clase pública y varias no públicas; el compilador genera los archivos .class
Clases Públicas y No Públicas • Una clase debe declararse public para ser accesible por clases de otros paquetes package cl.sii.renta; public class Empresa { // implementación de la clase } • Una clase no pública sólo es accesible por otras clases del mismo paquete
Acceso a Paquetes • Una clase tiene acceso directo a: • Clases que se encuentran en el paquete java.lang (ej: String) • Otras clases del mismo paquete • Hay dos formas de acceder a clases que se encuentran en otros paquetes: • Usar nombres de clases totalmente calificados • Utilizar la sentencia import
Nombres Calificados • Ejemplo class MiApp { public static void main(String[] args){ com.msoft.math.Matrice m; m = new com.msoft.math.Matrice(); ...} } • Si CLASSPATH está definida así: set CLASSPATH=C:\java\classes;C:\lib;. • ... entonces la clase Matrice es buscada en los siguientes directorios: • C:\java\classes\com\msoft\math • C:\lib\com\msoft\math • .\com\msoft\math
Sentencia import • Facilita la referencia a clases de un paquete • Permite que las clases de un paquete sean referenciadas solamente por el nombre de la clase • Es posible importar: • una clase específica de un paquete import com.msoft.math.Matrice; • todas las clases de un paquete import com.msoft.math.*;
Sentencia import • Ejemplo import com.msoft.math.*; class MiApp { public static void main(String[] args){ Matrice m = new Matrice(); ...} } • Si CLASSPATH está definida así: set CLASSPATH=C:\java\classes;C:\lib;. • ... entonces la clase Matrice es buscada en los siguientes directorios: • C:\java\classes, C:\lib, . • C:\java\classes\com\msoft\math, C:\lib\com\msoft\math, .\com\msoft\math
El Paquete Default • Una clase que no utiliza la sentencia package forma parte del "paquete default", un paquete sin nombre • Es decir, todas las clases que no utilizan la sentencia package pertenecen a un mismo paquete
Archivos JAR y ZIP • Es posible agregar archivos .JAR (formato similar a .ZIP) y .ZIP a la variable CLASSPATHSET CLASSPATH=C:\java\classes;C:\j2ee14\lib\j2ee.jar • La estructura de directorios interna de los archivos .JAR y .ZIP es utilizada como una estructura de directorios normal • El comando jar, parte de los utilitarios de J2SDK, permite manejar archivos .JAR.
Resumen • Un paquete (package) es una colección de clases e interfaces relacionadas • Los nombres de paquetes son jerárquicos • La variable de ambiente CLASSPATH es usada para indicar donde buscar los paquetes • La sentencia package es usada para incluir una clase en un paquete • La sentencia import hace más sencillo hacer referencia a clases en un paquete