012. Le modèle objet de Ruby
Chaque objet a une classe, et chaque classe est un objet.À la table, Sylvain Abélard, Céline Martinet Sanchez, Jérémy Lecour et Ronan Limon Duparcmeur.
Télécharger l'épisode (15 Mo) - Date de publication : 2017-04-17
- • Une entreprise anglaise utilise les données privées de comptes Facebook pour manipuler les élections américaines.
- Une entreprise propose de répondre à une enquête pour 1 ou 2$. Les répondants donnent accès à leur compte Facebook, ainsi qu'à toutes leurs données, sans en être réellement informés. Ces données sont ensuite réutilisées dans des campagnes soutenant Trump.
- • NationBuilder, un logiciel utilisé dans l'organisation de campagnes politiques françaises, récoltait des données personnelles.
- NationBuilder a désactivé une fonctionnalité permettant d’enrichir les bases de données des politiques avec des informations personnelles publiques issues des réseaux sociaux.
Chaque objet a une classe, et chaque classe est un objet.
Est-ce que tout est objet dans Ruby ? Qu’est-ce qui n’est pas du Ruby ?
Une partie de la syntaxe n’est pas objet (unless, rescue), c’est direct dans le parseur.
Mais sinon, les opérateurs sont des méthodes : 2.+(2)
[]
[]=
<=>
…
Qu’est-ce qui est objet et qui ne l’est pas dans d’autres langages ?
D’autres langages comme Java vont avoir des “primitives”, des objets
qui prennent moins d’octets dans la mémoire, comme int
mais qui
n’ont pas tous les avantages et les méthodes des “vrais objets” comme
Integer
.
Réouverture de classe et d’instance
« Chaque objet a une classe, et chaque classe est un objet ». Je ne me lasse pas de cette explosion d’émerveillement dans ma tête à chaque fois que je dis ça.
Passage de message
Quand on a une instance d’objet et qu’on lui passe un message, quel bout de code assembleur va tourner sur quel pointeur, quelle zone mémoire ?
On peut retrouver ses petits :
- à la volée (Ruby, Smalltalk, Obj-C, Elixir/Erlang)
- à compile-time (C++)
Mais au fait, c’est quoi un objet ?
Quelque chose qui modélise les comportements communs (la classe) et décrit les infos de chaque objet de la classe, et enregistre des états (instances).
Il y a une partie visible (public
, le “contrat” de l’objet et ce qu’on connaît de lui),
et une partie privée (protected
/ private
, sa “tambouille interne”).
Quand tu faisais des classes sans protected, tu les organisais différemment ?
Qu’est-ce qui différencie un objet d’un simple élément de langage ?
Quelques lectures :
- Discussion entre Alan Kay et Joe Armstrong
- L’héritage est mal utilisé, 99% du temps (héritage et encapsulation vs passage de messages)
- La définition d’une classe est du code exécuté.
- Blog de Dave Thomas (qui vient de se mettre à Elixir).
- Pourquoi il teste les méthodes privées ? Parler de l’héritage (arg).
Qui est self ?
C’EST MOI MOUAHAHAHA
* Classes, modules, and objects are interrelated. In the diagram
* that follows, the vertical arrows represent inheritance, and the
* parentheses metaclasses. All metaclasses are instances
* of the class `Class'.
* +---------+ +-...
* | | |
* BasicObject-----|-->(BasicObject)-------|-...
* ^ | ^ |
* | | | |
* Object---------|----->(Object)---------|-...
* ^ | ^ |
* | | | |
* +-------+ | +--------+ |
* | | | | | |
* | Module-|---------|--->(Module)-|-...
* | ^ | | ^ |
* | | | | | |
* | Class-|---------|---->(Class)-|-...
* | ^ | | ^ |
* | +---+ | +----+
* | |
* obj--->OtherClass---------->(OtherClass)-----------...
2 choses importantes pour comprendre les objets et la méta-programmation
- comment marche self
- change par appel de méthode ou définition de classe
- variables d’instances stockées et référencées dans self
- tous les appels de méthodes sont identiques
- right and then up
Modules
Découvertes des invités
- • Sylvain Abélard
- Une super bande dessinée de Jean-Luc Masbou et Alain Ayroles – De Cape & De Crocs
- • Céline Martinet Sanchez
- Une application pour organiser vos bandes dessinées et vous avertir quand un nouvel album est sorti ! – Bubble App
- • Jérémy Lecour
- Les conférences locales sont souvent l'occasion de rencontrer des professionnels de qualité dans un cadre plus intimiste que les grandes conférences. Les sujets sont tout aussi passionnants ! – Conférences locales