Bienvenidos sean a este post, un particular caso de lo visto en el post anterior para la programacion orientada a objetos ocurre cuando un objeto tiene un metodo unico, para tales casos no tenemos necesidad de crear una tabla de interfaz, en su lugar podemos devolver este metodo unico como la representacion del objeto.

Anuncios

Si esto te suena un poco descabellado recordemos que en este post vimos como construir funciones iteradoras que mantienen el estado como cierres, es decir que un iterador que mantiene su estado no es nada mas ni nada menos que un objeto de metodo unico, otro caso interesante de objetos de metodo unico ocurre cuando este metodo unico es realmente un metodo de despacho que ejecuta diferentes tareas basado en un argumento distinguido, veamos el siguiente codigo para una posible implementacion de tal objeto:

function nuevoObjeto(valor)
	return function(accion, v)
		if accion == "get" then return valor
		elseif accion == "set" then valor = v
		else error("Accion invalida")
		end
	end
end
Anuncios

Ejecutemos el codigo anterior para ver su salida:

> d = nuevoObjeto(0)
> print(d("get"))
0
> d("set",10)
> print(d("get"))
10
> print(d("tinchicus"))
stdin:5: Accion invalida
Anuncios

Esta implementacion no convencional para objetos es muy efectiva, analicemos la sintaxis:

d("set",10)

Aunque sea peculiar es solo dos caracteres mas larga que la mas convencional:

d.set(10)
Anuncios

Cada objeto usa un cierre unico el cual es mas practico que una tabla, no tenemos herencia pero si una privacidad completa, la unica forma de acceder al estado del objeto es atraves de su metodo solitario.

Tcl/Tk usa un enfoque similar para sus widgets, el nombre de un widget en Tk denota una funcion (un comando widget) que puede ejecutar todo tipos de operaciones sobre el widget.

Anuncios

En resumen, hoy hemos visto un enfoque particular, como son las condiciones para hacerlo, cuando debe ser aplicado, cuales son sus beneficios, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00