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

Langage Perl Discussion :

moose et utilisation d' une variable objet dans plusieurs classe


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 75
    Points : 42
    Points
    42
    Par défaut moose et utilisation d' une variable objet dans plusieurs classe
    Bonjour à tous,

    Après avoir suivi le cours de djibril que je remercie encore. j'ai une petite question sur laquelle je bute concernant l'utilisation de moose et le monde objet.

    j'ai une première classe (la classe mère) dans laquelle je déclare:

    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
     
    package Serveurs;
     
     
    has serveur => 
    		(
    			is => 'rw',
    			,
    		);
     
     
     
    has TYPE_DE_COMPTE =>
    			(
    				is => 'rw',
     
    			);
    j'ai une seconde classe qui est la fille qui contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    package fille;
     
    extends (Serveurs);
     
    has compte_utilisateur=> 
    		(
    			is => 'rw',
    			,
    		);
    et j'ai enfin une autre classe dans laquelle je souhaite pouvoir réutiliser le contenue des objets créer via le constructeur dans mon script principal et accéder en même temps à la classe cyrus ci-dessous en lui communiquant les valeurs contenu dans mon objet saisi dans mon script principal.


    dernière classe:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    #du coup je ne sais pas si je dois faire hériter cette classe de ma classe mère afin que les objets puisse être héritée d'une classe à l'autre, mais ça ne fonctionne pas.
    package Cyrus;
     
    extends (Serveurs);
     
    our $connexion;
     
     
    our $serveur = $this->get_serveur;#ICI JE VEUX RÉCUPÉRER UNE VARIABLE DEPUIS MON SCRIPT PRINCIPA(get_serveur)
     
     
     
    	$connexion->{$serveur} = Cyrus::IMAP::Admin->new( $serveur );
    	$connexion->{$serveur}->authenticate(
    			-authz     => undef,
    			-user      => $Config{cyrus}{$serveur}{user},
    			-password  => $Config{cyrus}{$serveur}{passwd},
    			-mechanism => $Config{cyrus}{$serveur}{mechanism},
    			#~ -separator => '/'
    			)
    		or die "CyrusIMAPAdmin --> Authentification impossible à $serveur";
     
     
     
     
    sub ma_fonction_affiche
    {
    my($this)=@_;
    print $this->get_compte_utilisateur;
    }
    et dans mon script principal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    use fille;
    use Cyrus;
     
     
    my $objet_unit = Unite->new(
    							{TYPE_DE_COMPTE=> 'test'',
    							serveur=>'monserveur',
                                                            compte_utilisateur=>'utilisteur1',
     
     
    							}
    						);
    Je vous remercie pour vos conseils

  2. #2
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Pas sûr de bien comprendre, mais en principe les objets appartiennent à une seule classe. En outre, les objets n'héritent d'une classe parente, ce sont les classes filles auxquels ces objets appartiennent éventuellement qui peuvent hériter d'une classe mère.

    Donc soit ta classe Cyrus hérite de tes autres classes, soit tu passes en paramètre à ta classe cyrus un objet de la classe Serveurs (par exemple) et invoque dans les méthodes de ta classe Cyrus les accesseurs de la classe Serveurs pour récupérer les données dont tu as besoin.

    Je ne sais pas si ça répond bien à la question, car je ne suis pas sûr de bien la comprendre.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    bonsoir,

    je reconnais que ma question est un peu large.

    en fait ce que je souhaite faire.

    C'est depuis mon script principal (qui charge la classe 'fille') utiliser le contenue de mon objet dans lequel j'ai le nom d'un serveur pour l'envoyer à la classe cyrus pour me connecter et ensuite utiliser des méthodes dans mon script principal.

    j'avais penser créer de nouveaux attributs dans la classe cyrus et copier le contenue de ma variable\objet depuis mon script principal vers le nouvel objet pour que la classe cyrus y ait accès, mais je ne pense pas que ça soit très propre.

    tu cites cette manip:
    "soit tu passes en paramètre à ta classe cyrus un objet de la classe Serveurs (par exemple) et invoque dans les méthodes de ta classe Cyrus les accesseurs de la classe Serveurs pour récupérer les données dont tu as besoin."

    effectivement ça me conviendrait, dans la pratique je ne vois pas trop comment faire.


    je pensais que le fait que :
    la classe cyrus hérite de ma classe mère
    ma classe 'fille' hérite de ma classe mère aussi

    donc si dans mon script principal je charge 'use cyrus et use fille' mon objet pourrait 'circuler d'une classe à l'autre. A priori non.

    je te remercie

  4. #4
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Dans le code que tu as montré, la classe Cyrus n'hérite ni de la classe mère, ni de la classe fille. Si tu hérites de la classe mère dans Cyrus, tu pourras bien entendu utiliser les méthodes de la classe mère sur ton objet de la classe Cyrus.

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    tout a fait, exact pardon

    dans mon code c'est ce que j'ai fait la classe cyrus hérite de ma classe mère (je l'ai oublié ici), je vais le rajouter

    et mon script principal charge la classe fille et la classe cyrus.

    sauf que lorsque je crée dans mon script principal un objet, lorsque j'utilise les attributs "serveurs" et "type de compte" dans ma classe mère aucun souci. Mais si j'utilise mon attribu serveur (contenant les valeurs depuis mon script principal) dans la classe cyrus il me dit qu'il ne la trouve pas.

    je me doute bien que je dois pas respecter une logique élémentaire. Doit-je peux être déclarer "has serveur=>..." également dans ma classe cyrus je ne pense pas car si j'ai bien compris le cours de djibrill il y a un vrai héritage de la classe mère vers les classes filles.

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    je te remercie, en cherchant bien j'ai fini par trouver.
    C'est effectivement moi qui ne respectait la logique de la poo.

    je sais pas si mon code est le plus propre mais j'ai compris le principe.

    merci pour ton temps.

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 75
    Points : 42
    Points
    42
    Par défaut
    j'ai parlé un peu vite il y a une seul détail sur lequel je bute

    dans ma classe cyrus je voudrai que par défaut il initialise la connexion en chargeant le nom du serveur, mais sans le mettre dans une méthode. je ne sais pas si c'est possible.

    exemple:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    #!/usr/bin/perl
    package Outilscyrus;
     
     
     
    use Cyrus::IMAP::Admin;
    use Carp; # Utile pour émettre certains avertissements
    use vars qw($VERSION); # Version de notre module
    use Moose; # Il charge automatiquement strict et warnings
     
    use Data::Dumper; 
    use MooseX::FollowPBP; # apt-get install libmoosex-followpbp-perl
     
     
    use vars qw($VERSION); # Version de notre module
     
    extends qw (ma classe mère); #hérite de la classe mère
     
     
    $VERSION = '22012015.1';
     
     
    our $connexion;
    our $serveur ;
     
     
     
    #~ sub connexion_cyrus
    	#~ {
    my ($this)=@_;
     
    #######################connexion au serveur cyrus##########################
    #~ our $connexion;
    print $this->{serveur};
     
     
    #SI J UTILISE UN NOM FIXE DE SERVEUR, ÇA FONCTIONNE JE SOUHAITERAI ENVOYER LE NOM DU SERVEUR À #L'APPEL DE LA CLASSE DANS MON SCRIPT PRINCIPAL.
    $serveur = $this->{serveur};#backend change à chaque utilisateur
     
     
     
     
     
    	$connexion->{$serveur} = Cyrus::IMAP::Admin->new( $serveur );
    	$connexion->{$serveur}->authenticate(
    			-authz     => undef,
    			-user      => $Config{cyrus}{$serveur}{user},
    			-password  => $Config{cyrus}{$serveur}{passwd},
    			-mechanism => $Config{cyrus}{$serveur}{mechanism},
    			#~ -separator => '/'
    			)
    		or die "CyrusIMAPAdmin --> Authentification impossible à $serveur";
     
     
     
    		);
     
    #en ensuite j'utilise les méthode

Discussions similaires

  1. Utilisation d'une variable php dans popup javascript
    Par cybernetique dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/01/2008, 21h27
  2. Réponses: 7
    Dernier message: 05/01/2008, 19h37
  3. Utilisation d'une variable publique dans une DLL
    Par Delphi-ne dans le forum Delphi
    Réponses: 13
    Dernier message: 05/12/2006, 13h19
  4. [VB6] Liberer la memoire utilisée par une variable Objet
    Par ProgElecT dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 25/08/2006, 19h17
  5. Utilisation d'une Variable(Vb) dans d'autre language
    Par cach dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/02/2005, 12h00

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