Sesión 05: Funciones y datos¶
Conceptos¶
Parametros implicitos / explicitos: Ligadura dinámica¶
public class Ejemplo {
private int a;
private int b;
public Ejemplo(int x, int y) {
this.a = x;
this.b = y;
}
public int getA(){
return this.a;
}
}
class Ejemplo:
def __init__(self,a,b):
self.x = a
self.y = b
def getX():
return self.x;
Abstracción de datos¶
¿Que es?
- Los datos los podemos representar a traves combinaciones de clases y funciones
- La idea es trabajar desde un concepto funcional más elevado, nos preocupamos en cómo funcionan los datos más cómo se implementan internamiento
Aspectos a tener en cuenta sobre O.O
- Existe una ligadura dinámica (this, self), algunos lenguajes la tienen EXPLICITA (python, javascript), otros la tienen IMPLICITA (C++,Java, scala, Ruby)
- Al instanciar un clase se asignan vía parametros las propiedades de clase.
- Al instanciar una función de en un objeto, se asigna el this (referencia al objeto) y los parametros de clase
Consejos para diseñar datos abstractos (TAD)
- Se utilizan clases para representar los TADs
- Tenemos funciones que nos apoyan en las operaciones
- Aplicamos tecnicas como la normalización para facilitar la visualización del dato
- Sobrecarga de algunos métodos para facilitar el entendimiento del tipo de dato
Operación binaria
Cuando tenemos una función del estilos
class Ejemplo(...) {
def f(a:<T1>):<T> = {
....
}
}
f recibe explicamente a la variable a, pero implicitamente recibe a this
val objEjemplo = new Ejemplo(...)
objEjemplo.f(x)
objEjemplo f x