NOMBRE: FCO. JAVIER VAZQUEZ PANTALEON. CARRERA: INGENIERIA EN SISTEMAS COMPUTACIONALES. SCHOOL: INSTITUTO TECNOLOGICO DE LAZARO CARDENAS MICHOACAN.

->MEXICO<- ->ARGENTINA<- ->ESPAÑA<-

Reproductor


Ringtones
Reproductor Mi musica ... en ...

martes, 15 de septiembre de 2009

Crear Objetos

En Java, se crea un objeto mediante la creacción de un objeto de una clase o, en
otras palabras, ejemplarizando una clase. Aprenderás cómo crear una clase más
adelante en Crear Clases. Hasta entonces, los ejemplos contenidos aquí crean
objetos a apartir de clases que ya existen en el entorno Java.
Frecuentemente, se verá la creacción de un objeto Java con un sentencia como
esta:
Date hoy = new Date();
Esta sentencia crea un objeto Date (Date es una clase del paquete java,util). Esta
sentencia realmente realiza tres acciones: declaración, ejemplarización e
inicialización. Date hoy es una declaración de variable que sólo le dice al
compilador que el nombre hoy se va a utilizar para referirse a un objeto cuyo tipo
es Date, el operador new ejemplariza la clase Date (creando un nuevo objeto
Date), y Date() inicializa el objeto.

Declarar un Objeto
Ya que la declaración de un objeto es una parte innecesaria de la
creacción de un objeto, las declaraciones aparecen frecuentemente en la
misma línea que la creacción del objeto. Como cualquier otra declaración
de variable, las declaraciones de objetos pueden aparecer solitarias como
esta:
Date hoy;
De la misma forma, declarar una variable para contener un objeto es
exactamente igual que declarar una variable que va a contener un tipo
primitivo:
tipo nombre
donde tipo es el tipo de dato del objeto y nombre es el nombre que va a
utilizar el objeto. En Java, las clases e interfaces son como tipos de
datos. Entonces tipo puede ser el nombre de una clase o de un interface.
Las declaraciones notifican al compilador que se va a utilizar nombre
para referirse a una variable cuyo tipo es tipo. Las declaraciones no
crean nuevos objetos. Date hoy no crea un objeto Date, sólo crea un
nombre de variable para contener un objeto Date. Para ejemplarizar la
clase Date, o cualquier otra clase, se utiliza el operador new.
Ejemplarizar una Clase
El operador new ejemplariza una clase mediante la asignación de
memoria para el objeto nuevo de ese tipo. new necesita un sólo
argumento: una llamada al método constructor. Los métodos
constructores son métodos especiales proporcionados por cada clase
Java que son reponsables de la inicialización de los nuevos objetos de
ese tipo. El operador new crea el objeto, el constructor lo inicializa.
Aquí tienes un ejemplo del uso del operador new para crear un objeto
Rectangle (Rectangle es una clase del paquete java.awt):
new Rectangle(0, 0, 100, 200);
En el ejemplo, Rectangle(0, 0, 100, 200) es una llamada al
constructor de la clase Rectangle.
El operador new devuelve una referencia al objeto recien creado. Esta
referencia puede ser asignada a una variable del tipo apropiado.
Rectangle rect = new Rectangle(0, 0, 100, 200);
(Recuerda que una clase escencialmente define un tipo de dato de
referencia. Por eso, Rectangle puede utilizarse como un tipo de dato en
los programas Java. El valor de cualquier variable cuyo tipo sea un tipo
de referencia, es una referencia (un puntero) al valor real o conjunto de
valores representado por la variable.
Inicializar un Objeto
Como mencioné anteriormente, las clases porporcionan métodos
constructores para incializar los nuevos objetos de ese tipo. Una clase
podría proporcionar múltiples constructores para realizar diferentes tipos
de inicialización en los nuevos objetos. Cuando veas la implementación
de una clase, reconocerás los constructores porque tienen el mismo
nombre que la clase y no tienen tipo de retorno. Recuerda la creacción
del objeto Date en el sección inicial. El constructor utilizado no tenía
ningún argumento:
Date()
Un constructor que no tiene ningún argumento, como el mostrado arriba,
es conocido como constructor por defecto. Al igual que Date, la mayoría
de las clases tienen al menos un constructor, el constructor por defecto.
Si una clase tiene varios constructores, todos ellos tienen el mismo
nombre pero se deben diferenciar en el número o el tipo de sus
argmentos. Cada constructor inicializa el nuevo objeto de una forma
diferente. Junto al constructor por defecto, la clase Date proporciona otro
constructor que inicializa el nuevo objeto con un nuevo año, mes y dia:
Date cumpleaños = new Date(1963, 8, 30);
El compilador puede diferenciar los constructores a través del tipo y del
número de sus argumentos.
Utilizar Objetos
Una vez que se ha creado un objeto, probablemente querrás hacer algo con él.
Supón, por ejemplo, que después de crear un nuevo rectángulo, quieres moverlo a
una posición diferente (es decir, el rectángulo es un objeto en un programa de
dibujo y el usuario quiere moverlo a otra posición de la página).
La clase Rectangle proporciona dos formas equivalentes de mover el rectángulo:
1. Manipular directamente las variables x e y del objeto.
2. Llamar el método move().
La opción 2 se considera "más orientada a objetos" y más segura porque se
manipulan las variables del objeto indirectamente a través de una capa protectora
de métodos, en vez de manejarlas directamente. Manipular directamente las
variables de un objeto se considera propenso a errores; se podría colocar el objeto
en un estado de inconsistencia. Sin embargo, una clase no podría (y no debería)
hacer que sus variables estuvieran disponibles para la manipulación directa por
otros objetos, si fuera posible que esas manipulaciones situaran el objeto en un
estado de inconsistencia. Java proporciona un mecanismo mediante el que las
clases puede restringir o permitir el acceso a sus variables y métodos a otros
objetos de otros tipos.
Esta sección explica la llamada a métodos y la manipulación de variables que se
han hecho accesibles a otras clases. Para aprender más sobre el control de acceso
a miembros puedes ir Controlar el Acceso a Miembros de una Clase.
Las variables x e y de Rectangle son accesibles desde otras clases. Por eso
podemos asumir que la manipulación directa de estas variables es segura.
Referenciar Variables de un Objeto
Primero, enfoquemos cómo inspeccionar y modificar la posición del
rectángulo mediante la manipulación directa de las variables x e y. La
siguiente sección mostrará como mover el rectángulo llamando al
método move().
Para acceder a las variables de un objeto, sólo se tiene que añadir el
nombre de la variable al del objeto referenciado introduciendo un punto
en el medio ('.').
objetoReferenciado.variable
Supón que tienes un rectángulo llamado rect en tu programa. puedes
acceder a las variables x e y con rect.x y rect.y, respectivamente.
Ahora que ya tienes un nombre para las variables de rect, puedes
utilizar ese nombre en sentencias y expresiones Java como si fueran
nombres de variables "normales". Así, para mover el rectángulo a una
nueva posición podrías escribir:
rect.x = 15; // cambia la posición x
rect.y = 37; // cambia la posición y
La clase Rectangle tiene otras dos variables--widthy height--que son
accesibles para objetos fuera de Rectangle. Se puede utilizar la misma
notación con ellas: rect.width y rect.height. Entonces se puede
calcular el área del rectángulo utilizando esta sentencia:
area = rect.height * rect.width;
Cuando se accede a una variable a través de un objeto, se está
refiriendo a las variables de un objeto particular. Si cubo fuera también
un rectángulo con una altura y anchura diferentes de rect, esta
instrucción:
area = cubo.height * cubo.width;
calcula el área de un rectángulo llamado cubo y dará un resultado
diferente que la instrucción anterior (que calculaba el área de un
rectángulo llamado rect).
Observa que la primera parte del nombre de una variable de un objeto
(el objetoReferenciado en objetoReferenciado.variable) debe ser
una referencia a un objeto. Como se puede utilizar un nombre de
variable aquí, también se puede utilizar en cualquier expresión que
devuelva una referencia a un objeto. Recuerda que el operador new
devuelve una referencia a un objeto. Por eso, se puede utilizar el valor
devuelto por new para acceder a las variables del nuevo objeto:
height = new Rectangle().height;
Llamar a Métodos de un Objeto
Llamar a un método de un objeto es similar a obtener una variable del
objeto. Para llamar a un método del objeto, simplemente se añade al
nombre del objeto referenciado el nombre del método, separados por un
punto ('.'), y se proporcionan los argumentos del método entre
paréntesis. Si el método no necesita argumentos, se utilizan los
paréntesis vacios.
objetoReferenciado.nombreMétodo(listaArgumentos);
o
objetoReferenciado.nombreMétodo();
Veamos que significa esto en términos de movimiento del rectángulo.
Para mover rect a una nueva posición utilizando el método move()
escribe esto:
rect.move(15, 37);
Esta sentencia Java llama al método move() de rect con dos
parámetros enteros, 15 y 37. Esta sentencia tiene el efecto de mover el
objeto rect igual que se hizo en las sentencias anteriores en las que se
moficaban directamente los valores x e y del objeto:
rect.x = 15;
rect.y = 37;
Si se quiere mover un rectángulo diferente, uno llamado cubo, la nueva
posición se podría escribir:
cubo.move(244, 47);
Como se ha visto en estos ejemplos, las llamadas a métodos se hacen
directamente a un objeto específico; el objeto especificado en la llamada
al método es el que responde a la instrucción.
Las llamadas a métodos también se conocen como mensajes. Como en la
vida real, los mensajes se deben dirigir a un receptor particular. Se
pueden obtener distintos resultados dependiendo del receptor de su
mensaje. En el ejemplo anterior, se ha enviado el mensaje move() al
objeto llamado rect para que éste mueva su posición. Cuando se envía
el mensaje move() al objeto llamado cubo, el que se mueve es cubo.
Son resultados muy distintos.
Una llamada a un método es una expresión (puedes ver Expresiones
para más información) y evalúa a algún valor. El valor de una llamada a
un método es su valor de retorno, si tiene alguno. Normalmente se
asignará el valor de retorno de un método a una variable o se utilizará la
llamada al método dentro del ámbito de otra expresión o sentencia.
El método move() no devuelve ningún valor (está declarado como
void). Sin embargo, el método inside() de Rectangle si lo hace. Este
método toma dos coordendas x e y, y devuelte true si este punto está
dentro del rectángulo. Se puede utilizar el método inside() para hacer
algo especial en algún punto, como decir la posición del ratón cuando
está dentro del rectangulo:
if (rect.inside(mouse.x, mouse.y)) {
. . .
// ratón dentro del rectángulo
. . .
} else {
. . .
// ratón fuera del rectángulo
. . .
}
Recuerda que una llamada a un método es un mensaje al objeto
nombrado. En este caso, el objeto nombrado es rect. Entonces:
rect.inside(mouse.x, mouse.y)
le pregunta a rect si la posición del cursor del ratón se encuentra entre
las coordenadas mouse.x y mouse.y. Se podría obtener una respuesta
diferente si envía el mismo mensaje a cubo.
Como se explicó anteriormente, el objetoReferenciado en la llamada al
método objetoReferenciado.método() debe ser una referencia a un
objeto. Como se puede utilizar un nombre de variable aquí, también se
puede utilizar en cualquier expresión que devuelva una referencia a un
objeto. Recuerda que el operador new devuelve una referencia a un
objeto. Por eso, se puede utilizar el valor devuelto por new para acceder
a las variables del nuevo objeto:
new Rectangle(0, 0, 100, 50).equals(anotherRect)
La expresión new Rectangle(0, 0, 100, 50) evalúa a una referencia a
un objeto que se refiere a un objeto Rectangle. Entonces, como verás, se
puede utilizar la notació de punto ('.') para llamar al método equals()
del nuevo objeto Rectangle para determinar si el rectangúlo nuevo es
igual al especificado en la lista de argumentos de equals().

No hay comentarios:

Publicar un comentario