Download Programación orientada a objetos Introducción
Document related concepts
no text concepts found
Transcript
Programación orientada a objetos Clases: Polimorfismo Introducción El polimorfismo, en general, es la característica de un lenguaje orientado a objetos que permite que un mismo identificador de método tenga significados diferentes en diferentes contextos, es decir, permite crear programas con una mayor posibilidad de expansión futura, aún para procesar en cierta forma objetos de clases que no han sido creadas o están en desarrollo. Definición Es la capacidad de objetos de clases diferentes, relacionados mediante herencia, a responder de forma distinta a una misma llamada de un método. 1 Una operación puede tener el mismo nombre en diversos objetos, y funcionar distinto en cada uno. Implementación en java El polimorfismo es implementado a través de clases derivadas y clases abstractas. Al hacer una solicitud de un método, a través de una variable de referencia a clase base para usar un método abstracto, Java determina el método que corresponda al objeto de la clase a la que pertenece, y no el método de la clase base. 2 Los métodos en Java tienen este comportamiento, debido a que cuando un método es accesado por una referencia a una clase base, y esta mantiene una referencia a un objeto de una clase derivada, el programa determina “en tiempo de ejecución” a que método llamar, de acuerdo al tipo de objeto al que se apunta. Esto se conoce como ligadura tardía y permite otro nivel de reutilización de código. Es importante señalar que los métodos que sean redefinidos en clases derivadas, deben tener además de la misma firma que el método base, el mismo tipo de retorno. Clase abstracta Existen clases que son útiles para representar una estructura en particular, pero que no van a tener la necesidad de generar objetos directamente a partir de esa clase, estas se conocen como clases abstractas, o mejor dicho como clases bases abstractas. Una clase abstracta, es aquella que es definida para especificar características generales que van a ser aprovechadas por sus clases derivadas, pero no se necesita instanciar a dicha superclase. 3 La clase base abstracta tiene como objetivo proporcionar una clase base que ayude al modelado de la jerarquía de herencia, aunque esta sea muy general. Por lo tanto, de una clase abstracta no se pueden definir objetos, mientras que en clases a partir de las cuales se puedan instanciar objetos se conocen como clases concretas. Sintaxis para una clase abstracta: abstract class ClaseAbstracta{ //código de la clase } Métodos abstractos Un método abstracto contiene sólo el nombre y su firma. No necesita implementarse, ya que esto es tarea de las subclases. Si una clase contiene al menos un método abstracto, toda la clase es considerada abstracta y debe de declararse como tal. Es posible claro, declarar a una clase como abstracta sin que tenga métodos abstractos. sintaxis: abstract class ClaseAbstracta{ public abstract void sinCodigo( int x); } 4 Si se crea una subclase de una clase que contiene un método abstracto, deberá de especificarse el código de ese método; de lo contrario, el método seguirá siendo abstracto y por consecuencia también lo será la subclase. Aunque no se pueden tener objetos de clases abstractas, si se pueden tener apuntadores a objetos de esas clases, permitiendo una manipulación de objetos de las clases derivadas mediante los apuntadores a la clase abstracta. El uso de clases abstractas fortalece al polimorfismo, al poder partir de clases definidas en lo general, sin implementación de código, pero pudiendo ser agrupadas todas mediante variables de referencia a las clases base. UML Sintaxis: Igual que otra clase El nombre de la clase debe encontrarse en cursivas En algunas referencias tambien los métodos abstractos van en cursivas Clase Atributos Métodos Métodos abstractos 5 Empleado Discusión Clases abstractas Herencia simple Uno o más métodos son abstractos Los métodos pueden implementarse hasta la clase final (línea jerárquica) variables (con/sin final) Los miembros pueden tener diferentes niveles de acceso Interfaces Herencia múltiple Todos los métodos son “abstractos” Los métodos deben implementarse en la clase que los implementa variables final Los miembros son públicos Polimorfismo con interfaz El polimorfismo también se implementa cuando utilizamos variables de referencia Interfaz Imprimir a interfaces Imprime( ) Figura Imprime( ) Mapa Imprime( ) Rectangulo Circulo Imprime( ) Imprime( ) Cuadrado Imprime( ) 6 Tarea Fecha de entrega :9 junio de 2010 antes de las 11:59 pm. (por correo) Realiza en Java lo siguiente. Anexa al ejemplo de las figuras las clases: isóceles y equilátero, cuadrado, pirámide (base triangular) y cubo. Utilice la clase Persona a partir de ella genere las siguientes clases: jugador, defensa, centro, delantero, entrenador y árbitro. Agregar a cada clase los atributos y métodos que los caracterizan. Explique su aplicación por medio de diagramas UML. (utilizar polimorfismo) Realiza las clases necesarias para manejar lo siguiente: Dos tipos de cuenta de un banco (Estándar y premier), las cuales tienen algunas características comunes como: registro del cliente, balance inicial del cliente, mostrar el balance actual, depósitos y retiros. La cuenta estándar el interés es del 5% anual y tiene un limite de saldo de $5000.00 si es menor la cuenta se considera sobregirada. Una cuenta premier no tiene limite de saldo y tiene un interés anual del 6%, menos un cargo de 100 pesos anuales por manejo de cuenta. Dentro de la clase de prueba genere un usuario con ambos tipos de cuenta con un saldo inicial y permita que el usuario pueda manipular dichas cuentas Explique su aplicación por medio de diagramas UML. 7