Código de Java - interface Plantilla<R>{} Uso de plantillas en Java

Imágen de perfil
Val: 509
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

interface Plantilla<R>{} Uso de plantillas en Javagráfica de visualizaciones


Java

estrellaestrellaestrellaestrellaestrella(8)
Publicado el 20 de Junio del 2018 por Rafael Angel
2.611 visualizaciones desde el 20 de Junio del 2018
plantilla
Este ejemplo no trae gran funcionalidad, solo son clases bacias para ejemplificar el uso de plantillas al estilo C++.
O sea objeto <R>....
Esto permite crear una interface, por ejemplo el famoso registro que tiene agregar, eliminar, modificar, buscar, reporte, getId, getEncontrado, entre muchos otros.
Si creas varios modelos: Productos, clientes, usuarios...
Y quieres crear un registro para cada uno, pero los objetos a devolver son por ejemplo objetos, usuario, objetos cliente, los cuales descienden del interface Persona.
Pero cada uno de ellos en su interior tienen diferentes propiedades propias, las cuales no tiene la interface Persona.
Se necesitaría volver a recrear los objetos internos del registro por cada modelo, o sea el modelo Cliente, tendría un Rs que al buscar devuelva un objeto cliente y el objeto Usuario tendría un Rs cuyo buscador devolvería un objeto Usuario al encontrar la información.
Para no tener que reprogramar una y otra vez la estructura de los Registros (Rs) es mejor crear una interface genérica.
En una futura publicasion, bueno cuando salga de los apuros de la Universidad y disponga de más tiempo libre, realizaré un proyecto completamente funcional usando esta técnica, para que quedé más claro.
Por ahora es más facil de comprender y asimilar si lo publico asi.

Requerimientos

NetBeans y tener amor a la programación.

1.0
estrellaestrellaestrellaestrellaestrella(8)

Publicado el 20 de Junio del 2018gráfica de visualizaciones de la versión: 1.0
2.612 visualizaciones desde el 20 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Esta version no tiene gran funcionalidad, la intencion es solo ejemplificar el uso de genericos o como se dice en lenguajes como C++, el uso de plantillas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/**
 * interface generica o plantilla.
 * Esto permitirá crear una interface con los metodos más usados en programacion e implementarlos de la siguiente manera...
 * @author Rafael Angel Montero Fernpandez.
 * @param <R> Para meterle cualquier objeto.
 */
interface Plantilla<R>
{
    public R nuevo(int i);
 
    public void agregar(R nuevo);
 
    public void eliminar(R nuevo);
 
    public int size();
 
    public R buscar(R nuevo);
 
    public R modificar(R nuevo);
 
    public R getReporte();
}
 
/**
 * Permite inicializar nuevos objetos, en este ejemplo serian objetos llamados Modelo.
 * Ademas
 * @author Rafael Angel Montero Fernpandez.
 */
class Factoria_de_clases implements Plantilla<Modelo>
{
 
    /**
     * Procedimiento factoria o fabricador.
     * Fabrica nuevos objetos class.
     * @param i Para usarse como contador.
     * @return Retorna un nuevo class inicializado.
     */
    @Override
    public Modelo nuevo(int i) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
 
    @Override
    public void agregar(Modelo nuevo) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
 
    @Override
    public void eliminar(Modelo nuevo) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
 
    @Override
    public int size() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
 
    @Override
    public Modelo buscar(Modelo nuevo) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
 
    @Override
    public Modelo modificar(Modelo nuevo) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
 
    @Override
    public Modelo getReporte() {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
 
}
 
/**
 * Class usado para tal ejemplo.
 * No se usaron set get para simplificar el ejemplo.
 * Pero más adelante se creará un proyecto completo con esta tecnica.
 * @author Rafael Angel Montero Fernpandez.
 */
class Modelo
{
    public String nombre="", descripcion="";
    public int valor=0;
 
    public Modelo(String nuevo_nombre, String nueva_descripcion, int nuevo_valor)
    {
        nombre=nuevo_nombre;
        descripcion=nueva_descripcion;
        valor=nuevo_valor;
    }
}
 
/**
 * Conclusiones:
 * Esta tecnica permite ampliar más las habilidades de programacion ademas, que permite acelerar la creacion de programas.
 */



Comentarios sobre la versión: 1.0 (8)

21 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
Plantilla<Integer>...
Responder
Imágen de perfil
26 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
Si funciona, todos los objetos serán int.
Por ejemplo:
public class Números implements Plantilla<int>
{
...
}
Responder
21 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
Cierto!!!.
Por eso esta lo de boxing/unboxing...
Responder
Imágen de perfil
26 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
Excelente, hablame un poco más de eso.
Pásame un vínculo para leer un poco de ese tema.
Gracias.
Responder
Imágen de perfil
22 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
Excelente... muy buena plantilla... gracias!!!
Responder
Imágen de perfil
26 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
Excelente, espero que te sea útil y te sirva para crear tus propios objetos usando esta técnica.
Responder
26 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
Respecto a Boxing/Unboxing puedes ver
https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html
Responder
Imágen de perfil
29 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
Gracias.
Responder

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s4663