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



 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le deal à ne pas rater :
Réassort du coffret Pokémon 151 Électhor-ex : où l’acheter ?
Voir le deal

 

 Apprendre a scripter partie |(1) chapitre ||(2)

Aller en bas 
AuteurMessage
simoni52
Banni par abus de pouvoir
Banni par abus de pouvoir
simoni52


Masculin
Nombre de messages : 169
Age : 30
Projet(s) en cours : Rien pour l'instant d'officel
Niveau Rpg Maker : Euhh bezn question graphisme 5/10 Progrmmation 8.5/10 Scenario 6/10
Jeux Préférés : Advance wars
Date d'inscription : 27/04/2007

Apprendre a scripter partie |(1) chapitre ||(2) Empty
MessageSujet: Apprendre a scripter partie |(1) chapitre ||(2)   Apprendre a scripter partie |(1) chapitre ||(2) EmptyMer 18 Juil 2007, 11:54

Voici donc le deuxieme chapitre pour apprendre le ruby.

Je repete que je ne connais pas le ruby mais je suis tombé desus en apprenands le php.

Ce tutoriel est de Loktar.

Chapitre 2]
Un langage Orienté Objet(titre)
* Quel intérêt ?(ce qu'on apprend)
* Les Classes et les Objets
* Les Méthodes

Ruby est un langage de programmation orienté objet, ça vous le savez déjà. La programmation orientée objet (abrégée POO) est simplement une technique de programmation, tout comme la programmation dite impérative qui caractérise le C ou le PHP et qui n'est qu'une succession d'étapes (conditions, boucles, etc.). Il existe d'autres types de programmation, mais leur étude n'est pas le but de ce tutoriel.

La POO s'organise autour de Classes et, comme son nom le suggère, d'Objets. C'est donc une nouvelle manière d'organiser sa pensée (un paradigme pour les puristes), et par la même occasion son programme. [Don hypocrite] Voyons les avantages qu'elle représente aux yeux des programmeurs.

Petite parenthèse avant de commencer, étudions les commentaires :

Les commentaires sont tout simplement du texte dont le but est d'apporter un complément d'information concernant un élément obscur du code, afin d'en faciliter la relecture à posteriori et la maintenance. L'information présentée doit alors être concise et précise, elle tient généralement en une seule ligne, on utilise alors le symbole # (dièse ou sharp).

Tout texte situé à droite de ce symbole est ignoré par l'interpréteur, jusqu'à un retour à la ligne.


Il peut arriver d'avoir besoin d'étendre des commentaires sur plusieurs lignes, dans ce cas, au lieu de faire débuter chaque nouvelle ligne par un #, vous pouvez encadrer votre paragraphe par =begin et =end. Tout ce qui se trouvera alors entre ces deux mots sera tout bonnement ignoré. Voici un exemple :

Code:
du code #ceci est un commentaire

=begin
tout ce qui est ici sera ignoré
=end 

------------------------------------------------------------------------------------------------------------

Quel intérêt ?

Réutilisation du code


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 apte à 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 dans votre programme basique de tout-à-l'heure.

Les programmeurs et leur légendaire fainéantise ont pensé à une manière de réutiliser un code déjà existant. C'est là qu'intervient la POO : en tirant partie de ce concept fournisant Objets et Classes, voyons ce que nous pouvons faire pour notre exemple : nous allons définir une classe Fenetre et nous servir d'elle à chaque fois que nous voulons créer une nouvelle fenêtre, de cette manière on évite le code inutile.

Un autre avantage découle de celui-ci, il s'agit de l'encapsulation.

L'encapsulation


Un autre concept obscur me direz-vous ! [Don hypocrite]

C'est en fait un mot compliqué pour pas grand chose, en effet elle désigne le fait de masquer les informations contenues dans un Objet, et de les rendre accessibles par des méthodes. Ces informations sont encapsulées dans l'objet. Ainsi, toute la partie technique du code est contournée.

Dans notre exemple : pour modifier la couleur de fond de notre fenêtre (par exemple), ils nous suffit de créer une méthode changerCouleurFond contenant les instructions techniques permettant d'accéder à la couleur de fond de la fenêtre puis de la modifier. Puis nous l'invoquerons chaque fois que le besoin se fera sentir. De plus, 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. N'est-ce pas plus pratique ? [Don hypocrite]
Les Classes et les Objets
Les Classes


Une classe est une catégorie d'objets, elle déclare des propriétés communes aux objets qu'elle définit (on dit qu'une classe instancie des objets ou qu'elle crée des instances de ces différents objets) et les méthodes de ces mêmes objets.

Ainsi, notre classe Fenetre regroupe toutes les informations et toutes les méthodes communes aux fenêtres, elle nous servira de modèle chaque fois que nous voudrons en créer une.

Voici par exemple trois classes existantes :

* Les entiers font partie de la classe Integer
* Les flottants (ce sont des chiffres à virgule, dont la partie décimale est non nulle) font partie de la classe Float
* Les chaînes de caractères font partie de la classe String


Pour déclarer une classe quelconque, il faut procéder ainsi :

Code:
class Fenetre # les noms de classes débutent toujours par une lettre majuscule
  #instructions
end

Le mot-clé class débute la déclaration d'une classe et le mot-clé end se charge de la terminer.

L'héritage


L'orientation objet de Ruby permet de faire hériter certaines classes d'autres classes. C'est là qu'intervient la notion de sous-classe. Par défaut, les sous-classes héritent des méthodes de leur super-classe : elles ont le même comportement. Mais l'intérêt est que vous pouvez vous servir des sous-classes pour modifier des méthodes (la redéfinition de méthodes est abordée un peu plus loin Wink ) ou en ajouter de nouvelles. Cet exemple simple montre comment définir une classe héritant d'une super-classe :

Code:
class Machine
  #méthode de la super-classe
end

class Ordinateur < Machine # on précise que cette classe hérite de la classe Machine
  #méthode héritée de la super-classe ou redéfinie
end


Les Objets


Un objet est un ensemble de données et de méthodes, défini par sa classe. Il est du type de sa classe, par exemple 14 est un objet de la classe Integer, il dispose des méthodes définies par cette classe.

Si nous voulons créer un objet de type Fenetre (une instance de la classe Fenetre), celui-ci disposera des méthodes de cette classe.

Création d'objets


Les objets de type standard comme les nombres (entiers ou flottants), les chaînes de caractères, les symboles, les tableaux, etc. sont créés par simple déclaration.

Code:
a = 5 # nouvel objet de type Integer


Pour tous les autres (ceux que vous avez vous mêmes créés), on utilise la méthode new qui est statique (c'est à dire utilisable depuis n'importe quelle classe), par exemple pour créer un objet de la classe Ordinateur, voici ce qu'il faut faire :

Code:
class Ordinateur
  #
end

laptop = Ordinateur.new # laptop est une nouvelle instance de la classe Ordinateur
Les Méthodes
Une méthode est un ensemble d'instructions réalisant une certaine tâche (par exemple : faire une addition, créer une fenêtre, etc.). Elle est liée à un objet.

Les opérateurs + * - / ** % sont des méthodes. Les objets auxquels ils sont liés sont les objets des classes Integer, Float et String :

Ces 6 opérateurs définissent 6 opérations arithmétiques :

* l'addition : a + b
* la soustraction : a - b
* la multiplication : a * b
* la division : a / b
* le modulo : a % b est le reste de la division euclidienne de a par b, c'est à dire que a, b et r = a%b sont des entiers
* la mise en exposant : a ** 3 = a * a * a


Ces opérations vous permettent de manipuler deux sortes de nombres : les entiers et les décimaux (ou flottants). L'utilisation de parenthèses permet de modifier l'ordre de priorité entre ces opérations. La notation scientifique est aussi tolérée : 1,8.10^4 s'écrit 1.8e4 (à ne pas confondre avec l'exponentielle, mais c'est une autre histoire ^^ ).

L'opérateur d'addition et celui de multiplication peuvent également permettre de manipuler des chaînes de caractères (caractères alphanumériques délimités par des guillemets ou des apostrophes). Le code suivant :

Code:
puts "salut !" + "salut !" + "salut !"
puts "salut !" * 3


a pour résultat :

Code:
salut !salut !salut !
salut !salut !salut !


La seule chose qui doit vous paraître étrange est le mot puts, c'est simplement une méthode affichant une chaîne de caractère en console (la sortie standart) suivie d'un retour à la ligne, on aurait aussi très bien pu utiliser la méthode print ce qui aurait produit le même résultat (mais sans produire de retour à la ligne).

Les méthodes sont définies par le mot-clé def et leur déclaration se clôt par un end.

Code:
def compter # définition de la méthode compter
  #
end


Vous pouvez passer des arguments à vos méthodes, ce sont des paramètres qui peuvent influencer sur le résultat de l'exécution de la méthode en question.

Code:
def compter(arg1, arg2)
  #
end


Ces paramètres peuvent bien évidemment être récupérés, nous verrons comment stocker des donnnées dans le chapitre suivant. Wink

Les méthodes sont couramment déclarées à l'intérieur des classes, mais vous pouvez également les déclarer en dehors. Comme en Ruby tout est objet, elle seront de toutes façons reliées à la super-classe Object.


Redéfinition de méthodes


On redéfinit des méthodes pour en modifier le comportement, mais aussi pour différencier une méthode d'une sous-classe héritée d'une méthode d'une super-classe comme nous l'avons vu avec la notion d'héritage. Un exemple :

Code:
class Machine
  def run
    puts "je suis une machine"
  end
end

class Ordinateur < Machine
  def run
    puts "je suis un ordinateur donc une machine" # on redéfinit la méthode run héritée de Machine
  end
end

objet1 = Machine.new # on instancie un nouvel objet de la classe Machine
objet1.run # on appelle la méthode run de cet objet

objet2 = Ordinateur.new
objet2.run


On obtient donc :

Code : Console
je suis une machine
je suis un ordinateur donc une machine


Lors de l'instanciation d'un nouvel objet, l'interpréteur vérifie si une méthode initialize est associée à cet objet, si c'est le cas il l'exécute, on peut ainsi utiliser cette méthode pour initialiser des objets, c'est à dire assigner des valeurs par défaut à certaines données de l'objet (comme les variables).

Dans d'autres langages, il y a un équivalent à la méthode initialize, ce sont des méthodes qui portent le même nom que la classe (en Java par exemple Wink ).
Le Grand Mystère de la POO s'éclaircit enfin, à présent vous pouvez vous diriger vers le chapitre suivant, celui-ci contient toutes les connaissances de base du Ruby que vous devez maîtriser. Wink
Revenir en haut Aller en bas
http://kakuro.fr.tc
 
Apprendre a scripter partie |(1) chapitre ||(2)
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Apprendre a scripter partie | chapitre |
» Apprendre a scripter partie |(1) chapitre |||(3)
» Apprendre a scripter partie |(1) chapitre |||(3) bis

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Fusion :: LUDOTHEQUE :: Temple du Savoir :: Scripts-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser