Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

DUDA INSTANCIACION DE OBJETOS

Buenos dias,

En el siguiente codigo:


public class CuentaDos {

    double saldo;

    int agencia;

    int numero;

    ClienteDos titular;


}

public class Cliente {

    String nombre;
    String numeroIdentidad;
    String profesion;

}

public class PruebaInstanciarClases {

    public static void main(String[] args) {

        CuentaDos cuenta = new CuentaDos();

        cuenta.titular = new ClienteDos();

        System.out.println(cuenta);

        System.out.println(cuenta.titular);

        cuenta.titular.nombre = "Juan";

        System.out.println(cuenta.titular.nombre);


    }

}

se aprecia que se pueden inicializar y/o modificar y/o imprimir los atributos del objeto "titular" dentro de la clase "CuentaDos" - o debo decir dentro del objeto "cuenta" - pero no puedo inicializar y/o modificar y/o imprimir en forma directa los atributos de la clase "Cliente" ya que no he instanciado esta clase haciendo por ejemplo "Cliente cliente = new Cliente()" ¿es correcta esta afirmación? Y en ese caso hacer "System.out.println(cuenta.titular.nombre)" debería imprimir lo mismo que "System.out.println(cliente.nombre)" ¿es correcto?. En ese caso la duda que me surge es si no es mas adecuado instanciar la clase Cliente previamente en vez de hacer "cuenta.titular = new ClienteDos();" y manejarme directamente con los objetos instanciados, haciendo:

ClienteDos cliente = new ClienteDos();

cuenta.titular = cliente;

Aprovecho para consultar: ¿el tipo del objeto esta dado por el nombre que le dí a la clase al crearla -por ejemplo "ClienteDos"? ¿en que casos el nombre del tipo de objeto es diferente del nombre de la clase al instanciarla con un new - ejemplo "new ClienteDos()?.

Apreciare cualquier orientacion que puedan brindarme.

¡Gracias!

Saludos!

2 respuestas
solución!

Hola Alumno, cómo estás?

Gracias por compartir tu duda en el foro.

Vamos por partes, para poder modificar o acceder a los atributos de los objetos utilizamos métodos Getters/Setters, es la mejor forma de manejar la información de los atributos de nuestras clases.

Cuando hablamos de Instanciar una clase hacemos referencia a la creación de un objeto de dicha clase, por ende, si nosotros no creamos ese objeto no podemos realizar ninguna operación, debemos crear una instancia y a partir de eso, ya podemos trabajar con ese objeto.

Podemos trabajar con diferentes clases, por ejemplo, si tengo una clase llamada Perro y tengo otra clase más general que se llama Animales, podría instaciar la clase Perro en la clase Animales, eso depende del tipo de proyecto y las necesidades del programador/proyecto.

Generalmente para imprimir información de cada clase se realiza una sobreescritura del método toString y modificamos el return para que imprima la información que querramos/necesitemos.

Recomiendo seguir avanzando y vas a ir viendo todos esos conceptos a lo largo del programa.

Espero haberte podido ayudar, saludos.

Si tienes alguna duda sobre el contenido de los cursos, estaremos aquí para ayudarte.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

¡Hola Alumno! Espero te encuentres bien.

Para complementar la información proveída por Luis, quiero hacer un breve alcance.

¿Recuerdas los tipos de datos primitivos? Sí, esos como int, double, float, String, etc... Pues bien, cuando creas una clase y posteriormente la instancias, es decir, creas un objeto de esa clase, lo que estás haciendo es crera un tipo de dato no primitivo.

Entonces, si creas por ejemplo la clase Gato, y posteriormente en otra clase la instancias con la instrucción:

Gato garfield = new Gato();

Entonces efectivamente estás definiendo un objeto cuyo tipo de dato es Gato. Ese objeto llamado garfield tendrá sus métodos y atributos que podrás usar tal cual has utilizado los métodos y atributos de otros tipos de datos primitivos, como por ejemplo String.

Cuando voy a crear un String, ¿Qué hacemos precisamente?

String nombre = "Jorge Salgado";

Pues bien, básicamente lo que hice allí fue crear un objeto de tipo String llamado nombre, y le estoy pasando un texto que será asignado a un atributo de la clase String a través de su constructor.

Si te preguntas porqué no hemos creado ese objeto como el resto de los objetos, es decir;

String nombre = new String();

Pues bien, es porque la clase String es un tanto... Especial. De hecho, es una clase estática y por lo tanto en realidad no se puede instanciar, y tiene otras particularidades que no vienen al caso en este minuto.