[Ror-es] Consulta

Michel Martens
Mon Jan 10 16:38:19 GMT 2005


Mi consejo es que estudien no sólo MVC, sino patrones de programación
en general. Rails es más que puro MVC: ActiveRecord, 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


On Mon, 10 Jan 2005 13:23:21 +0100, Ana Belén Ramón  wrote:
> Hola Luís y todos!
> 
> Yo tengo más o menos el mismo problema, solo que además tampoco tengo
> mucha experiencia con PHP.
> 
> Para mejorar mis nociones de programación de aplicaciones web he
> pensado en comprarme el libro "Web Application Architecture:
> Principles, Protocols and Practices", que por el índice de contenido,
> tiene buena pinta.
> 
> ¿Alguien se ha leido el libro y/o tiene alguna otra sugerencia? ¿Agún
> artículo/tutorial online sobre el tema?
> 
> Graciasss
> 
> PD: Manuel, quizá sería mejor poner como email de reply el de la
> lista, es que este email se lo he enviado por error a Luis cuando en
> realidad quería enviarlo a la lista :(
> 
> --
> Ana Belén Ramón
> www.avidos.net
> 
> > On Mon, 10 Jan 2005 04:10:52 -0800 (PST), Luis Villa del Campo
> >  wrote:
> > >
> > >
> > > Hola a todos... voy leyendo, voy mirando desde una mente PHP cuesta meterse
> > > algunos conceptos, y más con la documentación que hay disponible
> > > actualmetne.
> > >
> > >
> > >
> > > - El tutorial que aparece en Pargmatic Programmers resulta un tanto
> > > "techie".
> > >
> > > - Los videos están desactualizados, por lo que al final te salen errores que
> > > te hacen perder gran cantidad de tiempo
> > >
> > > - Hay ejemplos "actualizados" por "paquetitos"? Como los libros de verdad?
> > > (Vas creando poco a poco una aplicación) El ejemplo en Rubyonrails que he
> > > visto del TO-DO list es demasiado sencillo.
> > >
> > > - Algún sitio que explique el verdadero funcionamiento del MVC y consejos
> > > para una buena estructuración de aplicaciones.
> > >
> > > - Que hay de los Web Services? XML-RPC, SOAP...?
> > >
> > >
> > >
> > > A ver si poco a poco... 
> > > _______________________________________________
> > > Ror-es mailing list
> > > 
> > > 
> > >
> > >
> > >
> >
> _______________________________________________
> Ror-es mailing list
> 
> 
>