top of page

Trabajar con Objetos

     Al fin hemos llegado a la clase de trabajar con objetos, en donde vamos a profundizar en como trabajar con objetos, en esta clase va mos a aprender a como trabajar con objetos tambien llamados instancias y como modificarlas como llamar a metodos de objetos y como convertir objetos y otros tipos de datos entre clases.

 

     Hasta donde hemos visto del curso ya tendriamos que saber que cuando creamos un programa en  java lo que estamos haciendo realmente es crear un conjunto de clases y este programa puede ser tan grande como nosotros los queramos hacer, creo que la mejor manera de definir un objeto sería con la palabra selfcontent, que en español significa autocontenido, en nuestro último ejemplo teniamos el ejemplo de los altavoces del reproductor de radio, yun altavoz puede funcionar por si solo cuando realmente no tiene demasiado sentido un altavoz cuando no tenemos por ejemplo la radio y muchas veces lo que nosotros hemos hecho en muchas ocasiones ha sido crear una clase solo para crear una instancia (objeto) de esa clase para poder utilizar lso métodos y variables que contenía esta clase por ellos, hoy vamos a profundizar bastante en como crear los objetos y como utilizarlos.

 

     Al principio del curso el primer objeto que creamos fueron los String y comenzamos pro crearlos directamente a la hora de imprimirlos en pantalla de este modo.

 

System.out.println("Hola, ¿que tal?");

 

     Pero deciamos que este era un uso especial de estos objetos y deciamos que los estabamos creando de modo implicito, pero tambien deciamos que lo podíamos crear de otro modo al que lo llamabamos de modo explicito.

 

String saludo = new String("Hola, ¿que tal?");

 

     Y esto lo volvemos a explicar porque la forma mas común de crear un objeto es a traves de la palabra clave new, asi que para crear un nuevo objeto es con el operador new segudo del nombre de la clase que ha tenido que ser utilizado como plantilla para crear el objeto al que siempre le seguirá  los paréntesis, tal y como podemos observar en estos ejemplos.

 

String nombre = new String ( );

URL url1 = new URL( "https://www.google.es/" )

DanteRobot 2r2 = new DanteRobot ( );

Random numrandom = new Random ( );

Point punto = new Point ( 2, 2 );

 

NOTA: Los parentesis son importantes, las comillas no.

NOTA: Los parentesis pueden estar vacios o no.

NOTA: Recuerda que en la primera parte de la expresión lo que estamos haciendo en crear una variable donde guardaremos un valor.

 

Vamos ahora con nuestro primer ejemplo práctico en esta clase, utilizaremos una librería de clases de java se trata de la clase llamada StringTokenizer del paquete java.util, esta clase nos permite dividir un String en String mas cortos utilizando un caracter como delimitador, lo que hará esta clase es lo que se muestra en pantalla.

 

StringTokenizer st = new StringTokenizer ( "This is a test" );

while (st.hasMoreTokens () ) {

    System.out.println(st.nextToken () )

}

 

Resultado:

 

This

is

a

test

 

Esta clase usa por defecto el caracter espacio que es el que hemos utilizado nosotros, pero tambien el retorno de linea, salto de linea, etc... pero tambien nos permite a nosotros definir que caracter queremos que utilice que eso es justo lo que vamos ha hacer ahora mismo.

 

import java.util.StringTokenizer;

 

class ProbarToken {

    public static void main (String [ ] args) {

 

        StringTokenizer st1, st2;

        String cita1 = "TEXTO 6 -3/4";

 

        st1 = new StringTokenizer (cita1);

        Syrtem.out.println ("Token1 " + st1.nextToken () );

        Syrtem.out.println ("Token2 " + st1.nextToken () );

        Syrtem.out.println ("Token3 " + st1.nextToken () );

 

        String cita2 = "DSGR@9 32/ 25@2/17";

        st2 = new StringTokenizer (cita2, "@");

        Syrtem.out.println ("\nToken1 " + st2.nextToken () );

        Syrtem.out.println ("Token2 " + st2.nextToken () );

        Syrtem.out.println ("Token3 " + st2.nextToken () );

 

    }

}

 

run:
Token 1: TEXTO
Token 2: 6
Token 3: -3/4

 

Token 1: DGSR
Token 2: 9 32/ 25
Token 3: /17
GENERACIÓN CORRECTA (total time: 0 seconds)

 

 

En este ejemplo en la primera parte del programa lo que hemos hecho ha sido utilizar el caracter por defecto del espacio, y en la segunda parte lo que hemos hecho ha sido utilizar el caracter delimitador que nosotros mismo le hemos indicado.

 

 

¿Qué hace la palabra new?

 

1º Crea una nueva instancia de la clase ndicada.
2º Localiza espacio en la memoria para el nuevo objeto.
3º Llama a un método especial llamado constructor.

 

 

Y entonces, que es un controctor, pues un constructor no es ni mas ni menos que un método especial que lo que hace es inicializar una nueva instancia, y aqui resumimos nuevamente lo que hace el metodo constructor:

 

1º Inicializa el nuevo objeto y sus variables.
2º Crea cualquier otro objeto que el objeto necesite.
3º Ejecuta todas las operaciones que el objeto necesite para inicializarse.
4º Distintas definiciones del constructor pueden tener distintos argumentos.

 

 

     Una vez llegados hasta aqui, hay una cosa bastante importante que hemos de saber, y es cómo llamar a las variables que están dentro de las clases y métodos de java al utilizarlos, en este ejemplo que mostramos a continuación vemos cómo igualar una variable creada por nosotros de tipo float a una variable de clase a traves de un objeto de esa clase llamado objeto1.

 

float total = objeto1.PuntuacionTotal;

 

 

     Esta forma de acceder a una variable es una expresión, por lo tanto podemos anidar varias expresiones, por ejemplo, pongamos que la variable PuntuacionTotal contuviese un objeto dentro suya, y dentro de ese objeto tendria otra variable, como por ejemplo la variable aprobado, pues para referirnos a esta variable sería colocar.

 

boolean aprobado = objeto1.PuntuacionTotal.aprobado.

 

 

Ahora vamos a crear una nueva practica, en este caso vamos a utilizar la clase Point y vamos a crear una clase llamada ConfigurarPunto, y vamos a crear un nuevo objeto de la clase Point llamado localizacion y le vamos a asignar unas coordenadas 4, 13, este es el código.

 

import java.awt.Point;
class ConfigurarPunto{
    public static void main(String[]args){
        Point localizacion = new Point (4, 13);
        System.out.println("Empezar Localización: ");
        System.out.println("X igual a: " + localizacion.x);
        System.out.println("Y igual a: " + localizacion.y);
        
        System.out.println("\nMoviendolo a (7, 6)");
        localizacion.x = 7;
        localizacion.y = 6;
        
        System.out.println("\nLocalización Final: ");
        System.out.println("X igual a: " + localizacion.x);
        System.out.println("Y igual a: " + localizacion.y);
        
    }
}

 

 

run:
Empezar Localización:
X igual a: 4
Y igual a: 13

 

Moviendolo a (7, 6)

 

Localización Final:
X igual a: 7
Y igual a: 6
GENERACIÓN CORRECTA (total time: 0 seconds)

 

 

 

     Y ahora procedemos a explicar que es lo que hemos hecho, lo que hemos hecho a sido primero importar la clase point contenida en el paquete java.awt, creamos un metodo main para que el programa lo pueda buscar, detectar y ejecutar, luego, estamos creando un objeto llamado localizacion de la clase Point y le estamos indicando originalmente unas variables x = 4, y = 13 y despues estamos imprimiendo el valor de la variable x, y, en pantalla gracias a nuestro objeto localizacion, para lo que hemos tenido que poner, el nombre del objeto, sintaxis de punto y el nombre de la variable al que nos queramos referir, en este caso las variables són x e y, despues hemos cambiado el valor de las variables x e y a 7 y 6 y los hemos imprimido en pantalla.

 

 

     Como ya sabemos o como al menos ya tendriamos que saber a parte de las variables normales tambien existen las variables de clase que podemos definir poniendo la palabra clave static antes de comenzar a definir la variable tal y como se muestra a continuación:

 

class MiembrosFamilia {

    public static void main (String [ ] args) {

 

        static String apellido = "Gonzalez";

    }

}

 

 

     No obstante, de estas variables solo existe una copia por lo que cualquier cambio que se haga en esta, quedará reflejado en todas los objetos y métodos, habiendo una variable de tipo static, no pueden existir dos variables con el mismo nombre y valores diferentes. A parte de referirnos a las variables de clase a traves de un objeto que hayamos crreado de esa clase tambien podemos llamar a esa variable a traves del nombre de la clase que de hecho es aconsejable por que en muchos de los casos puede llevar a numerosas confusiones a la hora de escribir código, aqui teneis un ejemplo:

 

MiembrosFamilia padre = new MiembrosFamilia ();

System.out.println("El apellido es: " + padre.apellido);

System.out.println("El apellido es: " + MiembrosFamilia.apellido);

 

 

     Para llamar a los metodos es de una maneramuy similar a la manera en la que llamamos a las variables, primero tenemos que colocar el nombre de nuestro objeto de esa clase o directaente el nombre de la clase en la que se encuentra el método, recordar que si en el método se han de definir parametros a las variables, tendremos que hacerlo, que antes de que veamos las sobrecargas de los metodos y demas, os diré que esa es la forma en la que se distingue a un método de otra, veamoslo.

 

NombreClase.CrearOrden (variable1, variable2, variable3);

NombreObjeto.CrearOrden (variable1, variable2, variable3);

 

 

NOTA: Los parentesis son obligatorios tengan o no argumento en su interior.

 

 

Ahora vamos a crear un nuevo programa que nos permitapracticar con los metodos de una clase, vamos a usar especialmente la clase String.

 

class ResolverStrings {
    public static void main (String [ ] args) {
        String str = "La estupidez insiste siempre";
        
        System.out.println( "El String es: " + str);
        System.out.println( "\nEl tamaño del String es: " + str.length());
        System.out.println( "\nEl caracter de la posicion 5 es: " + str.charAt(5));
        System.out.println( "\nEl substring del 3 al 12 es: " + str.substring(3, 12));
        System.out.println( "\nEl Index del caracter z es: " + str.indexOf("z"));
        System.out.println( "\nEl string en mayusculas es: " + str.toUpperCase());
    }
}

 

run:
El String es: La estupidez insiste siempre

 

El tamaño del String es: 28

 

El caracter de la posicion 5 es: t

 

El substring del 3 al 12 es: estupidez

 

El Index del caracter z es: 11

 

El string en mayusculas es: LA ESTUPIDEZ INSISTE SIEMPRE
GENERACIÓN CORRECTA (total time: 0 seconds)

 

 

Aqui,bueno, ya tendrias que saber que es lo que hemos hecho aqui, hemos utilizado los metodos de la clase String que ya los hemos utilizado en clases anteriores.

bottom of page