1. Abstracción de datos¶
Recall¶
¿Que es abstracción de datos?
¿Que ventajas nos ofrece la abstracción de datos?
¿Como establezco una representación entendible en un objeto en Scala?
¿Que elementos debe tener una representación de datos?
¿Como establezco precondiciones a las abstraccion?
Como manejo las excepciones/error en la representación de datos
¿Que es el this o el self en un lenguaje?
¿Que es un modificador de acceso a un tipo de dato?
Jerarquia de los objetos
Notes¶
Es la capacidad de representar información compleja utilizando los elementos del lenguaje de programación
- Incrementar la modularidad: ¿Porque el ejemplo del Racional es modular? Se dejan de representar de como numeros (nivel bajo de abstracción), a una de más alto nivel a/b
- Elevar el nivel de abstraccion: Numero → a/b
-
Fortalecer el nivel expresion del lenguaje → Evitar representaciones complejas de los datos o dificiles de entender 0.6666 (dificil de entender) 2/3 es más facil de entender
override def toString():String = { //Lo que quiera representar } //Hace print(instancia) //La representación del objeto
Un CONSTRUCTOR (permite instanciar el tipo de dato)
SELECTORES Permite acceder a los datos o ejecutar operaciones
//Constructor
class Racional(Int: a, Int:b) {
//Selectores
def num = a
def den = b
def suma(r:Racional) = {...}
def mult(r:Racional) = {..}
}
Una precondición establece que se debe cumplir para que el dato sea VALIDO
require(dato == condicion, "Mensaje de error")
assert(...condicion verdadera...)
Debo generar una excepción que me permita comunicar la situación que genera el problema, el require genera una excepción IllegalArgumentException (argumento no válido)
Es una ligadura dinámica que está al mismo objeto, permite ejecutar metodos o usar la representación de la instancia dentro del código de la clase.
Es restringir que elementos se pueden usar desde afuera de la clase
class Racional(Int: a, Int:b) {
//Selectores
def num = a //Publico
def den = b //publico
private def mcm(a:Int, b:Int) {..} //Privado
}
