Вы находитесь на странице: 1из 3

Herencia

Es una propiedad que permite que los objetos sean creados a partir de otros ya existentes,
obteniendo características (métodos y atributos) similares a los ya existentes. Es la relación entre
una clase general y otra clase mas especifica. Es un mecanismo que nos permite crear clases
derivadas a partir de clase base, Nos permite compartir automáticamente métodos y datos entre
clases subclases y objetos.

La herencia es uno de los mecanismos de la programación orientada a objetos, por medio del cual
una clase se deriva de otra, llamada entonces superclase, de manera que extiende su
funcionalidad. Una de sus funciones más importantes es la de proveer.

La herencia se utiliza con frecuencia como un mecanismo para implementar el polimorfismo. En


muchos lenguajes orientados a objetos la herencia es la única forma de implementar el
polimorfismo. Este mecanismo funciona así:

Una clase puede heredar tanto los atributos como las operaciones de una clase madre, también
llamada super clase. Esto implica que una nueva clase que sea bastante similar a otra clase en
varios aspectos no necesita re implementar nuevamente todos los métodos de esa segunda clase,
sino que puede heredar de ella los métodos y sobre escribir aquellos que son diferentes (como en
el caso del ejemplo anterior con las figuras del círculo y el cuadrado).
class CuentaBancaria:
def __init__(self, montoInicial):
self.saldo = montoInicial
print "Cuenta creada con un saldo de %5.2f" % self.saldo

def deposito(self, monto):


self.saldo = self.saldo + monto

def extraccion(self, monto):


if self.saldo >= monto:
self.saldo = self.salto - monto
else:
raise SaldoError % self.saldo

def checkSaldo(self):
return self.saldo

def transferencia(self, monto, cuenta):


try:
self.extraccion(monto)
cuenta.deposito(monto)
except SaldoError:
print SaldoError

Clases Abstractas

Este Tipo de Clases nos permiten crear “método generales”, que recrean un comportamiento
común, pero sin especificar cómo lo hacen. A nivel de código tienen por particularidad que
algunos de sus métodos no tienen “cuerpo de declaración”, ¿qué quiere decir esto? no tienen las
llaves { } ni código dentro de ellos y deben estar precedidos por la palabra clave abstract. Si una
clases contiene uno o más métodos abstractos está clase debe ser abstracta. Estas clases como
son generalidades no pueden ser instanciadas por ningún objeto (se dice que su nivel de
abstracción es demasiado alto), entonces su único fin es ser heredado/extendido por otras clases.
public abstract class Figura {

// Atributos:
public int numeroLados;
public int area;
public int volumen;

// Métodos:
abstract public void calcularArea();
abstract public void calcularVolumen();
}
se puede apreciar que toda figura tiene un método para calcular su Área y Volumen.

crear la clase Esfera, que “Es una” Figura.


public class Esfera extends Figura{

public float radio;


public static float pi = (float)(3.1415);

public Esfera( int radio ){


this.radio = radio;
this.numeroLados = 0;
}

// 4*pi*r²
public void calcularArea(){

this.area = (4)*pi*radio*radio;
}

// (4/3)*pi*radio³
public void calcularVolumen(){

this.volumen = (4/3)*pi*radio*radio*radio;
}
}

Las clases que hereden de la clase Abstracta deben implementar todos los métodos abstractos.
– Se debe tener presente que las clases abstractas sí pueden heredar de otras clases.
Si una clase abstracta está compuesta sólo por métodos abstractos y constantes entonces
podemos hablar de una interface.

INTERFACES

Una interfaz es un conjunto de métodos abstractos y de constantes cuya funcionalidad es la de


determinar el funcionamiento de una clase, es decir, funciona como un molde o como una
plantilla. Al ser sus métodos abstractos estos no tiene funcionalidad alguna, sólo se definen su
tipo, argumento y tipo de retorno.
public interface MatematicaVectorial {
public static double pi = 3.1415;
public static double e = 2.71828;

public double[] sumar(int[][] vectores);


public double[] restar(int[][] vectores);
public double productoPunto(int[][] vectores);

}
La clase VectorR3, que es un vector de R³ implementa MatematicaVectorial
public class VectorR3 implements MatematicaVectorial
{
public double valorX;
public double valorY;
public double valorZ;

public double[] sumar(int[][] vectores){


//Implementacion
}

public double[] restar(int[][] vectores){


//Implementacion
}

public double productoPunto(int[][] vectores)


{
//Implementacion
}
}

Вам также может понравиться