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