Pregunta

¿Por qué usamos la interfaz?

¿Es solo para la estandarización?

¿Fue útil?

Solución

Propósitos de interfaces

  • crear software poco acoplado
  • apoyo diseño por contrato (Un implementador debe proporcionar toda la interfaz)
  • Permitir software conectable
  • permitir que diferentes objetos interactúen fácilmente
  • Ocultar detalles de implementación de clases entre sí
  • facilitar la reutilización del software

Analogía 1: Al igual que el transbordador espacial estadounidense, la nave espacial rusa Soyuz y el chino Shenzhou 5 pueden acoplar la Estación Espacial Internacional, porque implementan la misma interfaz de acoplamiento. (Este es solo un ejemplo: no sé si es cierto en la vida real, sin embargo, suspendamos nuestra incredulidad por un ejemplo)

Analogía 2: Como puede conectar varios monitores de computadora a la computadora de su hogar. Puede conectar un televisor de tamaño de pared, un viejo CRT (el tipo grueso), una pantalla plana de 20 "o una máquina Braille para que la ciega" vea "por tacto. Hay compatibilidad entre estos diversos/diferentes dispositivos y su computadora porque todos están de acuerdo con los estándares de interfaz.

Detalles de las interfaces de C# - Con interfaces C#/oop, estás haciendo el mismo tipo de cosas, pero en el mundo invisible/virtual.

Tienes razón sobre Estandarización, pero también flexibilidad, escalabilidad, extensibilidad, mantenimiento, reutilización, probabilidad y energía.

(Cuanto más use interfaces de software, más se entenderán estas "palabras de zumbido". Y siempre considere las interfaces en el mundo real porque nos han hecho igualmente bien).

Otros consejos

Se utiliza una interfaz para describir lo que puede hacer una cosa implementada. Por lo tanto, tiene la posibilidad de tratar varios objetos que implementan la misma interfaz como un tipo de esta interfaz.

Por ejemplo:

public interface IMyInterface{
    public void DoFirst();
    public int DoSecond();
}


public class A : IMyInterface{
   //class has to implement DoFirst and DoSecond
   public void DoFirst(){
     Console.WriteLine("Blubb1");  
   }

   public int DoSecond(){
     Console.WriteLine("Blubb2");
     return 2;  
   }
}

public class B : IMyInterface{
   //class has to implement DoFirst and DoSecond
   public void DoFirst(){
     Console.WriteLine("Blibb1");  
   }

   public int DoSecond(){
     Console.WriteLine("Blibb2");  
     return 4;
   }
}

Las clases implementan la interfaz de varias maneras. Pero puedes usarlos como IMYInterface. Por ejemplo:

public static void DoMethodsInInterface(IMyInterface inter){
    inter.DoFirst();
    inter.DoSecond();
}


public static void main(){

   DoMethodsInInterface(new A());
   DoMethodsInInterface(new B());
   //Or use it in a List
   List<IMyInterface> interlist = new List<IMyInterface>();
   interlist.Add(new A());
   interlist.Add(new B());
   foreach(IMyInterface inter in interlist){
      inter.DoFirst();
   }

}

Espero que esto deje un poco por qué las interfaces son útiles.

Es para interfactar :), para que puedas interactuar entre cosas, es útil cuando tienes

  • Implementaciones múltiples de las mismas cosas
  • Cuando aplica una interfaz a múltiples clases diferentes porque necesita algún tipo de convención de que estas clases son Goonna, pueda hacer algunas cosas o tener alguna funcionalidad

Aquí está la vista de alto nivel ...

Las interfaces juegan un papel importante en el concepto de Ocultación de información.

Básicamente te ayudan a ocultar el detalles de implementacion de su clase para que una clase de llamadas no tenga dependencia de esa implementación. Por lo tanto, al usar interfaces, puede modificar la implementación sin cambiar la clase de llamadas. Todo esto a su vez limita la complejidad de su código y hacerlo más fácil de mantener a la larga.

Cuando comencé a comprender las interfaces, me me explicaron como un "contrato que proporciona una descripción de su clase". No estoy seguro de si eso lo ayudará, pero si piensa en una interfaz para un automóvil, podría decir que impulsos, brote, y vueltas. Entonces, mientras me lleve del punto A al punto B, realmente no tengo que saber cómo se implementan esas funciones.

La razón principal por la que las interfaces se utilizan en idiomas como C#/Java es porque esos idiomas no admiten múltiples (clase) (ver ¿Cuál es el problema exacto con la herencia múltiple?).

Pero se permite que la implementación múltiple (de interfaz) permita que las clases se usen de diferentes maneras.

Las interfaces son algo incómodas. Apoyan el diseño por contrato con solo creer, ese mismo nombre e interfaz implementada significa el mismo comportamiento. Esto funciona solo gracias a la documentación de la API, tiene que estar verificada de humanos. Eso hace que las interfaces sean demasiado débiles. Una forma de moverse podría ser especificaciones formales. Por otro lado, las interfaces son demasiado fuertes, demasiado estrictas. No puede evolucionar interfaces que a menudo se interpongan en el camino de la reutilización. Esto se resuelve mediante protocolos: mecanismo en idiomas dinámicos, que envían mensajes (métodos de llamada) y cuando ese mensaje no es compatible con el receptor, se llama a la devolución de llamada estándar. Tener protocolos concretos con restricciones sería mejor.

Pensar transferencia...

Hay un cliente y un servidor involucrado aquí. Digamos que están físicamente separados por Internet. El cliente está llamando a un método cuya ejecución real ocurre en el servidor. Desde la perspectiva del cliente, el cliente no sabe nada sobre el objeto en el servidor que realiza la ejecución. Sin embargo, sabe a qué método llamar. Porque al construir el programa del cliente, solo estamos expuestos a una interfaz (o contrato). No estamos expuestos a todo el objeto que realmente vive en el servidor. Intente hacer algunas aplicaciones de demostración en .NET Remoting y imaginará el resto. Feliz programación.

¿Por qué usamos interfaces?

Algunos idiomas implementan llamadas de método polimórfico usando VTables y descartar la mayoría de la información de tipo que lo hace difícil no para definir interfaces.

Entonces, en algún momento simplemente usamos interfaces porque el diseño del idioma lo requiere.

Al comenzar con una interfaz, puede implementar un apoderado, permitiendo así una carga perezosa o realizando algunas verificaciones al llamar a los métodos de una implementación concreta.

La interfaz separa el tipo de datos de la lógica de implementación.

La interfaz proporciona un prototipo modal que solo contiene la declaración de funcionalidad de un comportamiento específico.

Y si desea implementar este comportamiento en clase, entonces debe implementar esta interfaz en la clase, entonces la clase tiene esta funcionalidad de comportamiento o puede tener múltiples comportamientos.

Porque la clase puede implementar una interfaz múltiple.

If anyone else is like me and learns by example and doing, rather than only explanation, here is some code....

I found this implementation of a Neural Network in C#, including project download, which makes use of Interfaces in an elegant and useful manner:

http://www.c-sharpcorner.com/UploadFile/rmcochran/AI_OOP_NeuralNet06192006090112AM/AI_OOP_NeuralNet.aspx

Following are the main reasons for the use of interfaces

  1. Extensibility
  2. Implementation Hiding
  3. Accessing object through interfaces
  4. Loose Coupling.

please visit this link to know about interfaces with downloadable code example

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top