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

avec Java Discussion :

this & état initial d'un objet


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut this & état initial d'un objet
    salut a tous .
    je sais qu'on peut faire autrement mais je veut vérifier si on peut enregistrer l'état d'un objet lors de sa création avec le mot clé this

    voila un exemple explicatif:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class MonClasse
    { 
     
     MonClasse etat_Initiale;
     
     
    public MonClasse(pram1,param2....)
    {
      etat_initiale = this;
    }
     
    }
    est ce qu'avec cette façon ,je peut récupérer l'état global(les valeurs de mes attirbuts initialement lors de la création...) après les avoir modifiers ultérieurement ?

  2. #2
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    Bonjour,
    Il me semble que pour utiliser this, il faudrait s'y prendre de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public MonClasse(pram1,param2....)
    {
      //etat_initiale = this;
      this.param1 = param1; this.param2 = param2;
    }
    N'étant pas vraiment sur, car débutant, peut être qu'une confirmation par essais pourrais conformé cet exemple.
    Cordialement.

  3. #3
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par Microbulle Voir le message
    Bonjour,
    Il me semble que pour utiliser this, il faudrait s'y prendre de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public MonClasse(pram1,param2....)
    {
      //etat_initiale = this;
      this.param1 = param1; this.param2 = param2;
    }
    N'étant pas vraiment sur, car débutant, peut être qu'une confirmation par essais pourrais conformé cet exemple.
    Cordialement.
    oui tu as raison c'est comme ça qu'on utilise this (sans plus de détail sur comment et pourquoi) ,mais moi, je cherche la philosophie

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par slim_java Voir le message
    est ce qu'avec cette façon ,je peut récupérer l'état global(les valeurs de mes attirbuts initialement lors de la création...) après les avoir modifiers ultérieurement ?
    Le mot clé "this" représente l'instance sur laquelle tu travailles.
    En effectuant "etatInitial = this;" tu stockes cette instance dans une variable nommée etatInitial. Si ensuite tu modifies "this", alors "etatInitial" sera modifié de la même manière, puisque les deux variables pointent vers la même instance.
    Si tu veux vraiment stocker l'état initial d'un objet avant de modifier celui-ci, il faut vraiment le copier, élément par élément si besoin...

  5. #5
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par Astartee Voir le message
    Le mot clé "this" représente l'instance sur laquelle tu travailles.
    En effectuant "etatInitial = this;" tu stockes cette instance dans une variable nommée etatInitial. Si ensuite tu modifies "this", alors "etatInitial" sera modifié de la même manière, puisque les deux variables pointent vers la même instance.
    Si tu veux vraiment stocker l'état initial d'un objet avant de modifier celui-ci, il faut vraiment le copier, élément par élément si besoin...
    ce que tu vien de dire est logique et marche avec toute 2 ,3...n référence qui pointent sur un même emplacement mémoire c'est pas ça qui m'inquiéter mais si je fait comme ça dans le constructeur :

    public Mon class(param1,param2....)
    {
    etat_Inial=new MonClasse(this);
    }

    alors ca marche ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par slim_java Voir le message
    ce que tu vien de dire est logique et marche avec toute 2 ,3...n référence qui pointent sur un même emplacement mémoire c'est pas ça qui m'inquiéter mais si je fait comme ça dans le constructeur :

    public Mon class(param1,param2....)
    {
    etat_Inial=new MonClasse(this);
    }

    alors ca marche ?
    Salut,

    Ça marchera si tu as bien défini ton constructeur par copie
    Tu peux aussi implémenter Clonable et implémenter la méthode clone()
    Notamment lors de la copie d'objets non immuables, par 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
     
    public class MaClasse {
     
      private MaClasse initialState;
     
      private Date date; // java.util
     
      public MaClasse(...) {
        initialState = this.clone();
      }
     
      public MaClasse clone() {
     
        MaClasse result = new MaClasse();
     
        result.date = this.date; // -> si tu modifies ta date, celle de l'état initial sera modifiée
        result.date = new Date(this.date.getTime()); // tu as une nouvelle instance de date, donc plus de problème
     
        return result;
     
      }
    }
    Bref il faut bien faire attention lors de la copie.
    Autre remarque : quel est l'état initial de ton instance état initial ? tu as pas peur de boucler infiniment ?

  7. #7
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par George7 Voir le message
    tu as pas peur de boucler infiniment ?
    oui c'est ce qui m'ai venu à l'esprit ,je vais optez pour le constructeur par copie et faire preuve de patience

  8. #8
    Membre éclairé Avatar de Caxton
    Homme Profil pro
    Sans
    Inscrit en
    Janvier 2005
    Messages
    586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Sans

    Informations forums :
    Inscription : Janvier 2005
    Messages : 586
    Par défaut
    Peut être que cette idée sera valable.
    Pourquoi ne pas stocker tes états initiaux dans un tableau? Les accès, par la suite serais simplifier, d'autant plus qu'il n'est pas nécessaire de déclarer par avance la taille du tableau et vue que la taille est disponible par la méthode ".lenght".
    Enfin je dit ça, je ne dit rien
    C'est une simple suggestion

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Par défaut
    Citation Envoyé par slim_java Voir le message
    ce que tu vien de dire est logique et marche avec toute 2 ,3...n référence qui pointent sur un même emplacement mémoire c'est pas ça qui m'inquiéter
    Bah ça n'avait pas l'air clair pour toi, ou sinon tu n'aurais pas du poser la question


    Citation Envoyé par slim_java Voir le message
    mais si je fait comme ça dans le constructeur :
    public Mon class(param1,param2....)
    {
    etat_Inial=new MonClasse(this);
    }
    Là, clairement, etat_Initial contient une nouvelle instance de MonClasse, donc les modifications effectuées sur "this" ne l'affecteront pas directement. Ensuite, il reste à définir le constructeur MonClasse(MonClasse), de façon à ce que l'état de l'objet donné en paramètre soit bien copié dans le nouvel objet créé...
    Évidemment, si certains champs de MonClasse sont des objets et que tu te contentes de copier leur référence, alors toute modification sur ces objets sera visible dans etat_Initial... A toi de voir si tu veux ou non effectuer une copie "en profondeur".

  10. #10
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    Citation Envoyé par Astartee Voir le message
    Bah ça n'avait pas l'air clair pour toi, ou sinon tu n'aurais pas du poser la question
    cette fois ,ce que tu disais sera logique si j'ai poster ma question avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     etat_Inial = reférenceObjet
    avec reférenceObjet autre que this

Discussions similaires

  1. Réponses: 11
    Dernier message: 08/05/2014, 18h10
  2. [CKEditor] modifier état initial pour ajout modèle
    Par damien40 dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 04/05/2007, 10h40
  3. Exporter un état dans Word avec objet
    Par dinette dans le forum Access
    Réponses: 12
    Dernier message: 04/01/2007, 15h15
  4. Un état pour un seul objet
    Par spekal dans le forum UML
    Réponses: 1
    Dernier message: 20/06/2006, 09h53
  5. photo sur état depuis cadre d'objet
    Par Ps4 dans le forum Access
    Réponses: 2
    Dernier message: 23/09/2005, 10h58

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