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

Slides:



Advertisements
Présentations similaires
F. Voisin : Introduction à Java 1 Introduction à Java - les interfaces - Frédéric VOISIN FIIFO - « Remise à Niveau »
Advertisements

C++ Les fonctions. Présentation Utilité : Dès qu'un programme dépasse la centaine de lignes de code, il est pratique de pouvoir le décomposer en plusieurs.
Développement à l'Aide de Langages Dynamiques : Smalltalk module IT308: Méthodologies et outils logiciels Nada Ayad, Damien Cassou et Annabelle Souc.
IFT359 – Programmation fonctionnelle Thème 02 B partie A introduction au langage fonctionnel choisi 1.
Ruby votre prochain langage de programmation préféré Guillaume Cottenceau LinuxDays Genève 22 Mai 2007.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Fonctions ● Namespace ● Tests ● Boucles ● Pointeurs, références.
1 Programmation en C++ C++ de base ● Programme C++ ● Variables, objets, types ● Types et opérations fondamentales ● Tests ● Boucles ● Pointeurs, références.
Présentation python : Épisode 3 ● Comment programmer comme un gentilhomme ? ● Le style de code ou comment bien présenter ● Les test unitaires ou comment.
1 Bonnes Pratiques ● Indentation ● Présentation ● Initialisation des variables ● Conditions ● Gestion d'erreurs ● Conventions.
Algorithmique & Langage C IUT GEII S1
UE2 - M22 Licence acoustique
Le Langage JavaScript pour le web
Ajouter le code dans une page html
Modèle objet : les classes
Environnement de développement des BD
Les Instructions Itératives (Les Boucles)
Introduction au Langage Pascal
LES TABLEAUX EN JAVA.
Chapitre 1 nombres, chaînes de caractères, booléens, et VARIABLES
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Pas de variable globale
Les notions de classe et d'objet
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
JavaScript.
Algorithmique et programmation de modèles numériques
Instructions de contrôle
Semaine #1 INF130 par Frédérick Henri.
L'ORM d'OpenERP Mercredi 15 décembre 2010.
AO (Architecture des ordinateurs)
Ajouter le code dans une page html
Principes de programmation (suite)
Langages de programmation TP7
Les expressions régulières en javascript
Présentation python : Épisode 3
Les fonctions.
Les fonctions.
Session 1 31 mai 2017 Plateforme ICONICS Justine Guégan
SIF-1053 Architecture de ordinateurs
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Langages de programmation TP3
Python for beginners Qu'est ce que Python
Expression régulières
Fonctions Logiques & Algèbre de BOOLE
Week 1 Lecture 1 Introduction à R L3PRO 2017.
Introduction à l’algorithmique. Introduction Algorithme: Procédure décrivant, étape par étape, une méthode permettant de résoudre un problème. Mot provenant.
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
Programmation en C++ C++ de base
Structure D’une Base De Données Relationnelle
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Programmation Orientée Objet C# El Akel Bouchra ISMONTIC Tanger 2013/2014.
Plus de 4000 langages....
Calcul Scientifique Initiation à SCILB
Bases de données sous Access. Initiation aux bases de données  Structure d’une base de données.
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE
© Robert Godin. Tous droits réservés.
Les classes et les objets
Paradigme Orienté Objet
Programmation Web : DOM en PHP
Expressions régulières
Les exceptions Le mécanisme des exceptions est destiné à permettre aux fonctions profondes d'une bibliothèque de notifier la survenue d'une erreur aux.
Principes de programmation (suite)
PROGRAMMATION ET ENSEIGNEMENT
Cours 8 5. Appels de fonctions Le matériel Concepts de pile
Présentation Chaînage dynamique Retour sur les tableaux
Listes Chaînées.
Lecture/Écriture de fichiers (I/O)
Variables et accès en Java
Analyse et programmation langage ADA
Introduction à L’Informatique
Bases de données Singleton pour la connexion
Transcription de la présentation:

Introduction à Ruby Julien De Bona Bawet, 15 avril 2006

Plan ● Présentation de Ruby ● Introduction à la programmation orientée objet ● Introduction à Ruby ● Petite référence ● Exercices

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é

Points forts ● orientation objet très poussée ● extrèmement dynamique ● itérateurs

Plan ● Présentation de Ruby ● Introduction à la programmation orientée objet ● Introduction à Ruby ● Petite référence ● Exercices

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

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

Plan ● Présentation de Ruby ● Introduction à la programmation orientée objet ● Introduction à Ruby ● Petite référence ● Exercices

Une première classe class Complexe end def get_reel end def end def get_imag(nombre) 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"

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

On recommence façon Ruby class Complexe attr_accessor :reel,: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 end c=Complexe.new(0,1) puts "#{c.reel}+#{c.imaginaire}i"

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

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 ● variable de classe: ● variable globale: $minuscule

Syntaxe (case) ● case objet when objet2 instructions when objet3 instructions else instructions end ● utilise l'opérateur ===

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, \\, \', \"...

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

Expressions Rationnelles (suite) ● [abc]: a,b ou c ● options: – i: non sensible à la casse – m: "." correspond aussi à un retour à la ligne

Conventions ● methode=: setter ● methode: getter ● methode?: booléen ● methode!: s'applique à l'objet

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

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

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

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 }

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

Plan ● Présentation de Ruby ● Introduction à la programmation orientée objet ● Introduction à Ruby ● Petite référence ● Exercices

Entrées et sorties ● puts ● gets

Classes de base: méthodes courantes ● ==,, ● === (case) ● to_s

Classes de base: Object ● methods ● public_methods ● == ● clone ● nil? ● instance_of? ● kind_of?

Classes de base: string ● sub, sub!, gsub, gsub! ● chomp, chomp! ● strip ● split ● =~ ● each, each_line

Classes de base: Integer ● upto, downto ● step, times

Ressources ● Pickaxe book - ● Référence -

Plan ● Présentation de Ruby ● Introduction à la programmation orientée objet ● Introduction à Ruby ● Petite référence ● Exercices

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"

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

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é