Si algo piden mucho en las empresas es el dominio de las interfaces. Uff por experiencia.
Entender la Programación orientada a objetos
Programación orientada a objetos en Java
¿Qué es un Objeto?
Abstracción: ¿Qué es una Clase?
Modularidad
Definir Clases y sus componentes
Creando nuestra primera Clase
Método constructor
Static: Variables y Métodos Estáticos
Creando elementos estáticos
Final: Variables Constantes
Sobrecarga de métodos y constructores
¡Reto!
Encapsulamiento: Modificadores de acceso
Getters y Setters
Variable vs. Objeto
Variable vs. Objeto: Un vistazo a la memoria
Clases Anidadas
Clases Internas y Locales a un método
Enumerations
Reutilizar Código
¿Qué es la Herencia? Don't repeat Yourself
Super y This
Polimorfismo: Sobreescritura de Métodos
Polimorfismo: Sobreescribiendo el método toString
Interfaces
Creando una interfaz para definir si una fecha es agendable
Collections
Aplicar Abstracción
Clases Abstractas
Miembros abstractos
Clases Anónimas
Diferencias entre las Interfaces y las Clases Abstractas
Interfaces en Java 8 y 9
Herencia en interfaces
Ensamblando Objetos el proyecto
Simulando autenticación de usuarios
Modularizando la UI de Doctores
Definiendo las citas disponibles
Modularizando la UI de Pacientes
Recorriendo estructuras de árbol en Java
Agendando Citas
Cierre del curso: Continúa con Programación Funcional en Java
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Anahí Salgado Díaz de la Vega
Las Interfaces son un tipo de referencia similar a una clase con solo constantes y definiciones de métodos, son de gran ayuda para definir los comportamientos que son redundantes y queremos reutilizar más de una clase, incluso cuando tenemos muchas clases y no todas pertenecen a la misma “familia”.
Las interfaces establecen la forma de las clases que la implementan, así como sus nombres de métodos, listas de argumentos y listas de retorno, pero NO sus bloques de código, eso es responsabilidad de cada clase.
Aportes 64
Preguntas 8
Si algo piden mucho en las empresas es el dominio de las interfaces. Uff por experiencia.
En VSCode puedes instalar un plugin de drawio. Luego, solo debes crear un nuevo archivo con extensión drawio, y te muestra el IDE para realizar los UML, ER, y otros tipos de gráficos.
Que genial!! Dios mio que tanto me costaba esto en la facultad jajaj
Curso de UML o patrones de diseno en java me gustaria
Una interfaz no tiene bloques de código; en ella se encuentra la declaración de los métodos(sin contenido) y/o constantes.
eje:
public interface Runnable{
void run();
}
y la forma de implementarla en una clase es con la palabra reservada implements
Draw.io is free, and LucidChart no.
Interfaces son el conjunto de directrices que deben cumplir las clases. Es una colección de métodos abstractos y propiedades constantes.
En las interfaces especificamos que se debe hacer pero no como se debe hacer puesto que son las clases las encargadas de implementar esas interfaces y las que describan la lógica del comportamiento de los métodos que existan dentro de esa interfaz
ESTAMOS MARCANDO LAS DIRECTRICES QUE DEBEN CUMPLIR LAS CLASES
Además son muy útiles ya que solucionan el problema de la herencia simple en Java.
Como tal las interfaces son un contrato, que cuando se usan, se acuerda implementar todos los métodos de la interfaz con sus correspondientes parámetros
Interfaces vs Herencia
La herencia nos permite crear nuevas clases a partir de otras, para poder reutilizar o modificar el comportamiento de las mismas dentro de una misma jerarquía
Las Interfaces son de gran ayuda para definir los comportamientos que son redundantes y queremos reutilizar en más de una clase (Sólo la implementación) esto sin importar la jerarquía o si son elementos completamente diferentes
La herencia multiple no esta permitida en java, sin embargo puede ser simulada mediante interfaces.
Con respecto a la clase NURSE y DOCTOR no se podrian crear una clase padre ya que ambas tienen el mismo atributo por decirlo asi, que seria especialidad
En Java no te permite heredar de muchas clases, solo de una; pero si te permite implementar varias interfaces.
Una cosa curiosa de las interfaces es que los métodos que yacen dentro son casi la firma de un método, y digo casi porque se toma en cuenta además el nombre de los parámetros, en cambio, la firma del método solo cuenta con el nombre y el tipo de los parámetros.
Supongamos que tenemos el siguiente código:
public void setMapReference(int xCoordinate, int yCoordinate)
{
//method code
}
La firma de este método sería:
setMapReference(int, int)
Como ven, carece del modificador de acceso, del tipo de retorno y del nombre de cada parámetro. Y sin nos fijamos bien, es muy similar a una método de una interface:
public interface Mapable {
//method
setMapReference(int xCoordinate, int yCoordinate);
}
El concepto de firma de método es muy importante, es algo que, si bien no preguntan en las entrevistas de un primer trabajo de programador Java, es importante para ascender de puesto dentro de este ámbito.
simplemente quiero ser el primer comentario. Todo genial hasta ahora 😃
Hola a todos, mi aporte. Lo realicé en nomnoml (https://nomnoml.com/):
El codigo para realizarlo en nomnoml:
[User | id: String; name: String; email: String; address: String; phoneNumber: String || getters ; setters]
[Doctor | speciality: String || getters; setters ]
[Patient | birthday: String; weight: double; height: double; blood: String || getters; setters ]
[AppointmentDoctor | id: String; patient: Patient; doctor: Doctor; date: Date; time: String || getters; setters; schedule(Date,time)]
[Nurse | id: String || getters; setters]
[AppointmentNurse | id: String; patient: Patient; nurse: Nurse; date: Date; time: String || getters; setters; schedule(Date,time)]
[User] <:- [Doctor]
[User] <:- [Patient]
[User] <:- [Nurse]
[Doctor] -> [AppointmentDoctor]
[Patient] -> [AppointmentDoctor]
[Nurse] -> [AppointmentNurse]
[Patient] -> [AppointmentNurse]
En VSCode puedes instalar un plugin de drawio.
Las interfaces también son útiles en Java porque permiten la implementación de la herencia múltiple. En Java, una clase solo puede extender de una única superclase, pero puede implementar varias interfaces. Esto significa que una clase puede heredar comportamiento de una superclase y también puede implementar comportamiento adicional mediante la implementación de interfaces.
Otra herramienta potente para diagramas y modelado UML es visual paradigm y tiene una versión community muy completa.
Interfaces con nombres frecuentes:
Estos son mis apuntes de esta Clase, espero que les sean de utilidad, los hice en base a lo que alcance a entender en la clase, así que si hay algo incorrecto me avisan en los comentarios.
Interfaces
Es un tipo de referencia similar a una Clase que podría contener sólo constantes y definiciones de métodos. Una interfaz puede contener por ejemplo métodos que se repiten en varias Clases que no pertenecen a la misma familia. Esa es su principal diferencia con respecto a la herencia entre Clases pues en esta las Clases que tienen un método en el que se aplican polimorfismo pertenecen a la misma familia y tienen a una superclase en común; por el contrario en las interfaces se pueden definir diferentes comportamientos para Clases que no tienen ninguna relación entre si y que pertenecen a familias diferentes.
En las interfaces se establece la forma de una Clase (nombres de métodos, listas de argumentos y tipos de retorno) pero no bloques de código, por ejemplo en una interfaz sólo se pondría la redacción de un método pero no su implementación pues esta será radicalmente diferente para cada Clase.
Declarar una interfaz en Java
// Crear una interfaz
public IScheduable {
schedule(Date date, String Time);
}
// Implentar una interfazen una Clase
public class AppointmentDoctor implements IScheduable {
...
}
**Nota: ** es muy común que los nombres de las interfaces terminen en “able” (ejemplos: rundable
, printable
, readable
), esto se debe a que las interfaces se enfocan en las actividades que son redundantes en el código. También es común encontrar que el nombre de la interfaz comience con una “I”.
Interfaces
Las interfaces definen solo ¿Que se hace? pero no te define ¿Como?. Ya que puede que en diferentes clases se utilice ese método pero cambia la forma en que se aplica dependiendo de la clase que implemente ese método.
Las interfaces son especialmente útiles para
asignar una funcionalidad común a clases que posiblemente no estén relacionadas. Esto permite que los objetos de estas clases se procesen en forma polimórfica; es decir, los objetos de clases que implementen la misma interfaz pueden responder a todas las llamadas a los métodos de la interfaz.
Fuente: Deitel y Deitel - Cómo programar en Java
🤔 Las interfaces son la abstracción de métodos similares.
se ve facil, vamos a un ejemplo
Muy bien explicado 😁
Concepto de UML: https://platzi.com/clases/1474-oop/17219-uml/
Es interesante como podemos dividir los comportamientos o métodos más utilizados por medio de la creación de una clase específica para ello, como es el caso de las interfaces, no conocía esta forma de trabajar, pero deseo conocer cómo se implementa en la aplicación.
Grande el esquedu able hjahaha
Interfaces:
Es un tipo de referencia similar a una clase que podría contener solo constantes y definiciones de métodos.
Se dan en comportamientos redundantes.
Tipo de clase que solo tiene definidos los métodos que encontremos redundantes.
Se establece la forma de una clase(nombre de métodos, listas de argumentos y tipos de retorno, pero no bloques de código).
Comportamiento muy diferentes.
Les recomiendo https://app.diagrams.net/ para realizar los diagramas, ya que este no requiere membresia
En el lenguaje de programación Java, una interfaz es un tipo de referencia, similar a una clase, que puede contener solo constantes, firmas de métodos, métodos por defecto, métodos estáticos y tipos anidados. Los cuerpos de los métodos solo existen para los métodos por defecto y los métodos estáticos. Las interfaces no pueden ser instanciadas, solo pueden ser implementadas por clases o extendidas por otras interfaces.
quiero saber si en los trabajos también te hacen poner los nombres de las variables o metodos y objetos, etc en ingles, porque ya mucho espaninglish 😕
Recomiendo esta lectura sobre interfces:
https://beginnersbook.com/2013/05/java-interface/
Aquí les dejo un resumen que hice en Notion. Espero les sirva de referencia.
https://www.notion.so/UML-Lenguaje-de-Modelado-Unificado-12a4989841a148d9b74d198b463a7ea4
Explicado de forma concisa, ordenada y con un ejemplo sencillo. Vale la pena echarle una leída:
https://informaticapc.com/poo/interfaces.php
Antes de seguir adelante les recomiendo de gran manera leer el primer capítulo del libro: Head First Design Patterns de O’reilly. Abordan el tema de patrones de diseño y cómo se complementan las interfaces, herencencia y polimorfismo. Amarrando conceptos que ha explicado Anahí. Pueden comprarlo o buscarlo en internet. https://www.oreilly.com/library/view/head-first-design/9781492077992/
Me tome el tiempo de hacer mi propio UML en Miro
https://miro.com/app/live-embed/uXjVO4YmH4A=/?moveToViewport=-1433,-873,2170,1233
Entonces las Interfaces resuelven el problema de la “Herencia múltiple”?
Me gusto la forma como explico este segmento del curso polimorfismo sobrescribiendo a toString
Eso Tiliiin. Muy buena explicación. Siento que muchas de las veces tratas de simplificar mucho algo y eso causa que te trabes un poco, pero desde el inciio queda súper bien explicado. (De hecho el que seas redundante para tratar de ser más clara llega a confundir más; confía más en tu don de explicar jaja)
Estuve indagando muchísimo durante un semestre sobre la convesión de nombres para las interfaces. En Java, por lo general, deben ser adjetivos sin la “I” al comienzo, es decir no se suele usar la conversión ISchedulable. También pueden ser sustantivos en el caso que representen a una familia de clases, como por ejemplo una Lista.
En código:
public interface Schedulable {
schedule(Date date, String time);
}
Entiendo que este curso y el anterior vinieron como actualización de un viejo curso de Java… también se prevé una actualización dentro de poco para el curso avanzado?
Clase User se debería llamar Clase persona. porque de ella derivan las clases Doctor, Persona y Enfermera, la clase user, podría ser utilizada para lo que corresponde a seguridad, en el proceso login en la aplicación
Entendido el concepto, vamos a verlo en la practica para entenderlo mucho mejor.
Genial, es justo lo que necesito para mi proyecto final 😃
Super 😃
Una interfaz en el lenguaje de programación Java es un tipo abstracto que se utiliza para especificar un comportamiento que las clases deben implementar. Son similares a los protocolos. Las interfaces se declaran utilizando la palabra clave de interfaz y solo pueden contener firma de método y declaraciones constantes.
Se podría decir que las interfaces son el caparazón o el molde de todos los métodos y constantes que debemos aplicar en nuestro proyecto.
Son un cascaron de una clase
El proposito de las interfaces es crear contratos , las clases hijas deben de contenter si o si los metodos de las interfaces 😃
si sería bueno partir de un diagrama para estar ubicad al momento de programar
Interfaces
Hasta el momento tenemos la capa de interfaz, que de momento es solo una interfaz por consola y la capa de modelos que son todos los objetos hechos molde en clases y próximamente estos serán mapeados a una fuente de datos.
Ahora se va a agregar un nuevo modelo para Nurse al programa. Este nuevo modelo también heredará de la clase User y un paciente puede tener una cita con una enfermera.
Es un tipo de referencia similar a una clase que podría contener solo constantes y definiciones de métodos.
Se enfoca en los comportamientos redundantes. entre familias de clases.
Se establece la forma de una clase: nombres de métodos, listas de argumentos y tipos de entorno, pero no bloques de código.
Solo cuentan con la redacción de los métodos que puedan ser reutilizados.
public interface ISchedulable{
schedule(Date date, String time);
}
public class AppointmentDoctor implementes IScheduleable{
}
increible
Una interfaz () es sintácticamente similar a una clase abstracta, en la que puede especificar uno o más métodos que no tienen cuerpo ({}). Esos métodos deben ser implementados por una clase para que se definan sus acciones.
Recomiendo mucho que revisen el siguiente curso, ya que brinda buenas practicas a la hora de escribir código (buenísimo si es que están comenzado en el mundo de la programación) y también podrán ver más a detalle la importancia de las interfaces:
Curso de Buenas Prácticas para Escritura de Código
las interfaces sirven para métodos que se repiten.
Podríamos decir que las interfaces son métodos que están por utilizarse en un futuro?
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?