Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso de Java SE Orientado a Objetos

Curso de Java SE Orientado a Objetos

Anahí Salgado Díaz de la Vega

Anahí Salgado Díaz de la Vega

Interfaces

23/38
Recursos

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 50

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Si algo piden mucho en las empresas es el dominio de las interfaces. Uff por experiencia.

Que genial!! Dios mio que tanto me costaba esto en la facultad jajaj

Curso de UML o patrones de diseno en java me gustaria

Draw.io is free, and LucidChart no.

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

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.

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 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.

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 😃


Interfaces con nombres frecuentes:

  • ISchedulable
  • RecSchedulable
  • RunSchedulable
  • PrintSchedulable

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.

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/

Otra herramienta potente para diagramas y modelado UML es visual paradigm y tiene una versión community muy completa.

Entonces las Interfaces resuelven el problema de la “Herencia múltiple”?

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 😕

lucidchart es de mucha ayuda muchachos, sobretodo para quienes como yo, se pierde entre clases y métodos después de que el proyecto y tiene un cierto cuerpo extenso...

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

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.

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.


<h4>Interfaces</h4>

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.


<h4>Ejemplo</h4>
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 se van enfocar en los comportamientos que nosotros detectemos que sean reutilizables ( mas alla de un sola familia ) .Es un tipo de referencia similar a una clase que podria contener solo constantes y definiciones de métodos
  • En el polimorfismo un método puede tener diferentes comportamientos , pero va a haber situaciones en las que van a tener radicalmente diferentes comportamientos , por lo tanto no va valer la pena que el comportamiento este definido en la clase padre y aqui vienen las clases.
  • Las interfaces van a ser un tipo de clase que solo va tener definido los métodos que nosotros encontramos que puedan ser redundantes entre familias de clases, como es nuestro caso de agendar .
  • Las interfaces van a estar vinculado a una actividad o a una accion redundante en el programa.

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?