Ruby/Classes et objets
Les objets
modifier
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
modifierComme 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
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
modifierImaginons 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
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.