Вы находитесь на странице: 1из 12

8 La Programacin Orientada a Objetos

Este captulo es el primero de tres que describen el paradigma de la orientacin de


objetos (OO) y las funciones de la orientacin a objetos del lenguaje de programa
cin Java.
8.1 Repaso del Captulo Anterior
Los principales temas del captulo anterior son:
Identificacin de los Componentes de una Clase
Una aplicacin de escritorio generalmente contiene un objeto que es el punto de co
mienzo del programa. A este objeto, frecuentemente se le denomina el objeto cont
rolador, objeto principal u objeto de prueba.
La Estructura de las Clases
Se divide el cdigo de una clase Java en cuatro secciones separadas:
La declaracin de la clase.
La declaracin e inicializacin de las variables (opcional).
Los mtodos.
Los comentarios.
Creacin y Uso de una Clase de Prueba
El mtodo main es un mtodo especial que la Mquina Virtual de Java reconoce como el
punto de comienzo de cualquier programa basado en la tecnologa Java que se ejecut
a desde la lnea de comando o desde un "prompt".
La sintaxis para el mtodo main es:
public static void main (String args[])
El mtodo main tiene la misma sintaxis que todos los mtodos, la cual se describi ant
eriormente. Especficamente:
Contiene dos modificadores requeridos: public y static.
No devuelve ningn valor, por lo que el tipo de retorno es void.
Tiene como identificador de mtodo (nombre) a "main".
Acepta cero o ms objetos de tipo String (String args[]). Esta sintaxis le perm
ite ingresar los valores a ser usados por su programa desde la lnea de comandos d
urante la ejecucin.
Compilar un Programa
1. Ir al directorio donde estn almacenados los archivos con el cdigo fuente.
2. Ingresar el siguiente comando para cada archivo .java que quiera compilar
:
javac filename
Por ejemplo:
javac Shirt.java
Ejecutar (Probar) un Programa:
1. Vaya al directorio donde estn almacenados los archivos de las clases

2. Ingrese el siguiente comando para el archivo de la clase que contiene el


mtodo main:
java nombreClase
Por ejemplo:
java ShirtTest
Objetivos Primarios de la Tecnologa Java
La Mquina Virtual de Java
La Especificacin de la Mquina Virtual de Java define la JVM como:
"Una mquina imaginaria que est implementada mediante software y cuya emulacin se re
aliza sobre una mquina real. El cdigo para la JVM est almacenado en archivos .class
, cada uno de los cuales contiene cdigo para, a lo sumo, una clase pblica."
Garbage Collector
Durante los ciclos ociosos de la JVM, el hilo correspondiente al garbage collect
or verifica los sectores de memoria que pueden ser liberados y los libera. El p
roceso de garbage collection ocurre automticamente durante el tiempo de vida del
programa de tecnologa Java.
El Entorno de Tiempo de Ejecucin de Java
La compilacin de los archivos fuente escritos en el lenguaje Java debe ser entend
ida como la conversin de estos a un conjunto de bytecode. Los bytecode se almacen
an en archivos .class. En tiempo de ejecucin, los bytecode que constituyen un pr
ograma de software Java son cargados, verificados y ejecutados en un intrprete. E
n el caso de los applets, se pueden descargar los bytecode y luego estos son int
erpretados por la JVM provista por el navegador. El intrprete tiene dos funciones
: ejecutar los bytecode y realizar las llamadas apropiadas al hardware subyacen
te.
Las Tareas de la JVM
Carga del cdigo - Realizada por el cargador de clases.
Verificacin del cdigo - Realizada por el verificador de bytecode.
Ejecucin del cdigo - Realizada por el intrprete de tiempo de ejecucin.
El Cargador de Clases
El cargador de clases carga todas las clases necesarias para la ejecucin de un pr
ograma.
Luego de que todas las clases fueron cargadas, se determina el plan de asignacin
de la memoria para el archivo ejecutable.
El Verificador del Bytecode
La JVM pasa el cdigo a travs de un verificador de bytecode. Este valida el formato
de los fragmentos de cdigo y verifica que no contengan cdigo ilegal.
8.3 Objetivos
Una vez completado este captulo, usted debera ser capaz de:

Definir los conceptos de modelado: abstraccin, encapsulacin y empaquetado.


Describir por qu es posible reusar el cdigo de las aplicaciones de la tecnologa Jav
a.
Usar los modificadores de acceso private y public como apropiados para las lneas
de encapsulacin.
Invocar el mtodo de un objeto en particular.
Usar la documentacin en lnea de la API de la tecnologa Java.
Discusin
Las respuestas a las siguientes preguntas son relevantes con respecto al
material presentado en este captulo.
Comprende usted el anlisis y diseo del software?
Comprende usted el concepto de reutilizacin (o reso) del cdigo y del diseo?
Cules son las funciones que el lenguaje de programacin Java posee y que lo hacen un
lenguaje orientado a objetos?
Cmo define la expresin "orientado a objetos"?
8.4 Recursos Adicionales
Recursos adicionales
Las siguientes referencias ofrecen informacin adicional sob
re los temas descritos en este captulo:
The Java Tutorial. [Online]. Disponible en:
http://java.sun.com/docs/books/
tutorial/java/concepts/index.html
http://java.sun.com/docs/books/
tutorial/java/concepts/object.html
8.5 La Ingeniera de Software
La ingeniera de software es una disciplina difcil y con frecuencia desafiante. De
sde la mitad del siglo pasado, los cientficos de computadoras, ingenieros de soft
ware y arquitectos de sistemas han tratado de crear sistemas de software fciles,
proveyendo cdigo reutilizable. La Figura muestra una breve historia de la ingeni
era de software.
Algunos investigadores crearon lenguajes de programacin para ocultar la complejid
ad de los lenguajes de mquina y agregar procedimientos invocables para manejar la
s operaciones comunes de los sistemas operativos, tales como abrir, leer o escri
bir archivos.
Otros agruparon colecciones de funciones y procedimientos comunes, en biblioteca
s para, por ejemplo: calcular cargas estructurales en ingeniera (NASTRAN), transm
itir cadenas de bytes y caracteres entre computadoras en una red (TCP/IP), acced
er a los datos a travs de un mtodo de acceso secuencial indexado (ISAM) y crear ve
ntanas, grficos u otros smbolos grficos de GUI en un monitor de mapeo de bits (X-Wi
ndows y Open Look).
Muchas de estas bibliotecas manejan datos con forma de registros abiertos, como
el struct del lenguaje C. El principal problema con las estructuras de registros
es que los diseadores de bibliotecas no pueden separar la implementacin de los da
tos usados en los procedimientos. Esto hace difcil de modificar la implementacin d
e la biblioteca, sin
afectar el cdigo del cliente porque el cdigo est con frecuencia atado a detalles pa
rticulares de la estructura de datos.
A finales de los aos 80, la programacin orientada a objetos (OOP) se volvi particul
armente popular con C++. Una de sus mayores ventajas era la posibilidad de ocult

ar ciertos aspectos de la implementacin, de manera que las actualizaciones no afe


ctaban el cdigo del cliente (asumiendo que la interfaz no cambiaba). Otra ventaja
importante era que los
procedimientos estaban asociados con la estructura de datos. Una clase es la com
binacin de los atributos de los datos y de los procedimientos (llamados mtodos).
Las bibliotecas de clases o grupo de programas y rutinas (toolkits) equivalen a
las bibliotecas de funciones. Ellas proveen (como bibliotecas funcionales) clase
s para realizar muchas operaciones. Pero, con el uso de subclases, los programad
ores pueden fcilmente extender dichas herramientas para sus propias aplicaciones.
Los frameworks proveen API que diferentes vendedores pueden implementar y le pe
rmiten elegir aquel, que por su flexibilidad y eficiencia, se ajusta mejor a su
aplicacin.
La tecnologa Java es una plataforma que se extiende continuamente a travs de nueva
s API y frameworks, como:
la Java Foundation Classes/Swing (J.F.C./Swing) y otras tecnologas J.F.C.,
la arquitectura JavaBean (Arquitectura de componentes de tecnologa Java) y
la Java DataBase Connectivity API (JDBC API). La lista de API de Java es larga y
est en constante crecimiento.
8.5 La Ingeniera de Software
8.5.1 La Fase de Anlisis y de Diseo
Hay cinco flujos de trabajo principales en el desarrollo de un proyecto de soft
ware:
La Captura de los Requerimientos.
El Anlisis.
El Diseo.
La Implementacin .
Las Pruebas.
Todos son importantes. Sin embargo, conviene, sobre todo, asignarles suficiente
tiempo a las fases de anlisis y diseo.
Durante la fase de Anlisis, usted define qu se supone que el sistema debe cumplir.
Esto se hace seleccionando un conjunto de actores (usuarios, dispositivos y otr
os sistemas que interaccionan con el sistema propuesto) y actividades que el sis
tema propuesto debe adecuar. Tambin, la fase de Anlisis debe identificar los objet
os del dominio (tanto fsicos como conceptuales) que el sistema propuesto manipula
r y los comportamientos e interacciones entre ellos. Estos comportamientos implem
entan las actividades que el sistema propuesto debe soportar. La descripcin de la
s actividades debera ser lo suficientemente detallada como para crear una lnea de
base de los criterios para la fase de Prueba.
Durante la fase de Diseo, usted debe definir cmo el sistema debe lograr sus objeti
vos. Usted crea un modelo de actores, actividades, objetos y comportamientos par
a el sistema propuesto. Use el Lenguaje Unificado de Modelado (UML) como su herr
amienta de modelado.
8.5 La Ingeniera de Software
8.5.2 Un Ejemplo de Anlisis y de Diseo
Este mdulo usa el ejemplo de una compaa de embarque. Usted asume un conjunto simpl
e de requerimientos:
El software debe soportar una compaa simple de embarque.
La compaa de embarque mantiene una flota de vehculos que transportan cajas.
El peso de las cajas es el nico factor importante al momento de la carga del vehcu
lo.

La compaa de embarque es propietaria de dos tipos de vehculos: camiones y barcas de


transporte de ro.
Las cajas son pesadas en escalas cuantificadas en kilogramos. Sin embargo, los a
lgoritmos para calcular el poder del motor del vehculo requieren que la carga tot
al del vehculo sea medida en newtons.
Use una GUI para mantener la ruta de las cajas agregadas al vehculo. Debe generar
varios reportes de los registros de la flota.
A partir de estos requerimientos, usted puede crear un diseo de alto
nivel:
Los siguientes objetos deben estar representados en el sistema: una compaa y dos t
ipos de vehculos.
Una compaa es una agregacin de mltiples objetos de vehculos.
Existen otros objetos funcionales: varios reportes y pantallas de GUI.
8.5 La Ingeniera de Software
8.5.3 La Abstraccin
El diseo de software se ha movido de las construcciones de bajo nivel, tales com
o la escritura en cdigo de mquina, hasta algunas de muy alto nivel. Hay dos fuerza
s interrelacionadas que guan el proceso: simplificacin y abstraccin. La simplificac
in fue un trabajo realizado por los primeros diseadores de lenguajes, que consisti
en construir
lenguajes de alto nivel, con las sentencias if y las iteraciones for, cdigo mquina
especial. La abstraccin es el proceso que oculta las implementaciones privadas d
etrs de las interfaces pblicas.
El concepto de abstraccin conduce al uso de subrutinas (funciones) en lenguajes d
e alto nivel y a las funciones y los datos dentro de objetos. En niveles ms altos
, la abstraccin conduce al desarrollo de frameworks y APIs.
8.5 La Ingeniera de Software
8.5.4 Las Clases Entendidas como Plantillas para Objetos
As como un dibujante crea un proyecto para un dispositivo que puede ser usado va
rias veces para construir dispositivos, una clase es un diseo de software que se
puede utilizar para instanciar (esto es crear) varios objetos individuales.
Una clase define un conjunto de datos (atributos) que definen los objetos, as com
o el conjunto de comportamientos o funciones (denominados mtodos) que manipulan e
l objeto o realizan interacciones entre objetos relacionados. Los atributos y lo
s mtodos son llamados miembros.
Por ejemplo, un objeto vehculo en una aplicacin de embarques debe realizar el segu
imiento de su carga mxima y actual a travs de los mtodos para agregar una caja (con
cierto peso) al vehculo.
El lenguaje de programacin de la tecnologa Java soporta tres funciones clave de OO
P: encapsulacin, herencia y polimorfismo.
8.6 La Estructura de las Clases de Tecnologa Java
La estructura de las clases de tecnologa Java es la que se muestra en la Figura
El <nombre_clase> puede ser cualquier identificador vlido que denomine la clase q
ue declara. Hay varias palabras posibles para <modificador>, pero por ahora, use
solo public. Esto indica que la clase es accesible para el universo. El cuerpo
de la clase incluye el conjunto de atributos, constructores y mtodos del dato as
ociados con ella.

8.7 La Declaracin de los Atributos


La declaracin de un atributo de un objeto tiene la siguiente forma:
<modificador>* <tipo> <nombre> [ = <valor_inicial> ];
El <nombre> puede ser cualquier identificador vlido y denomina el atributo que es
t siendo declarado. Hay varios valores posibles para el <modificador>, pero por a
hora, use public o private. La palabra clave private indica que el atributo es a
ccesible slo a los mtodos dentro de la clase. El <tipo> del atributo puede ser cua
lquier tipo primitivo (int, float, etc.) o alguna clase. (ver Figura )
8.8 La Declaracin de los Mtodos
Para definir los mtodos, el lenguaje de programacin Java usa un enfoque similar a
l de otros lenguajes, particularmente C y C++. Toma la siguiente forma bsica:
<modificador>* <tipo_retorno> <nombre> ( <argumento>>* ) {
<statement>*
}
El <nombre> puede ser cualquier identificador vlido, con algunas restricciones ba
sadas en los nombres que ya estn en uso. El segmento del <modificador> es opciona
l y puede contener varios modificadores diferentes incluyendo a public, protecte
d y private (aunque no est limitado a estos). El modificador de acceso public ind
ica que el mtodo puede ser llamado desde otro cdigo. El mtodo private indica que un
mtodo puede ser llamado slo por los otros mtodos en la clase.
El mtodo protected ser descrito durante este curso.
El <tipo_retorno> indica el tipo de valor devuelto por el mtodo. Si el mtodo no de
vuelve un valor, debe ser declarado void. La tecnologa Java es rigurosa acerca de
los valores de retorno. Si el tipo de retorno en la declaracin del mtodo es un in
t, por ejemplo, el mtodo debe devolver un int desde todos los posibles caminos de
retorno (y puede ser invocado solamente en contextos que esperan un int para se
r devuelto). Use la sentencia return dentro de un mtodo para devolver un valor.
La lista de <argumento> permite que los valores de argumentos sean pasados hacia
el mtodo. Los elementos de la lista estn separados por comas y cada elemento cons
iste en un tipo y un identificador.
8.8 La Declaracin de los Mtodos
8.8.1 Ejemplos
El Cdigo en la Figura muestra dos mtodos para la clase Dog. El mtodo getWeight de
vuelve el dato del atributo weight (peso) y no usa parmetros.
El valor se devuelve usando la sentencia return (Lnea 4). El mtodo setWeight modif
ica el valor de weight con el parmetro newWeight, no retorna ningn valor. Este mtod
o usa una sentencia condicional para restringir el cdigo del cliente de modificar
el peso (weight) a un nmero negativo o cero
.9 El Acceso a los Mtodos de los Objetos
En el ejemplo del apartado 2.6.1, usted vio la siguiente lnea de cdigo en el mtodo
TestDog.main:
d.setWeight(42);
Esta lnea de cdigo le dice al objeto d (actualmente una variable, d, manteniendo u
na referencia a un objeto del tipo Dog) que debe ejecutar su mtodo setWeight. Est
o es llamado notacin punto (o dot anotation). El operador punto permite acceder a

los atributos no privados y a los mtodos miembros de la clase.


Dentro de la definicin de un mtodo, no se necesita usar el punto para acceder a lo
s miembros locales. Por ejemplo, el mtodo setWeight de la clase Dog no usa el pun
to para acceder al atributo weight.
El Cdigo de la Figura muestra el comportamiento de los mtodos de la clase Dog. Cu
ando se crea el objeto Dog, la instancia de la variable weight est inicializada e
n 0. Por lo tanto, el mtodo getWeight devuelve 0. En la Lnea 6 de este cdigo le mod
ifica el peso a 42 (este es un argumento vlido) y el mtodo setWeight modifica la v
ariable weight. Sin embargo, modificar el peso a -42 (Lnea 9) es ilegal y el mtodo
setWeight no altera la variable weight.
.10 El Ocultamiento de la Informacin
Suponga que tiene una clase MyDate que incluye los atributos: day, month y year
. La Figura muestra un diagrama de clases de una posible implementacin de la cla
se MyDate.
Una implementacin simple permite el acceso directo a los atributos de los datos,
por ejemplo:
public class
public int
public int
public int
}

MyDate {
day;
month;
year;

El cdigo del cliente accede directamente a los atributos y comete errores, como p
or ejemplo (d refiere a un objeto MyDate):
d.day = 32;
// da invlido
d.month = 2; d.day = 30;
// plausible pero mal
d.day = d.day + 1;
// no realiza la validacin de pasaje al siguiente mes
Para resolver el problema, oculte los atributos de los datos hacindolos privados
y proporcione mtodos de acceso para recuperarlos, getXyz() (denominados getters)
y mtodos de asignacin de almacenamiento, setXyz() (denominados setters).
Estos mtodos le permiten a la clase modificar la informacin interna, pero ms import
ante an, verificar que los cambios requeridos son vlidos. Por ejemplo:
MyDate d = new MyDate();
d.setDay(32);
//da invlido, devuelve false
d.setMonth(2); d.setDay(30);
//plausible pero mal, setDay devuelve false
d.setDay(d.getDay() + 1);
// retornara false si wrap around es necesario que ocurra
8.11 La Encapsulacin

La encapsulacin es la metodologa para ocultar ciertos elementos de la implementac


in de una clase, proporcionando una interfaz pblica para el software del cliente.
Esta es una extensin del ocultamiento de la informacin porque la informacin en los
atributos de los datos constituye un elemento significativo de la implementacin d
e una clase.
Por ejemplo, el programador de la clase MyDate debe decidir si implementar nueva
mente la representacin interna de una fecha, como la cantidad de das desde el comi
enzo de alguna poca. Esto podra hacer comparaciones y clculos de intervalos de tiem
po de manera mucho ms fcil. Dado que el programador encapsul los atributos ocultos
detrs de
una interfaz pblica, el programador puede hacer estos cambios sin afectar el cdigo
del cliente. La Figura muestra su variacin en la clase MyDate.
8.12 La Declaracin de los Constructores
Un constructor es un conjunto de instrucciones diseado para inicializar una inst
ancia. Los parmetros pueden ser pasados a un constructor de la misma manera que a
un mtodo. La declaracin bsica toma la siguiente forma:
[<modificador>] <cnombre_clase> ( <argumento>* ) {
<sentencia>*
}
El nombre del constructor debe ser siempre el mismo que el de la clase. Actualme
nte, los nicos modificadores vlidos (<modificador>) para los constructores son pub
lic, protected y private. La lista de <argumentos> es la misma que la de las dec
laraciones de los mtodos
Por ejemplo:
1
2
3
4
5
6

public class Dog {


private int weight;
public Dog() {
weight = 42;
}

La clase Dog tiene una instancia simple de la variable weight. El constructor (s


in parmetros) inicia la variable weight en 42. Los constructores pueden ser decla
rados con parmetros. Esto se discutir en el correr del curso.
8.12 La Declaracin de los Constructores
8.12.1 El Constructor por Defecto
Cada clase tiene al menos un constructor. Si usted no escribe un constructor, e
l lenguaje de programacin Java le provee uno. Este constructor no posee argumento
s y tiene un cuerpo vaco. El constructor por defecto lo habilita a crear las inst
ancias de los objetos con new Xyz() De otro modo, usted puede proveer un constru
ctor para cada caso.
8.13 Estructura de los Archivos Fuente
Un archivo fuente de la tecnologa Java tiene la siguiente forma:
[<declaracin_paquete>]
<declaracin_importacion>*
<declaracin_clase>+
El orden de estos puntos es importante. Cualquier sentencia de importacin debe pr

eceder todas las declaraciones de clases. Si usa una declaracin de paquetes, debe
preceder ambas, las clases y las importaciones.
El nombre del archivo fuente tiene que ser el mismo que el nombre de la declarac
in de la clase pblica en ese archivo. Un archivo fuente puede incluir ms de una dec
laracin de clase, pero slo una puede ser declarada pblica. Si un archivo fuente no
contiene clases pblicas declaradas, el nombre del archivo fuente no est restringid
o. Sin embargo, es una buena prctica tener un archivo fuente para cada clase decl
arada y que el nombre del archivo sea idntico al nombre de la clase.
Por ejemplo, el archivo VehicleCapacityReport.java debera lucir como se muestra e
n le Figura
8.14 Los Paquetes de Software
La mayora de los sistemas de software son grandes. Es comn agrupar clases dentro
de paquetes para el fcil mantenimiento del sistema. UML incluye el concepto de pa
quetes en su lenguaje de modelado. Los paquetes pueden contener clases, as como t
ambin otros paquetes, que integran una jerarqua de paquetes.
Hay muchas maneras de agrupar clases dentro de paquetes significativos. No hay u
na forma correcta o incorrecta, pero una tcnica comn es agruparlas por su similitu
d semntica.
Por ejemplo, un sistema de software de embarque puede contener un conjunto de ob
jetos de dominio (as como la compaa y vehculos, cajas, destinos y an ms) un conjunto d
e reportes y un conjunto de paneles GUI, que se usan para crear la entrada princ
ipal de los datos de la aplicacin. La GUI y los subsistemas reports (reportes) de
penden del paquete domain. Los paquetes UML pueden ser tiles para modelar subsist
emas u otros grupos de acuerdo con sus necesidades. Todos estos paquetes estn con
tenidos en el panel ms alto en jerarqua llamado shipping.
8.15 La Sentencia package
El lenguaje de programacin de la tecnologa Java le provee la sentencia package co
mo la forma de agrupar clases relacionadas. La sentencia package tiene la siguie
nte forma:
package <nombre_paq_sup>[.<nombre_sub_paq>]* ;
Usted puede indicar qu clases, en un archivo fuente, pertenecen a un paquete en p
articular, usando la sentencia package. Por ejemplo:
1
2
3
4
5
6
7

package shipping.domain;
// Clase Vehicle del sub-paquete 'domain' dentro del
// paquete de la aplicacin 'embarque'
public class Vehicle {
...
}

La declaracin package, en caso de existir, debe estar al principio del archivo fu


ente. Puede precederla con espacios en blanco y comentarios, pero nada ms. Solame
nte la declaracin de un paquete est permitida. Esta se aplica a todo el archivo fu
ente. Si un archivo fuente de la tecnologa Java no contiene una declaracin de paqu
ete, entonces la clase declarada en dicho archivo pertenecer al paquete sin nombr
e (por defecto).
Los nombres de los paquetes son jerrquicos y estn separados por puntos. Es usual q

ue se escriban en minscula. Sin embargo, el nombre de la clase generalmente comie


nza con una mayscula. Se puede, tambin, poner la primera letra de cada palabra en
mayscula para resaltar palabras en el nombre del archivo.
8.16 La Sentencia import
La sentencia import tiene las siguientes formas:
import <nombre_paq> [.<nombre_sub_paq>]. <nombre_clase> ;
o
import <nombre_paq> [.<nombre_sub_paq>].* ;
Cuando quiera usar paquetes, use la sentencia import para decirle al compilador
dnde encontrar las clases. En efecto, el nombre del paquete (por ejemplo, shippin
g.domain) forma parte del nombre de las clases dentro del paquete. Usted puede r
eferenciar a la clase Company como shipping.domain.Company o puede usar la sente
ncia de import y solamente el nombre de la clase Company.
El siguiente es el fragmento de un archivo que utiliza sentencias import.
1
2
3
4
5
6
7
8
9
10

package shipping. reports;


import shipping. domain.*;
import java.util.List;
import java.io.*;
public class Vehicle Capacity Report {
private Company company ForReport;
...
}

Cuando use una declaracin de paquete, no necesita importar los mismos paquetes o
algn elemento del paquete. Recuerde que la sentencia import se usa para hacer que
las clases en otros paquetes sean accesibles a la clase actual.
La sentencia import especifica la clase a la que quiere acceder. Por ejemplo, si
quiere solamente la clase Writer (del paquete java.io) incluida en el espacio d
e nombres actual, entonces podra usar: import java.io.Writer;
Si quiere acceso a todas las clases dentro de un paquete, use "*". Por ejemplo,
para acceder a todas las clases del paquete java.io, use: import java.io.*;
8.17 El Esquema de Directorios y Paquetes
Los paquetes se guardan en un rbol de directorios; cada rama contiene el nombre
de un paquete. Por ejemplo, el archivo Company.class debera existir en la estruct
ura mostrada en la Figura
8.17 El Esquema de Directorios y Paquetes
8.17.1 El Desarrollo
Es comn estar trabajando en distintos proyectos de desarrollo a la vez.
Hay varios caminos para organizar sus archivos de desarrollo. Esta seccin describ
e una de estas tcnicas.
La Figura muestra un ejemplo de jerarqua de directorios de desarrollo para un pr
oyecto de desarrollo. El elemento importante de esta jerarqua es que el archivo f
uente de cada proyecto est separado de los archivos ya compilados (.class).

8.17 El Esquema de Directorios y Paquetes


8.17.2 La Compilacin con la Opcin -d
Normalmente, el compilador Java ubica los archivos class en el mismo directorio
que los archivos fuente. Es posible cambiar la ubicacin de los archivos clase a
otro directorio usando la opcin -d del comando javac. La manera ms simple de compi
lar archivos dentro de un paquete es trabajar en el directorio un nivel arriba d
el comienzo del paquete. (En este ejemplo, el directorio src.)
Para compilar todos los archivos dentro del paquete shipping.domain y tener las
clases compiladas finalmente en su correcto directorio de paquete bajo ShippingP
rj/class/, escriba lo siguiente:
cd JavaProjects/ ShippingPrj/ src
javac -d ../classes shipping / domain/ *.java
8.17 El Esquema de Directorios y Paquetes
8.17.3 El Despliegue
Usted puede realizar el despliegue de una aplicacin en la mquina del cliente sin
manipular la variable de ambiente CLASSPATH del usuario. Usualmente, es mejor cr
ear un archivo ejecutable Java (JAR). Para hacer un archivo JAR ejecutable, debe
crear un archivo temporal que indique el nombre de la clase que contiene su mtod
o main, como este:
Main-Class: mypackage.MyClass
A continuacin, construya el archivo JAR con normalidad. Tenga en cuenta que debe
agregar una opcin adicional, de forma tal que el contenido del archivo temporal s
ea copiado dentro del archivo METAINF/ MANIFIEST.MF. Haga esto usando la opcin 'm
', como en este ejemplo:
jar cmf tempfile MyProgram. jar
Finalmente, el programa puede ser ejecutado, usando un comando sencillo como est
e:
java -jar /camino/al/archivo/ MyProgram. jar
El Despliegue de la Biblioteca
Algunas veces necesita desplegar el cdigo de la biblioteca en un archivo JAR. En
esas situaciones, es posible copiar el archivo JAR dentro del subdirectorio ext
del directorio lib en el directorio principal de la JRE. Sea cuidadoso cuando lo
hace, porque las clases que despliega de esta manera obtienen privilegios total
es de seguridad y pueden causar problemas en tiempo de ejecucin si tienen conflic
tos de nombres con otras clases en el ncleo del JDK o si han sido instaladas de e
sta manera.
8.18 La Recapitulacin de Terminologa
Descripcin de algunos trminos introducidos en este mdulo:
Clase - Una manera de definir nuevos tipos de objetos en el lenguaje de programa
cin Java. Puede ser considerada como un diseo (blueprint), que es un modelo del ob
jeto que se est describiendo.
Objeto - Una instancia actual de una clase. Un objeto es lo que se obtiene cada
vez que se instancia una clase usando new.
Atributo - Un dato de un objeto. Un atributo guarda informacin de un objeto. Es t
ambin conocido como un miembro del objeto, una variable de una instancia, una var
iable de instancia o un campo de datos.
Mtodo - Un elemento funcional de un objeto, una funcin o un procedimiento.

Constructor - Un mtodo constructor usado para inicializar (o construir) un nuevo


objeto. Los constructores tienen el mismo nombre que las clases.
Paquete - Un grupo de clases, subpaquetes o ambos.
8.19 El Uso de la Documentacin de la API de la Tecnologa Java
Un conjunto de archivos HTML documentan la API suministrada. El diseo de esta do
cumentacin es jerrquico. Por lo tanto, la pgina de inicio lista todos los paquetes
como hyperlinks (hipervnculos). Cuando usted selecciona el link de un paquete en
especial, las clases que son miembros de ese paquete son listadas. Seleccionando
el link de una clase desde la pgina de un paquete presenta una pgina de informacin
acerca de esta clase. La Figura muestra una de estas clases.
La seccin principal del documento de una clase incluye :
La jerarqua de clases.
Una descripcin de la clase y su propsito general.
Una lista de atributos.
Una lista de constructores
Una lista de mtodos.
Una lista detallada de atributos con descripciones.
Una lista detallada de constructores con descripciones y lista de parmetros forma
les.
Una lista detallada de mtodos con descripciones y listas de parmetros formales.

Вам также может понравиться