Le Ruby Nouveau

Podcast francophone sur la tech en général, le Web et Ruby en particulier

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 :

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 :

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

  1. 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
  2. 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