Ir al contenido principal

II SEMESTRE: JAVA - Polimorfismo con Interfaces

POLIMORFISMO USANDO INTERFACES


Nuestro siguiente ejemplo reexamina el sistema de nómina de la sección anterior; Supongamos que la empresa en cuestión desea llevar a cabo las operaciones contables de varias cuentas en una única solicitud de pago, además de calcular los ingresos que deben ser pagados a cada empleado, la empresa también debe calcular el pago debido en cada uno de varias facturas (es decir, las facturas de los bienes compra). Aunque se aplica a cosas no relacionadas (es decir, los empleados y las facturas), ambas operaciones tienen que ver con la obtención de algún tipo de monto del pago. Para un empleado, el pago se refiere a los ingresos del empleado. Para una factura, el pago se refiere al costo total de las mercancías que figuran en la factura. ¿Podemos calcular cosas tan diferentes como los pagos adeudados a los empleados y las facturas en una sola aplicación polimórficamente?. Java no ofrece una capacidad que requiere que las clases no relacionadas apliquen un conjunto de métodos comunes (por ejemplo, un método que calcula una cantidad de pago)???.  Interfaces de Java ofrecen exactamente esa capacidad.

Entendiendo las Interfaces:

Las Interfaces definen y estandarizan la forma en que las cosas, como las personas y los sistemas pueden interactuar con otros. Por ejemplo, los controles de la radio pueden servir como interfaz entre los usuarios de la radio y los componentes internos de la radio. Los controles permiten a los usuarios realizar sólo un conjunto limitado de operaciones (por ejemplo, el cambio de estación, ajustar el volumen, elegir entre AM y FM), y diferentes radios podrán aplicar los controles de diferentes formas(por ejemplo, usando botones, diales, comandos de voz). La interfaz especifica qué operaciones de la radio debe permitir a los usuarios realizar, pero no especifica cómo se realizan las operaciones. Del mismo modo, la interfaz entre un conductor y un coche con una transmisión manual incluye el volante, el cambio de velocidades, el pedal del embrague, el pedal del acelerador y el freno. Esta misma interfaz se encuentra en casi todos los vehículos de transmisión manual, lo que permite a alguien que sepa cómo conducir un coche particular, transmisión manual de conducir casi cualquier vehículo de transmisión manual. Los componentes de cada coche individual puede ser diferente, pero el propósito general de los componentes es la sameto permitir a la gente a conducir el coche.

Objetos de software también se comunican a través de interfaces. Una interfaz en  Java describe un conjunto de métodos que pueden ser llamados en un objeto, para decirle al objeto cómo realizar alguna tarea o devolver alguna porción de información, por ejemplo. El siguiente ejemplo presenta una interfaz denominada "Payable" para describir la funcionalidad de cualquier objeto que debe ser capaz de ser "pagado" y por lo tanto debe ofrecer un método para determinar el importe del pago correcto de vencimiento. Una declaración de interfaz comienza con la palabra reservada Interface y sólo contiene constantes y métodos "abstract". A diferencia de clases, todos los miembros de interfaz debe ser "public", y las interfaces no puede especificar los detalles de aplicación, tales como declaraciones de métodos concretos y variables de instancia. Así que todos los métodos declarados en una interfaz son implícitamente "public abstract"  y todos los campos son implícitamente "public", "static" y "final".

Para utilizar una interfaz, una clase concreta debe especificar que implementa  (implements) la interfaz y debe declarar cada método en el interfaz con la firma especificada en la declaración de la interfaz. Una clase que no implementa todos los métodos de la interfaz es una clase abstracta y debe ser declarada "abstract" .La implementación de una interfaz es como la firma de un contrato con el compilador que dice: "Voy a declarar todos los métodos especificados por la interfaz o voy a declarar mi clase abstracta".

Descripcion del Problema:

Para crear una aplicación que pueda determinar los pagos para los empleados y las facturas por igual, requiere en primer lugar crear la interfaz "Payable". La Interfaz "Payable" contiene el método getPaymentAmount que devuelve una cantidad de tipo double que debe ser "pagado" por un objeto de cualquier clase que implementa la interfaz. El método GetPaymentAmount es una versión de uso general del método "earnings" de la jerarquía "Employee" , el cual calcula una cantidad de pago específicamente para un empleado, mientras que getPaymentAmount se puede aplicar a una amplia gama de objetos no relacionados. Después de declarar interfaz "Payable" , le presentamos la clase "Invoice" , que implementa la interfaz "Payable". A continuación, modificamos la clase "Employee" para que también implemente la interfaz "Payable". Por último, actualizamos la subclase "SalariedEmployee"  que hereda de "Employee" para que "encaje" en la jerarquía de "Payable" (es decir, cambiar el nombre del método "earnings"  de  SalariedEmployee por getPaymentAmount).


Veamos la Jerarquía que representa este ejemplo:




1. Creamos la Interfaz "Payable"





2. Ahora creamos la Clase "Invoice" que implementa la Interfaz "Payable", (note el uso de la palabra reservada implements en la declaración de la misma:


 

3. A continuación modificamos la clase "Employee" para que implemente la Interfaz "Payable"




4. Creamos la clase SalariedEmployee que implementa el método getPaymentAmount de la Interfaz Payable :




5. Creamos el programa principal que utiliza la Interfaz Payable, a traves de la cual se procesaran "Invoice" y "Employee" Polimórficamente:




6. Los Resultados:

 

Espero sus comentarios o dudas al respecto

Comentarios

Publicar un comentario

Entradas populares de este blog

Uso de Parámetros con el control SqlDataSource - Primera entrega

Una de las principales ventajas del control SqlDataSource , radica en la posibilidad de trabajar con parámetros, con este control es posible trabajar con cualquiera de los siguientes parámetros: Parameter ControlParameter CookieParameter FormParameter ProfileParameter QueryStringParameter SessionParameter A su vez, el control SqlDataSource incluye 5 colecciones de parámetros de ASP.NET: SelectParameters , InsertParameters , DeleteParameters , UpDateParameters y FilterParameters . Puede usar estas colecciones de parámetros para asociar un parámetro en particular de ASP.NET con algún comando o filtro en particular del control SqlDataSource. En este post haré mención a parámetros gestionados mediante Parameter y ControlParameter . En publicaciones posteriores me encargaré del resto de parámetros. Trabajaré para la explicación con la base de datos Pubs de SQL Server , si no la tiene debe instalarla, puede hacerlo siguiendo este link: http://www.microsoft.com/downloads/en/details

Estructuras de Control - Parte 2

Estructuras de Control Repetitivas Las computadoras están especialmente diseñadas para ejecutar tareas repetidamente. Las estructuras de control repetitivas son aquellas en las que una sentencia o grupos de sentencias se repiten muchas veces. Una estructura de control que permite la repetición de una serie determinada de sentencias se denomina bucle (lazo o ciclo). El cuerpo del bucle c ontiene las sentencias que se repiten. La acción o acciones que se repiten en un bucle se denomina el cuerpo del bucle, y cada repetición del cuerpo del bucle se denomina iteración. Sentencia Mientras..hacer (while) La estructura repetitiva mientras es aquella en la que el número de iteraciones no se conoce por anticipado y el cuerpo del bucle se repite mientras se cumple una determinada condición. Por esta razón a estos bucles se les denomina bucles co ndicionales. La sintaxis es la siguiente: Cuando la sentencia mientras se ejecuta, el primer p aso es la evaluación de la expresión lóg

Microsoft Access - Entrega 02

Establecer Índices y Claves primarias: Los índices permiten especificar un orden para la búsqueda de registros, su principal tarea es esta, básicamente cualquier campo de una Tabla puede ser un índice, incluso un conjunto de campos pueden ser índices, (los que suelen denominarse INDICES COMPUESTOS). Para definir un índice en un campo de una tabla basta con especificar la propiedad correspondiente, o también utilizar el botón Índice, tal como se muestra en la Imagen:      Por ejemplo, digamos que nos piden crear un índice compuesto denominado FullName que abarca los campos Apellidos y Nombres. Para realizar esa tarea haga click en el botón Índices y luego configure de acuerdo a la imagen:       Clave Principal: La clave primaria permite identificar de manera única a un registro, por teoría de diseño de base de datos, cada Tabla debe tener su correspondiente clave primaria para facilitar tareas de búsqueda y actualización de registros. Para definir una clave primaria en una tabl