Entiendo lo que decis Nicolás sobre el tema de que Ruby no tiene clases
abstractas,  si mal no te entiendo definiria normalmente a la clase 'Fish' y
"no la usaria" sino que a la hora de definir unos objetos utilizaria Shark,
Dolphin, GoldFish o lo que sea.

Por lo de los nombres en español pido disculpas si tanto te ofendi, solo era
ilustrativo para que entendieran, al igual que Delfin que es un mamifero,
repito era un ejemplo.
No sabia que era 'mala palabra' tener clases abstractas en ruby, cosa que me
suena raro en POO;
pero soy humano y me puedo equivocar.

saludos.

2011/4/20 Nicolás Sanguinetti <[email protected]>

> BTW, esto da para otro thread :) Y da para otro momento que tenga un
> poco más de tiempo de escribir, no quiero sonar pedante, simplemente
> que tengo que terminar algo medio apurado :(
>
> Saludos,
> -f
>
> 2011/4/20 Nicolás Sanguinetti <[email protected]>:
> > protected no es lo que vos pensás (o serías la 5a persona que me
> > contesta correctamente la pregunta "cuál es la diferencia entre
> > protected y private en ruby", que mucho me divierte hacer cuando
> > entrevisto gente :P). private… es *parecido* a lo que normalmente se
> > conoce como protected.
> >
> > El tema es que la semántica de cómo se definen private y protected en
> > ruby no tiene nada que ver con como se definen en otros lenguajes.
> >
> > 2011/4/20 Tute <[email protected]>:
> >> Señor Foca,
> >>
> >> Algo me hace ruido de lo que dijo. La parte de que Ruby no tiene
> protected y
> >> private. Tener tiene. Usarse en el caso de protected creo que es raro
> porque
> >> Ruby no parece apuntar a heredar clases y private, bueno, de esos si
> hay. ¿
> >> A qué se referia, señor foca?
> >>
> >> On 04/20/2011 04:44 PM, Nicolás Sanguinetti wrote:
> >>>
> >>> Primero que nada: acaban de morir varios gatitos inocentes por la
> >>> atrocidad esa de nombrar clases Pescado y Delfín, en lugar de Fish y
> >>> Dolphin. Ruby está en inglés, así que a menos que escribas "si
> >>> condición;<código>; fin" (que no conozco ningún interprete de ruby
> >>> que te deje), el código deberías escribirlo de forma consistente :)
> >>>
> >>> Segundo, el Deflín no es un pescado, es un mamífero ¬¬
> >>>
> >>> Ahora, hablando en serio: ruby no es java/c#/c++/el lenguaje OOP que
> >>> te guste y con el que estés familiarizado. No tiene clases abstractas.
> >>> Sí, hay algunos hacks que podés hacer para que "parezcan" abstractas,
> >>> pero siguen sin serlo. Y son el tipo de hacks por los cuales yo
> >>> despediría gente (afortunadamente, no tengo a nadie a mi cargo para
> >>> despedir, sino con lo quisquilloso que soy estaría más sólo que el uno
> >>> :P).
> >>>
> >>> La forma "ActiveRecordense" de hacer lo que querés es usar Single
> >>> Table Inheritance, como ya te lo han recomendado. Definís una clase
> >>> Fish (:P), y de ella heredan Shark, Goldfish, Tuna, y todos los
> >>> pescados que quieras. En tus controllers, vos manejás las subclases, y
> >>> no tocás la clase padre (a menos que quieras crear algo genérico, o
> >>> usarlo tipo Factory para crear objetos de acuerdo al input de un
> >>> usuario—por ejemplo, el usuario en un<select>  elige qué clase de
> >>> pescado pescó hoy, y vos creás el adecuado en la base).
> >>>
> >>> Listo, no hay "abstract classes", no hay "final classes", y no hay
> >>> métodos "protected" en ruby (ni privados, pero bueno, eso es para otro
> >>> thread). No traten de hacer magia para hacer que ruby se parezca a
> >>> <inserte lenguaje de programación aquí>
> >>>
> >>> Abrazo,
> >>> -foca
> >>>
> >>> 2011/4/20 Paolo Loran<[email protected]>:
> >>>>
> >>>> Mil gracias, ahora me quedo todo mas claro.
> >>>> Lo voy a probar y cualquier cosa que me frene, les consulto.
> >>>>
> >>>> Saludos.
> >>>> poli
> >>>>
> >>>> 2011/4/20 Lucas Tolchinsky<[email protected]>
> >>>>>
> >>>>> En el ejemplo de Roberto, cuando vos hacés Delfin.create, estarías
> >>>>> creando
> >>>>> un registro en la tabla Pescados cuyo type sería 'Delfin'. En
> resúmen,
> >>>>> vos
> >>>>> sólo tenés una tabla, Pescados con una columna type que indica a qué
> >>>>> clase
> >>>>> concreta pertenece. El esquema sería:
> >>>>> class Pescado<  ActiveRecord::Base
> >>>>> class Delfin<  Pescado
> >>>>> Adjunto de paso un link sobre cómo implementar clases abstractas en
> ruby
> >>>>>
> >>>>>
> http://stackoverflow.com/questions/512466/how-to-implement-an-abstract-class-in-ruby
> >>>>>
> >>>>> Saludos!
> >>>>> Tonchis
> >>>>>
> >>>>> PD: el delfín es un mamífero :D
> >>>>>
> >>>>> _______________________________________________
> >>>>> Ruby mailing list
> >>>>> [email protected]
> >>>>>
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> >>>>>
> >>>>
> >>>> _______________________________________________
> >>>> Ruby mailing list
> >>>> [email protected]
> >>>>
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> >>>>
> >>>>
> >>> _______________________________________________
> >>> Ruby mailing list
> >>> [email protected]
> >>>
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> >>
> >> _______________________________________________
> >> Ruby mailing list
> >> [email protected]
> >>
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> >>
> >
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a