Ruby object based

Ciao a tutti,

vorrei avere da voi delle delucidazioni su Ruby, se si tratti di un
linguaggio object oriented oppure object based.
Non riesco a capire la differenza fra i object oriented e abject based,
fra
class based e object based.
Potreste spiegarmela e magari ettere anche qualche link dove la spieghi
visto che sul web io no nho trovat praticamente nullla di chiaro a
questo proposito…
Inoltre Ruby è object based.???
Vi ringrazio tutti anticipatamente.

CIAO

chiaro scuro wrote:

object based: ha gli oggetti, ma non alcune delle capabilities dell’object
orientation come ereditarieta’, polimorfismo, etc.

In realtà non c’è consenso sul termine object-based, è piuttosto ambiguo.

Non ho trovato fonti per il significato che indichi tu, che solitamente
pare usato per descrivere VisualBasic (insieme ad altri aggettivi più
dispregiativi :wink: ).

In generale però il significato più diffuso in ambito teorico è come
sinonimo di prototype-based, cioè un linguaggio in cui l’ereditarietà
non è centrata sulle classi ma sui singoli oggetti; gli oggetti vengono
creati per clonazione da un oggetto esistente, da cui ricevono anche un
“prototype”, che non è altro che un “esempio” delle proprietà e dei
metodi che il nuovo oggetto
avrà.Il nuovo oggetto però può ridefinire, anche a runtime, i propri metodi,
e addirittura cambiare prototype.
Esempio:

pele = {:name => “Pele”, :sport => “football”, :position => “Forward”}
pele_jr = {:name => “Pele Jr.”}
pele_jr.prototype = pele
pele_jr.name # => “Pele Jr.”
pele_jr.sport # => “football”
pele_jr.position # => “forward”

I linguaggi più diffusi che seguono questo paradigma sono Self, Lua,
JavaScript.
Ma anche Ruby ha caratteristiche che lo rendono un buon linguaggio
prototype-based (il fatto che sia interpretato, dinamico e basato su
message-passing). In effetti, l’esempio sopra è scritto in Ruby e viene
da Ruby Q. 214 [1] :slight_smile:

Molti fanno l’errore di pensare che i linguaggi prototype-based siano
“inferiori” a quelli class-based, ma tipicamente queste sono le persone
che conoscono solo JavaScript, e male :confused:

1:
http://groups.google.com/group/comp.lang.ruby/browse_thread/thread/0a7ff16b7d1c5d52/525f102359e5c801?lnk=raot&fwc=2&pli=1

Ciao,
Andrea

2009/7/13 Gian luca Colotto [email protected]

Ciao a tutti,

vorrei avere da voi delle delucidazioni su Ruby, se si tratti di un
linguaggio object oriented oppure object based.
Non riesco a capire la differenza fra i object oriented e abject based,

object based: ha gli oggetti, ma non alcune delle capabilities
dell’object
orientation come ereditarieta’, polimorfismo, etc.
ruby e’ object oriented.

come mai ti serve saperlo?

Chiaro Scuro wrote:

2009/7/13 Gian luca Colotto [email protected]

Ciao a tutti,

vorrei avere da voi delle delucidazioni su Ruby, se si tratti di un
linguaggio object oriented oppure object based.
Non riesco a capire la differenza fra i object oriented e abject based,

object based: ha gli oggetti, ma non alcune delle capabilities
dell’object
orientation come ereditarieta’, polimorfismo, etc.
ruby e’ object oriented.

come mai ti serve saperlo?

Ciao grazie per la tua risposta, adesso rispondo io.
Mi interessa saperlo perchè studiando Ruby e facendo un breve excursus
del web ho trovato qualche strano concetto come object based e mi
chiedevo appunto la differenza dato che il paradigma OO è sempre basato
su oggetti ma in qualcosa deve pur differire da object based.

Esempio:

pele = {:name => “Pele”, :sport => “football”, :position => “Forward”}
pele_jr = {:name => “Pele Jr.”}
pele_jr.prototype = pele
pele_jr.name # => “Pele Jr.”
pele_jr.sport # => “football”
pele_jr.position # => “forward”

In effetti, l’esempio sopra � scritto in Ruby e viene
da Ruby Q. 214 [1] :slight_smile:

che ruby? 1.9? Perché con la 1.8 non funziona.

P.S ruby quiz? Ne avevo sentito parlare. Mi giri il link?

Ciao Michele.

Ehehe… non funziona perchè l’obiettivo di quel Ruby Q. è
fare in modo che quel codice funzioni (cioè implementare il prototyping
in
Ruby) :slight_smile:

I Ruby quiz sono appuntamenti settimanali sulla ML ufficiale inglese di
Ruby nei quali vengono proposti quizzes più o meno interessanti da
risolvere con questo linguaggio :slight_smile:

Sandro

2009/7/14 Michele C. [email protected]

Sandro P. wrote:

Ehehe… non funziona perchè l’obiettivo di quel Ruby Q. è
fare in modo che quel codice funzioni (cioè implementare il prototyping
in
Ruby) :slight_smile:

I Ruby quiz sono appuntamenti settimanali sulla ML ufficiale inglese di
Ruby nei quali vengono proposti quizzes più o meno interessanti da
risolvere con questo linguaggio :slight_smile:

Sandro

2009/7/14 Michele C. [email protected]

ah… non so neppure cosa significhi prototype :slight_smile:

Ciao Michele.