FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Yo utilizo muchas interfaces dentro del dominio de las aplicaciones. Con ellas represento desde objetos que hacen trabajo, colaboradores, incluso a veces entidades si es que requieren de cierto comportamiento, hasta elementos visuales como imágenes, cuadros de diálogo, forms, controles, y más.
Por otra parte intento no usar métodos de clase si es posible. Menos aún para la creación de objetos. El motivo es porque usando métodos estáticos pierdo el polimorfismo. Para crear objetos, sino puedo usar dependency injection, utilizo algún tipo de factory, por lo general en forma de métodos anónimos |
#2
|
||||
|
||||
¿A qué te refieres con esto?
LineComment Saludos |
#3
|
||||
|
||||
Como invocas a un metodo estatico? Metodo estatico son los de clase
|
#4
|
||||
|
||||
Pero son hereditarios ¿no? Es decir, no entiendo eso de que se pierde el polimorfismo.
LineComment Saludos |
#5
|
||||
|
||||
El resultado, el comportamiento que se observa, no varia, porque para llamar a un metodo estatico tenes que conocer la clase. Osea el codigo que se ejecuta es siempre el mismo y no va a variar a menos que varies la clase
Si yo llamo a TClase.Ejecutar el codigo que se ejecuta es siempre el mismo y el resultado el mismo (o al menos, predecible). Esta decidido en tiempo de compilacion. Por eso digo que se pierde el polimorfismo. Como haces variar al comportamiento de TClase? 1. Cambiar el codigo del cuerpo de TClase.Ejecutar 2. Tener una subclase de TClase, por ej. TClaseHija e invocar a TClaseHija.Ejecutar.
Pero sigue siendo el mismo problema, no hay realmente polimorfismo Para tener polimorfismo se pueden usar metaclases:
En este caso si tengo polimorfismo porque el codigo que se ejecuta depende de la metaclase que pase como parametro a InvocarEjecutar |
#6
|
||||
|
||||
Cita:
En objetos, si tomamos el típico ejemplo:
el polimorfismo se da cuando llamamos al método Dibujar desde una variable del tipo TFigura:
ya que, dependiendo de si F fue instanciado como TTriangulo, TCirculo o TEtcetera, el método variará. Si, en cambio, usas una variable del tipo explícito TTriangulo:
es, como dices, predecible qué método se llamará. Pero no por eso digo que se pierde el polimorfismo. En el caso de clases es lo mismo: si usas una referencia particular, como TClaseHija, se "pierde" el polimorfismo, tanto como se pierde en TTriangulo. Pero, como tú mismo ejemplificas, si usas una referencia de clase general, como TClaseClass, "recuperas" el polimorfismo. Lo interesante aquí sería que nos dieras un ejemplo más cercano a lo que quieres decir. Esto es, ¿en qué sentido usar un método de clases no te funciona y una interfaz sí? ¿En qué forma un método de clase que cree objetos no te funciona? En otras palabras, creo que tienes en mente algo más específico y es eso por lo que yo preguntaba. LineComment Saludos |
#7
|
||||
|
||||
Cita:
Que metodo se ejecuta? |
#8
|
||||
|
||||
En estos links esta mejor explicado, y lo analiza desde el punto de vista de como los metodos estaticos dificultan los test de unidad. De hecho se aventura a decir que los metodos estaticos = programacion procedimental. No por "nada" se llaman "estaticos"; y su contraparte, los metodos de instancia son "dinamicos"
Punto 6 de esta lista: http://misko.hevery.com/2008/07/30/t...-hard-to-test/ http://misko.hevery.com/2008/12/15/s...o-testability/ |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
interfaces | luislat40 | Varios | 2 | 23-10-2007 03:47:23 |
Interfaces en C# | YaninaGenia | .NET | 1 | 18-06-2006 05:14:48 |
Interfaces... | OscarG | OOP | 9 | 14-10-2005 13:26:57 |
Interfaces de XML | vhr | Providers | 2 | 26-08-2005 17:22:06 |
Interfaces | Legolas | Varios | 14 | 17-11-2003 14:39:07 |
|