logo

WikiJuanan: ModeloMVC ...

Inicio | Indice De Paginas | Ultimas Modificaciones | Ultimos Commentarios | Usuarios | Registrarse | Conectar:  Contraseña:  

Ruby On Rails?Design Patterns


Michel Martens
http://lists.simplelogica.net/pipermail/ror-es/2005-January/000022.html


Mi consejo es que estudien no sólo MVC, sino patrones de programación
en general. Ruby On Rails? es más que puro MVC: Active Record?, por ejemplo, es
la implementación de un “pattern” del mismo nombre.


La idea del MVC es separar el problema en tres capas: model, view y controller.

Model

El “model” representa la “realidad”, y un modelo simple podría ser un
objeto del tipo Person con los atributos name, lastname, gender,
birthday. No tiene importancia si se trata de una tabla en una base de
datos o de un archivo XML, YAML, etcétera. Lo importante es que
refleje la realidad (o el aspecto de la realidad que nos interesa). El
“model” no es un objeto estático, sino una especie de máquina con
botones que pueden ser manipulados a discreción. Así, nuestro model
“Person” puede tener métodos como age (retorna la diferencia en años
entre “hoy” y el atributo birthday), o full_name (retorna la
concatenación de los atributos name y lastname).

Controller

El controler conoce al model, sabe qué atributos y qué métodos tiene,
pero no a la inversa: el model no sabe quién lo manipula, simplemente
se deja manipular. El controller sabe, además, qué es lo que el
usuario del sistema intenta hacer. Si el usuario quiere crear una
nueva instancia del tipo Person, el controller creará el objeto
(person = Person.new?) y mostrará un formulario para que los datos
necesarios sean cargados por el usuario. ¿Cómo hace el controller para
mostrar un formulario? Delega el control en una vista determinada...

View

Una view también conoce el model pero no tiene por qué saber desde
donde lo llamaron. Simplemente se limita a mostrar un aspecto del
modelo, por ejemplo:


Nombre : <%= person.name %>
Apellido: <%= person.lastname %>


Etcétera. No sé si queda claro a partir de esta explicación tan breve.
Me parece que sería más útil, además, despejar antes que nada las
dudas relacionadas con la programación orientada a objetos. Les dejo
algunos links:


Castellano
http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos
http://es.wikipedia.org/wiki/Patrones_de_dise%C3%B1o


Inglés
http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29
http://c2.com/cgi/wiki?StartingPoints

No hay archivos en esta página. [Enseñar archivos/formulario]
Comentarios [Esconder comentarios/formulario]