Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parDominique Rivard Modifié depuis plus de 8 années
1
Introduction à Ruby Julien De Bona Bawet, 15 avril 2006
2
Plan ● Présentation de Ruby ● Introduction à la programmation orientée objet ● Introduction à Ruby ● Petite référence ● Exercices
3
Ruby, le langage pragmatique ● Créé en 1995 par Yukihiro Matsumoto (Matz) ● Langage orienté objet ● Puissance de Perl ● Clarté de Python ● Gestion automatique de la mémoire ● langage transparent ● langage interprété
4
Points forts ● orientation objet très poussée ● extrèmement dynamique ● itérateurs
5
Plan ● Présentation de Ruby ● Introduction à la programmation orientée objet ● Introduction à Ruby ● Petite référence ● Exercices
6
Un langage orienté objet ● Objet = données + actions ● variable membre = donnée rattachée à l'objet ● méthode = action pouvant être réalisée par l'objet ● On définit des classes; un objet est une instance d'une classe ● Mécanisme d'héritage ● Envoi de signaux (méthodes) aux objets
7
Quelques concepts ● Interface et implémentation ● Variable locale, d'instance ou de classe ● Méthode de classe ou d'instance ● Méthode privée, protégée ou publique ● Constructeur ● Itérateur ● Accesseur
8
Plan ● Présentation de Ruby ● Introduction à la programmation orientée objet ● Introduction à Ruby ● Petite référence ● Exercices
9
Une première classe class Complexe def initialize(r,i) @reel=r @imag=i end def get_reel return @reel end def set_reel(nombre) @reel=nombre end def get_imag(nombre) return @imag end (...) def Complexe.produit(a,b) reel=a.get_reel*b.get_reel - a.get_imag*b.get_imag imag=a.get_reel*b.get_imag + a.get_imag*b.get_reel return Complexe.new(reel,imag) end # Exemple d'utilisation c=Complexe.new(1,2) puts "#{c.get_reel}+#{c.get_imag}i" c=Complexe.produit(c,c) puts "#{c.get_reel}+#{c.get_imag}i"
10
Exemple d'héritage class Reel < Imaginaire def initialize(reel) super(reel,0) end # Simplement une optimisation def Reel.produit(a,b) Return Reel.new(a.get_reel * b.get_reel) end
11
On recommence façon Ruby class Complexe attr_accessor :reel,:imaginaire def initialize(reel,imaginaire) @reel=reel @imaginaire=imaginaire end def Complexe.produit(a,b) reel=a.reel*b.reel - a.imaginaire*b.imaginaire imag=a.reel*b.imaginaire + a.imaginaire*b.reel return Imaginaire.new(reel,imag) end def module return Math.sqrt(@reel*@reel+@imaginaire*@imaginaire) end c=Complexe.new(0,1) puts "#{c.reel}+#{c.imaginaire}i"
12
Syntaxe ● Pas de ";" en fin de ligne ● blocs terminés par "end" ● appel de méthode: objet.méthode(arg1,arg2) ● if condition instructions end ● while condition instructions end
13
Syntaxe (2) ● Peu de structures de contrôle (-> itérateurs) ● les commentaires commencent par "#" ● parenthèses facultatives ● nom de classe: Majuscule ● variable locale: minuscule ● variable d'instance: @minuscule ● variable de classe: @@minuscule ● variable globale: $minuscule
14
Syntaxe (case) ● case objet when objet2 instructions when objet3 instructions else instructions end ● utilise l'opérateur ===
15
Chaînes de caractères ● "texte": interpolation de variables et séquences d'échappement ● 'texte': séquences d'échappement ● n=3 puts "les #{n} petits cochons" ● \n, \\, \', \"...
16
Expressions Rationnelles ● Classe Regexp ● Motifs auxquels comparer des chaînes ● format: /motif/ ou /motif/options ● ^, $, \d, \w, \s ● +, *, {m,n}, ? ● a | b, () ● \1,... ●. = n'importe quel caractère
17
Expressions Rationnelles (suite) ● [abc]: a,b ou c ● options: – i: non sensible à la casse – m: "." correspond aussi à un retour à la ligne
18
Conventions ● methode=: setter ● methode: getter ● methode?: booléen ● methode!: s'applique à l'objet
19
Classes et objets ● Hiérarchie de classes dont "Object" est la racine ● Tout est objet dans Ruby ● tout le code non explicitement rattaché à une classe est rattaché à Object ● tous les objets en héritent; ● on manipule des références aux objets
20
Héritage entre classes ● Une classe peut hériter d'une autre si elle est un cas particulier de la classe-mère ● Bon: Oiseau < Animal, Réel < Complexe ● Mauvais: Elevage < Animal, Oiseau < Plume
21
Itérateurs ● Utilisé pour parcourir les collections d'objets ● Dans d'autres langages OO: une classe séparée ● Dans Ruby: une méthode acceptant un bloc de code ● tableau=[1,4,6] tableau.each do |element| puts element end
22
Itérateurs (implémentation) ● yield [arguments] ● class Test def iter(max) i=0 while (i < max) yield i i++ end end t=Test.new t.iter(5) { |nombre| puts nombre }
23
Exceptions ● Traitement des erreurs ● classe de base: Exception ● Exceptions dérivées de StandardError ● référencée par $! ● begin... rescue... ensure... end ● raise, retry
24
Plan ● Présentation de Ruby ● Introduction à la programmation orientée objet ● Introduction à Ruby ● Petite référence ● Exercices
25
Entrées et sorties ● puts ● gets
26
Classes de base: méthodes courantes ● ==,, ● === (case) ● to_s
27
Classes de base: Object ● methods ● public_methods ● == ● clone ● nil? ● instance_of? ● kind_of?
28
Classes de base: string ● sub, sub!, gsub, gsub! ● chomp, chomp! ● strip ● split ● =~ ● each, each_line
29
Classes de base: Integer ● upto, downto ● step, times
30
Ressources ● Pickaxe book - http://www.rubycentral.com/bookhttp://www.rubycentral.com/book ● Référence - http://www.rubycentral.com/ref
31
Plan ● Présentation de Ruby ● Introduction à la programmation orientée objet ● Introduction à Ruby ● Petite référence ● Exercices
32
Exercice 1 ● Créer une classe "Livre" ● Elle possède des méthodes pour obtenir et donner une valeur à l'auteur, le titre et le prix HTVA ● Elle possède une méthode renvoyant le prix TVAC et une méthode pour spécifier le prix du livre TVAC ● La méthode to_s affiche "Auteur: Titre"
33
Exercice 2 ● Créer une classe "LivreBiblio", correspondant à un livre dans une bibliothèque ● Elle possède, en plus d'un livre normal, une date de prêt en cours (null si pas prêté), une méthode "prêt" et une méthode "retour", modifiant cette date
34
Exercice 3 ● Créer une classe "Biblio", contenant une collections de "LivreBiblio"s ● Elle possède une méthode pour ajouter un livre ● Elle permet d'itérer sur chaque livre ● Elle possède un itérateur sur les livres ayant un auteur donné
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.