La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Introduction à Ruby Julien De Bona Bawet, 15 avril 2006.

Présentations similaires


Présentation au sujet: "Introduction à Ruby Julien De Bona Bawet, 15 avril 2006."— Transcription de la présentation:

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é


Télécharger ppt "Introduction à Ruby Julien De Bona Bawet, 15 avril 2006."

Présentations similaires


Annonces Google