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 Java Discussion :

c'est quoi objet immutable?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Par défaut c'est quoi objet immutable?
    Bonjour,

    j'ai un souci de comprendre le principe des objets immutables .

    Je sais que : Wrapper objects are immutable.

    mais je ne comprends le principe.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    immutable = ne change pas!

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Par défaut
    c'est à dire il n y a pas des méthodes pour changer sa valeur?

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par Sun03 Voir le message
    c'est à dire il n y a pas des méthodes pour changer sa valeur?
    oui et mieux encore: membres final.

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Par défaut
    Merci bien, je vois bien.

    Bonne journée

  6. #6
    Membre éclairé
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Par défaut Relance de sujet
    Bonjour à tous,

    Je me permet de réagir a ce post après un long moment deja

    Quand vous dite d'utiliser au maximum des objets immutable,

    comment traduisez vous cela dans l'implementation?

    Comme vous le savez avec les librairies reactive sous divers technos, ce principe est deja assez utilisé et recommandé.

    Peut alors quand même implementer tout de même le principe d'immutable en dehors de ce que font deja ces libraires ?

    Quel en serait les avantages ou inconvénients ? peut-on en abuser également, est-ce recommander? Et dernière question quel sont les impacts sur les performances au niveau de l'application?

    Merci en tout cas pour cette question Sun03

  7. #7
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 326
    Billets dans le blog
    12
    Par défaut
    Bonsoir,


    Quand vous dite d'utiliser au maximum des objets immutable, comment traduisez vous cela dans l'implementation?
    Pour résumer, tu dois mettre toutes les limitations possibles pour que ton objet ne puisse pas changer d'état, ta classe ne doit pas avoir de setter (mutateurs) par exemple. Ta classe doit être final pour pas que d'autres classes puissent en hériter. Pense à mettre tous tes champs en private pour qu'ils ne soient pas accessibles de l'extérieur et final pour qu'ils soient bien tous initialisés à la constructeur de l'objet. Soit prudent avec certains getters qui retournent une List par exemple, on peut toujours faire un add avec et changer son état, tu peux retourner une copie de ces objets.

    Quel en serait les avantages ou inconvénients ? peut-on en abuser également, est-ce recommander? Et dernière question quel sont les impacts sur les performances au niveau de l'application?
    Cela présente l'avantage de pouvoir utiliser ces objets threadsafe sans crainte dans un contexte multithread. L'inconvénient est qu'il faut savoir quand appliquer le concept d'immutabilité sur une classe, ça peut être utile sur les types de base (les Wrappers Integer/Long/Double etc, BigInteger/BigDecimal, les dates, les valeurs monétaires). Cela peut aussi avoir des conséquences sur la mémoire alloué, tu vas créer de nouveaux objets à chaque changement d'état au lieu d'utiliser le même objet.



    A+
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  8. #8
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    en bon français: immuables -> dont l'état ne change pas
    ces objets ont par ailleurs un certain nombre d'avantages: pas d'effet de bord
    (modification incontrolée de l'état), bonne prise en compte par des optimisations (pas de conflits d'accès), etc. Il est intéressant d'essayer de peupler ses applications avec ses propres objets immuables.

  9. #9
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Le principe c'est que tu ne peux pas les modifier. Si tu changes la valeur d'un Long, en fait tu crées un nouveau Long (et si le premier Long avait été affecté à des variables, il leur reste affecté).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [sbadecoder a dit].. C'est quoi pour vous un beau programme?
    Par seb.49 dans le forum Langages de programmation
    Réponses: 14
    Dernier message: 13/02/2004, 10h41
  2. c'est quoi un 'system catalogs' ...
    Par jaimepasteevy dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 08/12/2003, 16h47
  3. C'est quoi XMLRAD ?
    Par laffreuxthomas dans le forum XMLRAD
    Réponses: 10
    Dernier message: 09/08/2003, 02h42
  4. C'est quoi "Profile" dans le assign du XMLGram ?
    Par Lux interior dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/02/2003, 11h37
  5. C'est quoi exactement un générateur d'états
    Par Henry Cesbron Lavau dans le forum Outils de restitution et d'analyse
    Réponses: 0
    Dernier message: 02/04/2002, 19h15

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