Ruby/Classes et objets
Les objets
[modifier | modifier le wikicode]Un objet est une entité, quelque chose ayant une existence propre. Par exemple : une Feuille, une Fenêtre, un Entier, une Chaîne de caractères, un Tableau, etc. Un objet possède des attributs (des caractéristiques) qui peuvent être des méthodes ou des variables (ou bien évidemment les deux). Une fois créés, les objets peuvent être manipulés via leurs méthodes.
Un objet est typé : il est du type de sa classe (voir plus bas). En clair, le type de l’objet correspond au nom de sa classe.
Avant d'aller plus loin, voici les types des objets "standards" que vous avez manipulés depuis le début du cours sans le savoir :
Integer
pour les entiersFloat
pour les flottantsString
pour les chaînes de caractèresArray
pour les tableauxHash
pour les hachagesMethod
pour les méthodes- etc.
Création d'objet
[modifier | modifier le wikicode]Comme vous l'avez déjà vu, les objets de type simple comme les nombres (entiers ou flottants), les chaînes de caractères, les tableaux, etc. sont créés par simple déclaration.
Pour tous les autres (ceux que vous avez vous-mêmes définis), on utilise la méthode new
. Par exemple, pour créer un objet de type Ordinateur
(en supposant que ce type soit défini), voici ce qu’il faut faire :
La méthode new
permet de créer l'objet, on parlera aussi d'instancier un objet. Elle est appliquée à la classe de l'objet. L'objet nouvellement créé sera de type Ordinateur
.
Les classes
[modifier | modifier le wikicode]Une classe regroupe toutes les informations (variables) et toutes les méthodes communes aux objets de son type, elle nous servira de modèle chaque fois que nous voudrons en créer une nouvelle instance.
Pour déclarer une classe quelconque, il faut procéder ainsi :
Le mot-clé class
débute la déclaration d'une classe et le mot-clé end
y met fin.
Par la suite, les classes que nous créerons contiendront des variables et méthodes.
Réutilisation du code
[modifier | modifier le wikicode]Imaginons que vous vouliez créer un programme affichant une fenêtre contenant une image. Vous codez le tout sans problème : le nom de la fenêtre, ses dimensions, sa disposition et son contenu. Puis vos compétences en programmation augmentent et vous vous sentez aptes à créer un jeu de morpion en fenêtre. Seulement voilà : créer une fenêtre, vous savez le faire, vous l'avez d'ailleurs déjà fait un peu plus tôt.
C'est là que vous pouvez réutiliser le code existant : vous pourriez définir une classe Fenetre
et vous servir d'elle à chaque fois que vous voulez créer une nouvelle fenêtre : de cette manière, on évite le code inutile et redondant.
L'encapsulation
[modifier | modifier le wikicode]L'encapsulation désigne le fait de masquer les informations contenues dans un objet (les variables de la classe), et de les rendre accessibles uniquement par des méthodes que nous auront définies. Ces informations sont encapsulées dans l'objet. Ainsi, toute la partie technique du code est contournée.
Dans notre exemple : imaginons que notre class Fenetre
soit dotée d'une variable couleur_fond
. Plutôt que de modifier cette variable depuis l'extérieur de la classe, on définiera une méthode changer_couleur_fond
contenant les instructions permettant d'accéder à la couleur de fond de la fenêtre, puis de la modifier. De cette manière, l'information de la couleur de fond de la fenêtre ne sera pas accessible et ne pourra donc pas être modifiée en dehors de cette méthode.