Get Started. It's Free
or sign up with your email address
CAPITULO 8 by Mind Map: CAPITULO 8

1. HERENCIA

1.1. Java permite el empleo de la herencia, característica muy potente que permite definir una clase tomando como base a otra clase ya existente. Esto es una de las bases de la reutilización de código, en lugar de copiar y pegar. En java, como ya vimos la herencia se especifica agregando la claúsula extends después del nombre de la clase. En la claúsula extends indicaremos el nombre de la clase base de la cuál queremos heredar. Al heredar de una clase base heredaremos tanto los atributos como los métodos, mientras que los constructores son utilizados, pero no heredados.

1.2. La idea de la herencia es permitir la creación de nuevas clases basadas en clases existentes. Cuando heredamos de una clase existente, reusamos (o heredamos) métodos y campos, y agregamos nuevos campos y métodos para cumplir con la situación nueva. Cada vez que encontremos la relación "es-un" entre dos clases, estamos ante la presencia de herencia. La clase ya existente es llamada superclass, o clase base, o clase padre. La clase nueva es llamada subclase, clase derivada, o clase hija. A través de la herencia podemos agregar nuevos campos, y podemos agregar o sobre montar métodos (override). Sobre montar un método es redefinirlo en la case heredada.

2. POLIMORFISMO

2.1. Polimorfismo” es una palabra de origen griego que significa “muchas formas”. Este termino se utiliza en la POO para “referirse a la propiedad por la que es posible enviar mensajes sintácticamente iguales a objetos de tipos distintos“.

2.2. clases

2.2.1. polimorfismo dinámico

2.2.1.1. es aquél en el que el código no incluye ningún tipo de especificación sobre el tipo de datos sobre el que se trabaja. Así, puede ser utilizado a todo tipo de datos compatible.

2.2.2. Polimorfismo estático

2.2.2.1. es aquél en el que los tipos a los que se aplica el polimorfismo deben ser explícitos y declarados uno por uno antes de poder ser utilizados.

2.3. Ejemplo de polimorfismo

2.3.1. Aunque el polimorfismo es el mismo se aplique donde se aplique, el modo en que se aplica desde una interfaz puede resultar un poco más oscuro y difícil de entender.

2.3.1.1. ' Declaramos una interfaz llamada IOperar y declaramos una función llamada Operar ' que implementarán las clases deseadas: Interface IOperar Function Operar(valor1 as integer, valor2 as integer) as long End Interface

2.3.1.2. ' Declaramos una clase que trabaja más alejada del usuario y que contendría funciones comunes ' para las siguiente clase, si no fueran idénticas irían en la interfaz, ' pero al caso de mostrar el polimorfismo se suponen idénticas: Class Operacion Function Calcular(clasellamante as Object) as Long ' aquí iría el código común a todas las operaciones.... que llaman a esa función ' por ejemplo recoger los 2 valores de la operación, chequear que están en el rango deseado, etc. ' se supone que la función inputValor recoge un valor de algún sitio valor1 as integer = inputValor() valor2 as integer = inputValor() op as New IOperar = clasellamante Return op.Operar(valor1,valor2) 'AQUÍ es donde se utiliza el polimorfismo. End Function End Class

2.3.1.3. ' Declaramos 2 clases: Sumar y Restar que implementan la interfaz y que llaman a la clase Operacion: Class Sumar Implements IOperar Private Function Operar(valor1 as Integer, valor2 as Integer) as Long Implements IOperar.Operar Return valor1 + valor2 End Function Function Calcular() as Long op as New operacion Return op.Calcular(Me) ' se está llamando a la función 'Calcular' de la clase 'Operación' End Function End Class' Declaramos 2 clases: Sumar y Restar que implementan la interfaz y que llaman a la clase Operacion: Class Sumar Implements IOperar Private Function Operar(valor1 as Integer, valor2 as Integer) as Long Implements IOperar.Operar Return valor1 + valor2 End Function Function Calcular() as Long op as New operacion Return op.Calcular(Me) ' se está llamando a la función 'Calcular' de la clase 'Operación' End Function End Class

2.3.1.4. ' segunda clase.... Class Restar Implements IOperar Private Function Operar(valor1 as Integer, valor2 as Integer) as Long Implements IOperar.Operar Return valor1 - valor2 End Function Function Calcular() as Long op as New operacion Return op.Calcular(Me) ' se está llamando a la función 'Calcular' de la clase 'Operación' End Function End Class