OBJETOS PROPIOS DEL LENGUAJE JAVA:
Hasta el
momento, todos los objetos que ha usado a la hora de programar en Java, han
sido objetos incluidos en el propio lenguaje, que se encuentran disponibles
para que el programador los use en sus programas.
Estos objetos son: las etiquetas
(JLabel), botones (JButton), los cuadros de texto (JTextField), cuadros de
verificación (JCheckBox), botones de opción (JRadioButton), colores (Color), imágenes de icono (ImageIcon),
modelos de lista (DefaultListModel), etc..
Todos estos
objetos, por supuesto, pertenecen cada uno de ellos a una Clase:
Las etiquetas son objetos de la
clase JLabel, los botones son
objetos de la clase JButton, etc.
Todos estos
objetos tienen propiedades que pueden ser cambiadas en la ventana de diseño:
Ancho, alto, color, alineación,
etc.
Aunque también
poseen métodos que nos permiten cambiar estas propiedades durante la ejecución
del programa:
setText cambia
el texto del objeto, setBackground
cambia el color de fondo del objeto, setVisible
hace visible o invisible al objeto, setBounds
cambia el tamaño y la posición del objeto, etc.
En cualquier
momento le podemos pedir a un objeto que nos dé información sobre sí mismo
usando los métodos get:
getText
obtenemos el texto que tenga el objeto, getWidth
obtenemos la anchura del objeto, getHeight
obtenemos la altura del objeto, etc.
Los objetos son
como “pequeños robots” a los que se les puede dar órdenes, usando los métodos
que tienen disponible.
Por ejemplo, le podemos decir a un
objeto que se pinte de nuevo usando el método repaint, podemos ordenarle a un cuadro de texto que coja el cursor,
con el método grabFocus, etc.
Todos estos
objetos, con sus propiedades y métodos, nos facilitan el desarrollo de nuestros
programas. Pero a medida que nos vamos introduciendo en el mundo de la
programación y nos especializamos en un tipo de programa en concreto, puede ser
necesario la creación de objetos propios, programados por nosotros mismos, de
forma que puedan ser usados en nuestros futuros programas.
OBJETOS PROPIOS:
A la hora de
diseñar un objeto de creación propia, tendremos que pensar qué propiedades debe
tener dicho objeto, y qué métodos serán necesarios para poder trabajar con él.
Dicho de otra forma, debemos pensar en qué características debe tener el objeto
y qué órdenes le podré dar.
Para crear
objetos propios hay que programar la Clase del objeto. Una vez programada la
Clase, ya podremos generar objetos de dicha clase, declarándolos y construyéndolos
como si de cualquier otro objeto se tratara.
A continuación
se propone un caso práctico de creación de objetos propios, con el que
trabajaremos en las próximas entradas.
Lo que viene a
continuación es un planteamiento teórico de diseño de una Clase de Objetos.
CASO PRÁCTICO: CINES “AMANUVA”:
Planteamiento:
La empresa Cines
“AMANUVA” nos encarga desarrollar un programa para facilitar las distintas
gestiones que se realizan en dichos cines.
Cines “AMANUVA” cuenta
con varias salas, y cada una de ellas genera una serie de información. Para
facilitar el control de la información de cada sala programaremos una Clase de
objeto a la que llamaremos SalaCine.
La Clase SalaCine:
La Clase SalaCine
definirá características de una sala de cine, y permitirá crear objetos que
representen salas de cine. Cuando la clase SalaCine esté programada, se podrán
hacer cosas como las que sigue:
Los Cines
“AMANUVA” tienen una sala central
donde se proyectan normalmente las películas de estreno. Se podría crear un
objeto llamado salaCentral de la clase SalaCine de la siguiente forma:
SalaCine salaCentral;
Por supuesto,
este objeto puede ser construido como cualquier otro:
salaCentral =
new SalaCine();
El objeto salaCentral
representará a la sala de cine central de los Cines “AMANUVA”.
Los Cines
“AMANUVA” tienen otra sala secundaria donde proyectan películas clásicas. Se
podría crear un objeto llamado salaSecundaria de la clase SalaCine de la siguiente forma:
SalaCine salaSecundaria; //declaración
salaSecundaria =
new SalaCine(); //construcción
Propiedades de los objetos de la clase SalaCine:
A la hora de
decidir las propiedades de un objeto de creación propia, tenemos que
preguntarnos, ¿qué información me interesa almacenar del objeto? Trasladando
esta idea a nuestro caso práctico, ¿qué información me interesaría tener de
cada sala de cine?
Para este
ejemplo supondremos que de cada sala de cine nos interesa tener conocimiento de
las siguientes características (propiedades):
-
aforo: define
el número de butacas de la sala (un número entero).
-
butacasOcupadas: define
el número de butacas ocupadas (un número entero).
- tituloPelicula: define
el título de la película que se está proyectando en determinado momento en la
sala (una cadena de texto).
-
precioEntrada: define
el precio de la entrada a sala de cine (un número double).
Valores por defecto de las propiedades de los
objetos de la clase SalaCine:
Cuando se
construye un objeto, se asignan unos valores por defecto a sus propiedades. Por
ejemplo, cuando se construye una etiqueta (Clase JLabel), esta tiene un tamaño
inicial definido, un color, etc.
Lo mismo se
tiene que hacer con los objetos propios que definimos. Es necesario decidir qué
valores tendrá las propiedades del objeto al construirse.
En nuestro caso,
las características de un objeto de la clase SalaCine en el momento de
construirse serán las siguientes:
aforo: 100
butacasOcupadas: 0
tituloPelicula: “” (cadena vacía)
precioEntrada: 5.00
Observa este
código, en él construimos el objeto correspondiente a la sala central de Cines
“AMANUVA”:
SalaCine
salaCentral;
salaCentral =
new SalaCine();
En este momento
(en el que el objeto salaCentral está recién construido)
este objeto tiene asignado un aforo de 100, el número de butacas ocupadas es 0,
el título de la película que se proyecta en la sala central es “” y el precio
de la entrada para esta sala es de 5.00 euros.
Los valores por
defecto que se asignan a los objetos de una clase son valores arbitrarios que
el programador decidirá según su necesidad.
Métodos de los objetos de la clase SalaCine:
Para
comunicarnos con los objetos de la Clase SalaCine que construyamos, tendremos
que disponer de un conjunto de métodos que nos permitan asignar valores a las
propiedades de los objetos, recoger información de dichos objetos y que le den
órdenes al objeto.
Será el
programador el que decida qué métodos le interesará que posea los objetos de la
Clase que está programando.
Para nuestro
caso particular, supondremos que los objetos de la Clase SalaCine deberán tener
los siguientes métodos:
Métodos
de cambio de propiedades (Métodos set):
setAforo -
asignará un aforo a la sala de cine
setButacasOcupadas -
asignará una cantidad de butacas ocupadas a la sala de cine
setButacasLibres - asignará
una cantidad de butacas libres a la sala de cine
setTituloPelicula - asignará
un título de película a la sala de cine
setPrecioEntrada - fijará el
precio de las entradas a la sala de cine
Gracias a estos
métodos podemos dar forma a un objeto de la clase SalaCine recién creado.
Por ejemplo,
supongamos que queremos crear el objeto que representa la sala secundaria de películas
clásicas. Resulta que esta sala tiene un aforo de 50 localidades, que se está
proyectando la película “El Club de la Pelea” y que la entrada para ver la
película es de 3.0 euros. La sala está vacía de momento.
Para crear el
objeto, se usaría el siguiente código:
//Se
construye el objeto
SalaCine salaSecundaria;
salaSecundaria = new SalaCine();
//Se
le asignan características
salaSecundaria.setAforo(50); //aforo 50
salaSecundaria.setPelicula(“El Club de la Pelea”); //la película que se proyecta
salaSecundaria.setEntrada(3.0); //entrada a 3.0 euros
Al construir el
objeto salaSecundaria tiene por defecto los valores siguientes en sus
propiedades:
aforo: 100
butacasOcupadas: 0
tituloPelicula: “”
precioEntrada: 5.00
Gracias a los
métodos disponibles hemos asignados estos nuevos valores:
aforo: 50
butacasOcupadas: 0
tituloPelicula: “El
Club de la Pelea”
precioEntrada: 3.0
Métodos para pedirle información al objeto (Métodos
get):
Se programarán
los siguientes métodos get en la clase SalaCine:
getAforo -
devuelve el aforo que tiene el objeto
getButacasOcupadas -
devuelve el número de butacas ocupadas que tiene el objeto
getButacasLibres - devuelve
el número de butacas que tiene libres el objeto
getPorcentajeOcupacion -
devolverá el porcentaje de ocupación de la sala
getIngresosSala -
devolverá los ingresos producidos por la sala (‘entradas vendidas’ multiplicadas
el precio)
getTituloPelicula - devolverá
el título de la película que se está proyectando
getPrecioEntrada - devolverá
el precio de la entrada asignado al objeto
Estos métodos
nos permitirán obtener información de un objeto del tipo SalaCine. Por ejemplo,
supongamos que tenemos el objeto llamado salaCentral (correspondiente a la
sala principal de Cines “AMANUVA”),
para obtener el título de la película que se está proyectando en dicha sala
solo habría que usar este código:
String tituloPelicula; //una variable de cadena
tituloPelicula =
salaCentral.getTituloPelicula();
Para saber los
ingresos producidos por la sala central se usará este código:
double ingresos;
ingresos = salaCentral. getIngresosSala ();
Métodos para dar órdenes al objeto:
Se programarán
los siguientes métodos para dar órdenes a los objetos de la clase SalaCine.
vaciarSala
-
Este método pondrá el número de plazas ocupadas a
cero y le asignará a la película la cadena vacía.
entraUno
-
Este método le dice al objeto que ha entrado una
nueva persona en la sala. (Esto debe producir que el número de plazas ocupadas
aumente en uno).
Resumen SalaCine
He aquí un
resumen de la Clase de objetos SalaCine, la cual se programará en
la próxima entrada de este blog:
Clase de
objetos: SalaCine
Propiedades de
los objetos SalaCine:
aforo - número entero (int)
butacasOcupadas - número entero (int)
tituloPelicula - cadena (String)
precioEntrada - número decimal (double)
Valores por
defecto de los objetos del tipo SalaCine:
aforo: 100
butacasOcupadas: 0
tituloPelicula: (cadena vacía)
precioEntrada: 5
Métodos de los
objetos del tipo SalaCine:
Métodos de asignación de propiedades
(set)
setAforo - modifica la propiedad Aforo
setButacasOcupadas -
modifica la propiedad butacasOcupadas
setButacasLibres - modifica
la propiedad butacasOcupadas también
setTituloPelicula - modifica
la propiedad tituloPelicula
setPrecioEntrada - modifica la propiedad precioEntrada
Métodos de petición de información
(get)
getAforo -
devuelve el valor de la propiedad aforo
getButacasOcupadas -
devuelve el valor de la propiedad butacasOcupadas
getButacasLibres - devuelve
el número de butacas libres
getPorcentajeOcupacion -
devuelve el porcentaje de ocupación de la sala
getIngresosSala - devuelve
los ingresos obtenidos por la venta de entradas
getTituloPelicula - devuelve
el valor de la propiedad tituloPelicula
getPrecioEntrada - devuelve
el valor de la propiedad precioEntrada
Métodos de orden
vaciarSala - vacía la ocupación de la
sala y borra el título de la película
entraUno - le indica al objeto que
ha entrado una persona más en la sala
EJERCICIO PRÁCTICO
Supongamos que
programamos una Clase de objetos llamada Rectangulo,
la cual permitirá construir objetos que representen a rectángulos.
- ¿Cómo declararía y construiría un objeto
llamado suelo del tipo Rectangulo?
- Supongamos que las propiedades de los objetos
de la clase Rectangulo sean las
siguientes:
- Base (double)
- Altura (double)
¿Qué métodos de tipo set
programaría para cambiar las propiedades de los objetos del tipo Rectangulo?
- Como ejemplo de los métodos anteriores,
suponga que quiere asignar al objeto suelo
una base de 30 y una altura de 50. ¿Qué código usaría?
- Teniendo en cuenta que nos puede interesar
conocer el área de un objeto Rectangulo
y su perímetro, y teniendo en cuenta que los objetos Rectangulo tienen dos propiedades (Base y Altura), ¿qué cuatro
métodos get serían interesantes
de programar para los objetos del tipo Rectangulo?
- Teniendo en cuenta los métodos del punto 4.
Supongamos que quiero almacenar en una variable double llamada area el área del objeto suelo. ¿Qué código usaría? Y si
quiero almacenar el perímetro del objeto suelo en una variable llamada peri?
CONCLUSIONES:
Para crear un objeto propio, necesita tener claro
lo siguiente:
Nombre de la
Clase del objeto.
Propiedades que
tendrán los objetos de dicha clase.
Valores
iniciales que tendrán las propiedades cuando se construya cada objeto.
Métodos que
serán interesantes de programar:
Métodos
de ajuste de propiedades (set)
Métodos
de petición de información (get)
Métodos
de orden
Una vez que se tenga claro lo anterior, se podrá
empezar la programación de la Clase de objetos.
No hay comentarios.:
Publicar un comentario