IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby Discussion :

Besoin d'aide pour créer une classe


Sujet :

Ruby

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 8
    Points : 9
    Points
    9
    Par défaut Besoin d'aide pour créer une classe
    Bonjour à tous,

    Je débute en Ruby et j'ai besoin de créer des librairies facilement utilisable par mes collègues. j'ai donc commencé à créer des classes simples, mais mes besoins deviennent un peu plus complexes. Je ne sais pas si je vais réussir à expliquer ce que je cherche à faire correctement, mais je cherche à faire une classe de ce type-là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Class x 
      def initialize()
        ....
      end
      def getproperty()
          @width * @height
      end
      ICI, je souhaiterai instancier un nouvelle objet avec ces propriétés
      Class y
        # l'objectif est de manipuler un tableau avec des propriétés (add, del, update,etc)
        def initialize()
          ...
        end
        def add_entry()
          ...
        end
        def delete_entry()
          ...
        end
      end 
    end
    Et par la suite l'appeler:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    objDNS = x.new
    objDNS.y.add_entry()
    Ma première question est de savoir si c'est faisable ou pas... peut-être qu'il existe un autre moyen ! Faire hériter !
    Si oui, comment on doit construire la classe et comment l'appeler (require 'class_name') ou quel est le meilleur moyen pour réaliser ce que je veux faire en espérant avoir été compris.

    Merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ton problème n'est pas très bien posé, mais pourquoi ne pas juste utiliser un tableau comme attribut de ta classe (ou un set si les éléments doivent être unique.

    Code ruby : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    require 'set'
     
    class X
      attr_accessor :y
     
      def initialize
        @y = Set.new
      end
    end
     
    x = X.new
    x.y << 22
    puts x.y
    x.y << 44
    puts x.y
    x.y.delete(22)
    puts x.y

  3. #3
    Membre actif
    Profil pro
    Problem Solver
    Inscrit en
    Juin 2013
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Problem Solver

    Informations forums :
    Inscription : Juin 2013
    Messages : 138
    Points : 231
    Points
    231
    Par défaut
    Hello,
    je sens des vieux réflexes Java. En Ruby nous avons des conventions "idiomatiques" (des habitudes) et nous aimons :
    * remplacer les getters/setters par des acceseurs
    * utiliser une syntaxe proche d'un array ou d'une hash

    Tu peux créer ta classe bien sûr, ou même deux classes car j'ai l'impression que tu veux une liste de Trucs, et pour chaque Truc des comportements communs.
    Quand tu veux un exemple simple et rapide, il y a aussi des classes nommées Struct et OpenStruct, qui te permettent de faire une classe très rapidement, en déclarant les propriétés/attributs que tu veux.
    Et des classes Enumerable (Array, Hash et Set) qui te permettent de profiter directement de méthodes classiques comme ajout, retrait, tri, sélection/filtrage, regroupement etc.


    Bref, en Ruby on ne fait pas trop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def get_truc()
          @truc
    end
    def set_truc()
          @truc
    end
    mais plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def truc
      @truc
    end
    def truc=(val)
      @truc = val
    end
    ou mieux encore

    et on ne fait pas trop

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def add_truc(x)
          @trucs << x
    end
    def del_truc()
          @trucs -= [x]
    end
    mais plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def <<(x)
      @trucs << x
    end
    def -(x)
      @trucs -= [x]
    end
    ou mieux encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def each
    # définir "each"
    end
    def <=>(a,b)
    # définir une relation d'ordre
    end
    include Enumerable
    mais ça c'est un peu plus avancé, utiliser des tableaux c'est très bien

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2017
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    hello

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    class MaClasseX
      def initialize
      end
     
      def other_method_x
        obj = MaClasseY.new
        obj.other_method_y
      end
    end
     
    class MaClasseY
      def initialize
      end
     
      def other_method_y
      end
    end
    ca peut faire le job si j'ai bien compris ton besoin

Discussions similaires

  1. Besoin d'aide pour trouver une classe à créer.
    Par tonykart13 dans le forum Général Python
    Réponses: 13
    Dernier message: 09/02/2012, 21h18
  2. Besoin d'aide pour créer une requête
    Par cedric/copy dans le forum ASP
    Réponses: 6
    Dernier message: 13/03/2009, 16h29
  3. Besoin d'aide pour créer une fonction
    Par xavxx58 dans le forum Prolog
    Réponses: 13
    Dernier message: 14/09/2008, 13h03
  4. Besoin d'aide pour créer une requête
    Par fabien59420 dans le forum Requêtes et SQL.
    Réponses: 44
    Dernier message: 26/05/2008, 11h08
  5. Besoin d'aide pour créer une BD
    Par desfrags dans le forum Débuter
    Réponses: 6
    Dernier message: 30/01/2008, 22h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo