Zarok RPG Maker
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
AccueilDernières imagesS'enregistrerConnexion
Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal

Partagez | 
 

 [Ruby] Cours n°9 : POO - Classes et Objets

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Tonyryu
Matière
Matière
Tonyryu


Masculin Messages : 221
Age : 43
Loisirs : Making, Paintball, jeux video
Date d'inscription : 20/11/2006

Caractéristiques du membre
Evolution: Atome
Job:
XP:
[Ruby] Cours n°9 : POO - Classes et Objets Left_bar_bleue20/20[Ruby] Cours n°9 : POO - Classes et Objets Empty_bar_bleue  (20/20)

[Ruby] Cours n°9 : POO - Classes et Objets Empty
MessageSujet: [Ruby] Cours n°9 : POO - Classes et Objets   [Ruby] Cours n°9 : POO - Classes et Objets EmptyVen 28 Sep 2007 - 17:29

Voila voila, on y est. La Programmation Oriénté Objet, la POO. Le meilleur outils de programmation qui puisse être actuellement.
Je préviens de suite, que le concept POO est loin d'être évident à saisir, cependant une fois que vous l'aurez compris, vous vous rendrez compte de son incroyable utilité. Je vous conseil donc de prendre du temps à bien relire chaque chose jusqu'à le comprendre. Et surtout à la moindre question n'hésitez pas à les poser.

On va donc commencer par la 'classe', qui est tou bêtement l'abstraction d'un objet. Oula, vous êtes déjà perdu!! vite un exemple simplifié.

Prenons ma voiture. C'est un objet concret qui a des propriétés qui la rendent unique (immatriculation, marque sur la carrosserie, etc..) et je peux interragir avec (ouvrir une porte, tourner le volant, demarrer, etc...). Cependant MA voiture, est avant tout UNE voiture. Attention, ce n'est pas du tout la même chose, MA voiture est un objet concret, UNE voiture est abstrait, c'est ce que l'on appelera une 'classe'.

Précisons la chose en prenant un constructeur automobile quelconque, Renaud par exemple. Prétez bien attention au terme 'constructeur', je n'ai pas choisis l'exemple de la voiture au hazard. Ce constructeur fabrique des nouvelles voitures, c'est à dire construire un objet concret à partir de plans définissant une voiture.

Essayons de définir quelles sont les propriétés d'une voiture, et ce que l'on peut faire avec :

Code:
Voiture
____________________
Propriétés :
- Nombre de roues
- Couleur
- Poid
- Cylindré
- Vitesse Max
- Nombre de vitesse
- Longueur
- Largeur
- Hauteur
- Volume du réservoir
- Nombre de portes
- imatriculation

Fonctionnalités :
- Ouvrir une porte
- Démarrer
- Accelerer
- changer de vitesse
- Freiner
- Eteindre
- Remplir le réservoir
- Tourner le volant

Cela reste une vision rapide de ce que peut être UNE voiture, elle posséde des propriétés ou 'attributs', ainsi que des fonctionnalités ou 'méthodes' qui lui sont propre. Cependant tant qu'elle n'est pas construite, je ne peux pas intéragir avec.

Si je veux une nouvelle voiture, je vais donc donner des paramètres au constructeur pour qu'il me fournisse une voiture personnalisée, qui deviendra MA voiture : couleur = noir, nombre de portes = 5, le reste des paramètres sont définit par le constructeur par défaut selon le modèle que je choisi.
A la sortie de l'usine le constructeur aura créé MA voiture selon les plans qu'il posséde et les paramètres que je lui ais transmis. En langage objet, on appel cette action, une instanciation de classe. Une instance de classe est appelé un objet. Je rappel que les termes sont importants, prenez le temps de bien tout relire, pour bien comprendre les bases.

Donc dans une classe, les attributs seront des variables de classe qui ne seront accessible que dans l'objet de classe, elles sont donc privées par défaut. Et les méthodes seront des fonctions de classe qui seront appelable via l'objet de classe créé, elles sont donc publiques. Ca peut paraitre compliqué, mais avec quelques exemples, ça le sera un peu moins.

on va donc créer une classe rectangle :

Code:
classe rectangle
____________________
Attributs :
- largeur
- longueur

Méthode :
- changer_largeur
- changer_longueur
- calculer_perimetre
- calculer_surface

Je pense que l'on a fait le tour de ce que peut faire d'un rectangle. Voila comment cette classe est déclaré en Ruby :

Code:
class Rectangle
 
  def initialize
    @largeur = 0
    @longueur = 0
  end

  def changer_largeur(param_largeur = 0)
    @largeur = param_largeur
  end

  def changer_longueur(param_longueur = 0)
    @longueur = param_longueur
  end

  def calculer_perimetre
    return ( @largeur * 2 ) + ( @longueur * 2 )
  end

  def calculer_surface
    return @largeur * @longueur
  end
end

Récapitulons les instructions importantes :
class : permet de déclarer une nouvelle classe
def : permet de déclarer des fonctions ou procédures de classe, donc des méthodes

Attention, une variable de classe doit avoir comme préfixe le caractère '@' pour qu'elle puisse être accessible dans l'intégralité de la classe.
Attention, la méthode initialize est le constructeur. Cette méthode est appelé automatiquement lors de la crèation d'un objet de classe.

Pour plus de clarté, voici un exemple d'utilisation de cette classe :

Code:
un_rectangle = Rectangle.new
un_rectangle.changer_largeur(6)
un_rectangle.changer_longueur(9)
print un_rectangle.calculer_perimetre
print un_rectangle.calculer_surface

La syntaxe pour créer un objet de classe :
[nom de l'objet] = [nom de la classe].new
L'on peut très bien passer des paramètre au constructeur, en les définissant à la méthode initialize, et en les passant via l'opérateur 'new'

La syntaxe d'appel de méthode :
[nom de l'objet].[nom de la méthode]


Je vous conseille d'essayer de faire de nouvelles classes dans un projet vierges (script aussi), pour vous habituer à la mécanique.
Je posterai à la suite un petit rajout concernant la modification d'accés aux attributs.
Revenir en haut Aller en bas
http://www.tonyryudev.com
 

[Ruby] Cours n°9 : POO - Classes et Objets

Voir le sujet précédent Voir le sujet suivant Revenir en haut 

 Sujets similaires

-
» [Ruby] Cours n°2a : Les tableaux (Partie 2)
» [Ruby] Cours n°1 : Les variables
» [Ruby] Cours n°2 : Les tableaux
» [Ruby] Cours n°4 : structure if
» [Ruby] Cours n°7 : Boucle For
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Zarok RPG Maker :: 

 :: TUTORIELS :: Tutoriels de Programmation
-
Sauter vers: