Forum: Rails France Explications sur certains points de Ruby.

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Garulfo G. (Guest)
on 2007-07-13 04:21
Bonjour :) ,

Voilà je me suis mis récemment à Ruby et j'avance à grand pas car je
suis déjà programmeur depuis 5 ans en langage C. Cependant, la
programmtion orienté objet reste un domaine assez large pour moi étant
donnée que je ne pratique que la programmation impérative.

Globalement j'assimile assez vite mais ici, 2 points me fait tourner en
rond et j'aimerai avoir quelques explications les voici :

- J'ai vu qu'il y avait (pour les classes) les variables d'instance et
les variables de classes. En revanche, pour moi, d'aprés ce que j'ai lu,
la POO est fondé sur 3 principes dont l'une d'elle est l'encapsulation
et donc, aucune donnée membre ne doit être accessible sauf par l'aide
d'ascesseur (des méthodes). Ainsi j'en conclu que la variable d'instance
et de classe sont 2 variables dont leurs porté est uniquement a travers
la classe entière (utilisation de ces variables dans les méthodes). Donc
c'est flou pour moi ces 2 types de variables et j'aimerai bien que
quelqu'un puisse m'éclaircir un peu ce problème.

- Autre point, en regardant la documentation sur les classes, j'ai vu
qu'il y avait les méthodes de classes et les méthodes d'instance. Tout
comme pour les variables, j'ai du mal a différencier ces 2 derniers.

Merci à vous.

GarulfoUnix
philippe lachaise (Guest)
on 2007-07-13 04:32
(Received via mailing list)
Bonjour,

On ne peut pas comparer avec le C puis qu'il n'est pas objet, par comtre
une
rapide comparaison avec C++ peut t'éclairer sur les variables/méthodes
de
classe et d'instance.

En C++ les variables et méthodes de classe sont délarées avec le mot clé
"static" et sont partagées par toutes les instances de la classe et de
ses
descendantes.

La grosse distinction c'est que pour l'instance on est rattaché au
"this"
("self" en Ruby) et qu'on ne le connait pas au niveau de la classe.

(Bon, ça pourrait être exposé plus clairement mais il est tard ;-)
Yannick F. (Guest)
on 2007-07-13 11:05
(Received via mailing list)
Le 13/07/07, philippe lachaise<removed_email_address@domain.invalid> a écrit :
>
> (Bon, ça pourrait être exposé plus clairement mais il est tard ;-)
>


Heu O_o
On va mettre ça sur le dos de la fatigue, j'avoue ne pas avoir compris
le but, le sens, de ce morceau d'explication. Ou alors j'ai raté un
épisode (ce qui est probable).


--
Yannick "Pouype" Francois
http://www.typouype.org
http://www.rubyfrance.org
Nicolas D. (Guest)
on 2007-07-13 11:16
(Received via mailing list)
On 7/13/07, Garulfo G. <removed_email_address@domain.invalid> wrote:
>
> Bonjour :) ,
>
> Voilà je me suis mis récemment à Ruby et j'avance à grand pas car je
> suis déjà programmeur depuis 5 ans en langage C. Cependant, la
> programmtion orienté objet reste un domaine assez large pour moi étant
> donnée que je ne pratique que la programmation impérative.

Un domaine plutôt flou, j'imagine.
Tu sais déja, je pense, qu'il existe dans le monde de la programmation
objet des classes, qui sont comme des structures C auxquelles le
développeur peut ajouter des fonctions qui travaillent dans le
contexte de cette structure (en C, on dirait qu'elles recoivent en
premier paramètre un pointeur vers une instance de la structure).
>
> - J'ai vu qu'il y avait (pour les classes) les variables d'instance et
> les variables de classes.

Pour faire très simple, une variable d'instance est associée à une
instance définie de ta structure, alors qu'une variable de classe est
partagée par toutes les instances.

> En revanche, pour moi, d'aprés ce que j'ai lu,
> la POO est fondé sur 3 principes dont l'une d'elle est l'encapsulation
> et donc, aucune donnée membre ne doit être accessible sauf par l'aide
> d'ascesseur (des méthodes).

Ca, ça se discute pas mal. En réalité, on considère que les variables
membres (qui représententt en quelque sorte l'état interne de ton
objet) sont uilisables dans l'objet sans faire appel aux accesseur (ce
qui peut poser un problème lorsqu'on souhaite surcharger certaines de
ces variables membres, mais je m'égare).
Donc en fait, les accesseurs, c'est utilisé surtout pour accéder aux
variables membres depuis "l'extérieur" de l'objet.
>
> - Autre point, en regardant la documentation sur les classes, j'ai vu
> qu'il y avait les méthodes de classes et les méthodes d'instance. Tout
> comme pour les variables, j'ai du mal a différencier ces 2 derniers.

Une méthode d'instance est associée directement à une instance,
c'est-à-dire qu'elle a dans son contexte d'exécution un pointeur vers
un objet de la classe, ce qui n'est pas le cas de la méthode de
classe.
>


--
Nicolas D.
N'imprimez ce mail que si vous ne savez pas le lire sur l'écran : les
électrons se recyclent bien, le papier, beaucoup moins bien.
Yannick F. (Guest)
on 2007-07-13 11:23
(Received via mailing list)
Le 13/07/07, Yannick F.<removed_email_address@domain.invalid> a écrit :
> Le 13/07/07, philippe lachaise<removed_email_address@domain.invalid> a écrit :
> >
> > (Bon, ça pourrait être exposé plus clairement mais il est tard ;-)
> >
> Heu O_o
> On va mettre ça sur le dos de la fatigue, j'avoue ne pas avoir compris
> le but, le sens, de ce morceau d'explication. Ou alors j'ai raté un
> épisode (ce qui est probable).
>

Mes plates excuses, effectivement j'avais le 1er épisode (le mail de
Garulfo) dans mes spam :-/ Je comprend un poil mieux
là.

Sinon, l'encapsulation dont tu parles qui vise a ne pas toucher
directement les attributs d'un objet (d'une classe) prend son
importance en java (je connais java, pas c++ mais je pense que c'est
presque pareil ,-)). En java on peut dire qu'un attribut est publique,
et c'est presque mal :-p.
En Ruby les attributs, même si tu as l'impression de les atteindre
directement, ne le sont pas. tu peut par exemple surcharger l'accès a
un de tes attributs:

class Klass
   attr_accessor :test
end

Là tu peux acceder directement en "lecture ecriture" a l'attribut.
Mais en fait, ça reviens a écrire:

class Klass
  attr :test
  def test=(something)
    @test=something
  end
  end test
    @test
  end
end

Donc ça ne se voit pas, mais y'a des "getter et setter" sur tout les
attributs que l'on utilise. On peut même les surcharger ;-))

Pour ce qui est des atrtibuts de class, oui c'est des attribut dont la
valeur sera la même pour toute les instance.

Pour les methode de class c'est l'équivalent java du static. Une sorte
de singleton de méthode.




--
Yannick "pouype" Francois
http://www.typouype.org
http://www.rubyfrance.org
Garulfo G. (Guest)
on 2007-07-13 13:14
Je vous remercis beaucoup pour ces bonnes explications :) .

Par contre j'ai posté dans ce forum "Rails France" car je cherchais
justement un forum pour poser mes 2 questions mais je ne sais pas si
c'est correct. En d'autre terme, je ne sais pas si ce forum est réservé
uniquement pour RoR ou pour l'ensemble de Ruby.

Encore merci.

GarulfoUnix.
Cyril M. (Guest)
on 2007-07-13 14:06
(Received via mailing list)
On 7/13/07, Garulfo G. <removed_email_address@domain.invalid> wrote:
>
> Je vous remercis beaucoup pour ces bonnes explications :) .
>
> Par contre j'ai posté dans ce forum "Rails France" car je cherchais
> justement un forum pour poser mes 2 questions mais je ne sais pas si
> c'est correct. En d'autre terme, je ne sais pas si ce forum est réservé
> uniquement pour RoR ou pour l'ensemble de Ruby.
>

Ce forum/Mailling-List/Google Groupe est effectué principalement dédié
à Ruby On rails. Pour ruby, il y a le site de RubyFr[1] où tu pourras
trouvé un Google Groupe et un forum je crois.

[1] :rubyfr.org

--
Cyril M.
philippe lachaise (Guest)
on 2007-07-13 15:43
(Received via mailing list)
Sinon je trouve que tout ça est assez clairement expliqué ici :
http://www.ruby-doc.org/docs/ProgrammingRuby/
(au cas où tu n'aurais pas commencé par là)

ceci dit la perspective n'est pas la même suisvant qu'on est ou non
passé
avant par plusieurs languages objet.
This topic is locked and can not be replied to.