Resultados 1 al 3 de 3

Tema: Clases e Interfaces - Nivel básico Java SE



  1. #1
    Chapuzillas Junior Avatar de FuRRRaira
    Fecha de ingreso
    13 feb, 19
    Mensajes
    28
    Agradecido: 7

    Question Clases e Interfaces - Nivel básico Java SE

    Buenas, tengo una duda sobre clases e interfaces.

    Tengo un programa con dos clases y dos interfaces (lo puedes ver en el código que muestro, aunque he omitido las interfaces para que se entienda mejor lo que voy a preguntar), una clase implementa una interfaz y la otra clase implementa la otra interfaz.

    El constructor de la clase CongPersonasImpl crea un objeto de tipo AccesoDatoImpl, y lo utiliza para inicializar la variable denominada dato (de tipo interfaz AccesoDato) de la clase CongPersonasImpl.

    De tal forma que cuando creamos un objeto de tipo CongPersonasImpl se crea también otro objeto de tipo AccesoDatoImpl que se recibe como atributo (denominado dato) del objeto CongPersonasImpl.

    Y utilizaremos el atributo denominado dato para llamar desde la clase CongPersonasImpl a los métodos de la clase AccesoDatoImpl, o a los métodos de cualquier clase que implemente la interfaz AccesoDato.

    --------------------------------------------------------------------------------------------------------------------------------

    package datos;

    public class AccesoDatoImpl implements AccesoDato {

    //Implementa los métodos de la interfaz AccesoDato
    }


    package negocio;
    import datos.*;

    public class CongPersonasImpl implements CongPersonas{

    private final AccesoDato dato;

    public CongPersonasImpl() {
    this.dato = new AccesoDatoImpl();
    }

    //Implementa los métodos de la interfaz CongPersonas
    }


    package principal;
    import negocio.*;

    public class Principal {

    private static final CongPersonas congPer = new CongPersonasImpl();

    public Static void main(String[] args) {
    //Utilizamos la variable congPer para acceder a los métodos de la clase CongPersonasImpl
    }
    }

    --------------------------------------------------------------------------------------------------------------------------------

    Entonces me surgen dos preguntas que no consigo responder:
    ¿de qué nos puede servir crear un objeto de una clase al momento de crear un objeto de otra clase?
    ¿y de qué nos puede servir utilizar un objeto como argumento de otro objeto?

    Saludos!
    F
    Última edición por FuRRRaira; 26/11/2019 a las 19:43 Razón: Indentar, espaciar, añadir blancos

  2. #2
    Chapuzillas apunto de evolucionar en... Avatar de Moebius
    Fecha de ingreso
    11 dic, 17
    Mensajes
    213
    Agradecido: 86
    1.- Lo que para mí tiene más sentido es pasar una instancia por constructor. Pasas al constructor un objeto que quieres que esté instanciado dentro de tu nuevo objeto. Creo que es mejor así porque tú controlas en todo momento qué objeto le inyectas, mucho mejor que crear un objeto a pelo en el constructor.

    Esto se ve mucho en la inyección de dependencias, cuando por ejemplo un Servicio recibe por constructor un objeto de tipo Repositorio para acceder a los datos que es el que usará para acceder y escribir información. Además, este objeto será de tipo interfaz, pudiendo pasar cualquier objeto que implemente esa interfaz por si hay casos más específicos de repositorio a tener en cuenta que no tengas que reescribir la clase y simplemente te crees tu nuevo tipo de Repositorio y se lo inyectes por constructor a tu Servicio.

    2.- Aunque creo que he respondido arriba, otro ejemplo de recibir objetos en el constructor es el uso del Decorator Pattern. También puedes tener una clase hija que herede de una clase padre y uno de los constructores de la clase hija reciba un objeto de la clase padre más el resto de atributos con los que ha de ser instanciada.

    No sé si te he ayudado.
    «Vivir es morir d e s p a c i o.»

  3. Los siguientes usuarios han agradecido a Moebius su comentario:


  4. #3
    Chapuzillas Junior Avatar de FuRRRaira
    Fecha de ingreso
    13 feb, 19
    Mensajes
    28
    Agradecido: 7
    Muchas gracias Moebius! Clases e Interfaces - Nivel básico Java SE Me has ayudado bastante.


    Muy interesante el tema de pasar por parámetro un objeto de tipo interfaz al constructor, ahora estoy escribiendo un programa de ejemplo para aclararme las ideas sobre ese tema ya que no lo tengo muy claro.

    Aunque aún me falta por ver el tema de bases de datos o repositorios (justo es lo próximo que me toca), así que voy a estar unos días estudiando las bases de datos. Luego completaré el programa de ejemplo que estoy haciendo ahora incluyendo la parte de la base de datos, y lo mostraré por aquí.


    Cuando termine te comento, a ver si por fin consigo aclararme... Clases e Interfaces - Nivel básico Java SE

Etiquetas para este tema

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  

Hacemos uso de cookies propias y de terceros para proporcionar una mejor experiencia de usuario. Al seguir navegando entendemos que acepta nuestra Más información .

Aceptar