Bienvenidos.
Continuamos con las interfaces.
Vamos a ver el ejemplo de imprenta, así que vamos a cerrar todo, cerrar todo y vamos a cerrar también
el proyecto Cloud Project.
Bien, como siempre, nuevo proyecto, todo por defecto.
Un proyecto de Java.
Siguiente, siguiente.
Y el nombre lo vamos a llamar P o interfases.
Siguiente o Fenech.
Estamos listos?
Entonces, qué continúa?
Bueno, los РАМКАХ.
Entonces por acá, en ese recé como siempre new pacato por punto a Guzmán o el que quieren usar
p o interfases nombre proyecto y le vamos a colocar también otro package imprenta.
Listo.
Ese sería el package base.
Bien, entonces en este pack base imprenta vamos a crear una clase con el método Main, pero la vamos
a dejar creada porque después vamos a implementar la vamos a utilizar con el método Main y continuamos
también con nuestra clases.
Entonces ejemplo imprenta.
Bien, la dejamos ahí.
Vamos a crear otro pacato por acá.
New pacato dentro de imprenta modelo nuestra clase muelo.
Bien, primero vamos a partir con una clase abstracta que le vamos a llamar hoja.
Bueno, la idea de diseñar una aplicación con herencia, clases abstracta, alguna clase queren de hoja.
Bueno, y después vamos a crear otra clase que no sean hojas.
Y ahí es donde entra en juego las interfaces.
Es muy importante.
Concepto Las interfaces reúnen objetos que hacen lo mismo mediante un protocolo implementación.
Entonces, hoja abstracta y listo.
Estábamos implementar un atributo en común.
Cualquier hoja tiene un contenido, un texto
del tipo String contenido un método abstracto público string imprimir desde cualquier hoja se puede
imprimir.
Es el contrato de la clase padre abstracta hoja.
Bien.
También un constructor para poder pasar el contenido.
Generate constructor joke.
Y listo.
Ahí tenemos nuestra clase, podremos implementar el método jet set de contenido en caso de que lo queramos
utilizar, pero para el ejemplo vamos a utilizar el contenido dentro del imprimir cuando se imprima
el objeto.
Por lo tanto, el contenido no sería necesario para este ejemplo.
Pero recuerden.
De todas formas lo pueden implementar.
Todo depende de nuestro diseño.
No hay una única regla de oro que se aplique.
Siempre va a depender el contexto de los requisitos.
Regla de negocio.
En fin.
El diseño.
Vamos a crear una clase hija que debe de hoja.
Entonces.
New.
Le vamos a llamar informe perfecto.
Extend Hoja, recuerdan?
Está bien, es terror.
Entonces, como siempre con clic derecho generate implementar método de la clase padre imprimir bien.
Por qué sigue marcando error por el constructor?
Recuerden que el padre tiene un constructor que pasa el contenido, nada más.
Solamente el contenido no tiene un constructor vacío.
Por lo tanto, informe está obligado a implementar este constructor.
Entonces el derecho y genere constructor.
Ahí lo tenemos, se fijan.
Pero también como tienen contenido.
Que lo hereda de hoja informe también tiene sus propios atributos.
Por ejemplo, el autor del informe y también la persona que lo revisa.
El revisor para este ejemplo del tipo String.
Pero podría ser del tipo usuario, se fijan el usuario autor, el usuario revisor o del tipo rol también
o persona con sus atributos propios, con el nombre lápiz o con el email.
En fin.
Pero para simplificar el ejemplo, para que no sea tan extenso y para poder explicar el tema de interfaces,
lo dejamos como un string.
Para este ejemplo no es necesario que sea del tipo persona, pero sí podría ser perfectamente un tipo
de la clase persona bien, pero también que el autor y revisor se pasen por argumento, ni constructor
lo podamos inicializar.
Entonces lo tenemos y acá lo asignamos con this.
Punto.
Autor.
Despuntó revisor, igual revisor.
Ahora qué faltaría.
Bueno, dar vida al metro, imprimir e imprimir el informe con los datos del autor del revisor y su
contenido.
Un string
informe escrito por autor.
Vamos a bajar.
Revisado por.
Revisor un salto de línea n un paquete larch n más el contenido this contenido, pero contenido viene
de la clase padre.
Recuerden que protected entonces estamos reutilizando Enola.
Protégete contenido y acá accedemos.
Es como propia.
Se fijan porque protegida bien y ahí tenemos lo mismo.
También podríamos implementarlo method jet set de autor revisor sin ningún problema.
Pero para el ejemplo, para simplificar, como no lo vamos a utilizar desde afuera, lo vamos a omitir,
pero lo podemos crear.
Qué tranqu.
Solamente estamos utilizando el autor revisor en el método imprimir de la clase abstracta.
Tampoco se preocupen por lo warning.
Acá dice un mensaje el campo utor podría ser final.
Claro, como no tenemos el get y el set recomiento nos dice que podría ser final, pero no para nuestro
caso.
No dejamos de esta forma.
Así que no se preocupen por estos mensajes y estamos listo.
Continuamos la siguiente clase implementando otra clase valga la redundancia.
Curriculo Bueno, y después, por supuesto, tenemos que entrar con la interfaz imprimible.
Continuamos en la siguiente clase.