3.5. Polimorfismo
Se conoce como polimorfismo la posibilidad de asumir muchas formas. En nuestro caso, es la posibilidad de que un método definido en una superclase pueda ser redefinido en sus clases derivas, pero usando siempre el acceso por referencia a la Superclase.
En C#, el polimorfismo se consigue definiendo los métodos de la superclase que se deben comportar así como virtual y los métodos del mismo nombre en las clases derivadas, como override. En .Net, cada tipo es polimórfico porque todos los tipos, incluidos los tipos definidos por el usuario, heredan de Object.
A menudo se hace referencia al polimorfismo como el tercer pilar de la programación orientada a objetos, tras la encapsulación y la herencia. El término polimorfismo es una palabra griega que significa "con muchas formas" y tiene dos aspectos que lo caracterizan:
En tiempo de ejecución, los objetos de una clase derivada se pueden tratar como objetos de una clase base en lugares como parámetros de método y colecciones o matrices. Cuando esto sucede, el tipo declarado del objeto ya no es idéntico a su tipo en tiempo de ejecución.
Las clases base pueden definir e implementar métodos virtuales y las clases derivadas pueden invalidarlos (override), lo que significa que proporcionan su propia definición e implementación. En tiempo de ejecución, cuando el código de cliente llama al método, CLR busca el tipo en tiempo de ejecución del objeto e invoca esta invalidación del método virtual. Así, en el código fuente puede llamar a un método de una clase base y provocar la ejecución de la versión de clase derivada del método.
Los métodos virtuales permiten trabajar con grupos de objetos relacionados de una manera uniforme. Por ejemplo, supongamos que disponemos de una aplicación de dibujo que permite a un usuario crear varios tipos de formas en una superficie de dibujo. En tiempo de compilación no se conocen los tipos específicos de formas que creará el usuario. Sin embargo, la aplicación tiene que realizar el seguimiento de los diferentes tipos de formas que se crean y tiene que actualizarlos como respuesta a las acciones del usuario. Se puede utilizar el polimorfismo para resolver este problema en dos pasos básicos:
* Se creea una jerarquía de clases en la que cada clase de forma específica derive de una clase base común.
* Se utiliza un método virtual para invocar el método adecuado de una clase derivada a través de una única llamada al método de clase base.
Ver Ejemplo: Uso Polimorfismo. Explicación del ejemplo: En primer lugar, se crea una clase base llamada Shape y clases derivadas como Rectangle, Circle y Triangle. Se incluye en la clase Shape un método virtual llamado Draw y se invalida en cada clase derivada para dibujar la forma determinada que representa la clase. Se crea un objeto List<Shape> y se agrega elementos Circle, Triangle y Rectangle a él. Para actualizar la superficie de dibujo, se utiliza un bucle foreach para recorrer en iteración la lista y llamar al método Draw en cada objeto Shape de la lista. Aunque cada objeto de la lista tiene un tipo declarado de Shape, es el tipo en tiempo de ejecución (la versión invalidada del método en cada clase derivada) al que se invocará.
|
1. Diseño de Aplicaciones Orientadas a Objetos (1/3) En esta oportunidad deseamos enseñarte un nuevo curso de programación en el cual... [05/10/11] |
91 | ||||
|
2. Actionscript 3. Objetos Objetos AS3 . Entra a nuestro tutorial de Actionscript 3 y aprende el lenguaje de... [04/07/11] |
121 |
|
|||
|
3. PHP y MySQL. Aplicaciones Web: programación (primera parte) Programación de aplicaciones Web con PHP y MySQL. Con este curso aprenderás el... [02/12/08] |
5.012 | ||||