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"
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:
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
hola profe ya ps el examen q sea facil ps frofe que ayga un sagiro ps
ResponderEliminarprofe se puede explicar un poco mas de interfas
ResponderEliminar