6.5. Encapsulado y generalización
Por “encapsulado” generalmente se entiende tomar una pieza de código y envolverla en una función, permitiéndole obtener las ventajas de todo aquello para lo que valen las funciones. Hemos visto dos ejemplos de encapsulado, cuando escribimos imprimeParidad en la Sección 4.5 y esDivisible en la Sección 5.4.
Por “generalización” entendemos tomar algo específico, como imprimir los múltiplos de 2, y hacerlo mas general, como imprimir los múltiplos de cualquier entero.
He aquí una función que encapsula el bucle de la sección anterior y la generaliza para imprimir múltiplos de n.
def imprimeMultiplos(n):
1: i = 1
2: while i <= 6:
3: print n*i, '\t',
4: i = i + 1
5: print
Para encapsular, todo lo que hubimos de hacer fue añadir la primera línea, que declara el nombre de la función y la lista de parametros. Para generalizar, todo lo que tuvimos que hacer fue sustituir el valor 2 por el parametro n.
Si llamamos a esta funcion con el argumento 2, obtenemos la misma salida que antes. Con el argumento 3, la salida es:
1: 3 6 9 12 15 18
y con argumento 4, la salida es
1: 4 8 12 16 20 24
A estas alturas es probable que haya adivinado como vamos a imprimir una tabla de multiplicacion: llamaremos a imprimeMultiplos repetidamente con diferentes argumentos. De hecho, podemos a usar otro bucle:
1: i = 1
2: while i <= 6:
3: imprimeMultiplos(i)
4: i = i + 1
Observe hasta que punto este bucle es similar al que hay en el interior de imprimeMultiplos. Todo lo que hicimos fue sustituir la sentencia print por una llamada a una función.
La salida de este programa es una tabla de multiplicación:
1: 1 2 3 4 5 6
2: 2 4 6 8 10 12
3: 3 6 9 12 15 18
4: 4 8 12 16 20 24
5: 5 10 15 20 25 30
6: 6 12 18 24 30 36
Comentarios
Publicar un comentario