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 :

java et instanciation


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut java et instanciation
    Bonjour à tous,

    J'ai lu plusieurs tutos, seulement j'ai une question (qui peut sembler un peu idiote) concernant l'instanciation des classes :
    J'ai vu que lorsqu'on voulait instancier, autrement dit créer un objet, d'une classe dans une autre classe: il fallait passer par new NomDeClasse();
    Seulement, voici le code sur lequel je travaille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActionMessages messages = new ActionMessages();
    ici, je vois l'instanciation explicite de ActionMessages

    Mais j'ai l'impression que dans le code ci-dessous, on crée des instances de classe, mais sans le new() o_O

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CezarInfosUtilisateur infosUtilisateur = CezarSecuriteManager.getInstance().getInfoUtilisateur(request);
    Integer autoriteUtilisateurId = infosUtilisateur.getEntiteAppartenance().getId();
    String loginAutorite = infosUtilisateur.getEmail();
     
    Integer habilitationId = saisieDecisionHabilitationForm.getId();
    Integer habilitationVersion = saisieDecisionHabilitationForm.getVersion();
    Integer typeDecisionId = new Integer(saisieDecisionHabilitationForm.getTypeDecisionId());
    CezarInfosUtilisateur étant une classe, de même que CezarSecuriteManager.
    On crée donc des objets sans passer par new?
    je précise que par la suite, on passe autoriteUtilisateurId ,loginAutorite,habilitationId habilitationVersion ,typeDecisionId en paramètre dans une méthode de la même classe où se trouve le morceau de code que j'ai mis ci-dessus.

    Pouvez-vous m'aider,svp?

    Merci d'avance
    Nadsky

  2. #2
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Par défaut
    dans ce cas je pense que les attribue et les metrhodes que tu as cité sont static example (getEmail();getId(); ... )
    donc c'est pourquoi une fois instancier lors du lancement de votre application, il suffit dans la classe appelant de faire un import de cette clasee et tu appel ses methodes et attributs static.

  3. #3
    Membre Expert
    Avatar de azerr
    Homme Profil pro
    Ingénieur Etude JEE/Eclipse RCP
    Inscrit en
    Avril 2006
    Messages
    942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Etude JEE/Eclipse RCP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 942
    Par défaut
    Bonjour,

    Je penses que si tu regarde le code de la classe CezarSecuriteManager tu as un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class CezarSecuriteManager() {
     
         private static CezarSecuriteManager  manager = null;
     
        public static CezarSecuriteManager getInstance() {
            if (manager == null)
                manager = new CezarSecuriteManager ();
           return manager;
        }
    }
    Donc comme tu peux voir il y a une instance CezarSecuriteManager qui s'effectue, mais une sule fois. Ce code suit le pattern Singleton qui te permet d'instancier une fois la classe CezarSecuriteManager qui n'a pas d'etat.

    Ce pattern permet d'eviter d'instancier un manager a chaque fois que tu en as besoin, ce qui peut optimiser grandemenent les performances.

    Angelo

  4. #4
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut
    le code de CezarSecuriteManager est identique à ce que tu as écrit
    en fait on instancie qu'une seule fois dans CezarSecuriteManager.

    Merci beaucoup de m'avoir répondu!!!
    Nadsky

  5. #5
    Membre confirmé Avatar de nadsky
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 118
    Par défaut
    Bonjour, j'ai une autre question semblable à ma première :

    voici le début du code, précédant le morceau de code que j'ai mis dans mon message précédent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	SaisieDecisionHabilitationForm saisieDecisionHabilitationForm = (SaisieDecisionHabilitationForm) form;
    On crée saisieDecisionHabilitationForm de type SaisieHabilitationForm, voici le constructeur de cette classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public SaisieDecisionHabilitationForm() {
    		Date maintenant = new Date();
    		// this.getSaisieDecisionForm().setDateDebutValidite(DateUtils.convertToString(maintenant));
    		this.getSaisieDecisionForm().setDateFinValidite(DateUtils.convertToString(DateUtils.addYears(
    				maintenant, 5)));
    	}
    on instancie un SasieHabilitationForm, mais je ne vois toujours pas de new()...
    s'agit -il d'un singleton???

    merci d'avance

    Nadsky

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 50
    Par défaut
    Ce n'est ni un singleton ni une instanciation mais un transtypage.

    Va voir dans ton code ou l'objet form est cree

    et si l'objet Form n'est pas de la classe SaisieDecisionHabilitationForm alors regarde les heritages que tu as pour essayer de comprendre ce qui se passe.

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par nadsky Voir le message
    on instancie un SasieHabilitationForm, mais je ne vois toujours pas de new()...
    Normal il n'y en a pas !

    Ce n'est pas parce que tu as une déclaration de variable que tu as forcément une instanciation d'un nouvel objet !


    Ici tu as un objet qui existe déjà (form), déclaré d'un type quelconque (tu ne le précise pas) et qui doit être déjà instancié.

    La ligne suivante effectue un simple transtypage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SaisieDecisionHabilitationForm saisieDecisionHabilitationForm = (SaisieDecisionHabilitationForm) form;
    C'est à dire que la variable "saisieDecisionHabilitationForm" va référencer le même objet que "form" mais en le déclarant d'un type différent (grâce au cast).

    Bien sûr si le type réel de "form" n'est pas compatible avec SaisieDecisionHabilitationForm, c'est à dire si ce n'est pas ce type précis ou un type enfant, alors tu obtiendras une ClassCastException...


    a++

Discussions similaires

  1. Instancier les classes en java
    Par boukhali dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 27/03/2010, 10h01
  2. [Java] Instancier des classes
    Par nahouto dans le forum MATLAB
    Réponses: 4
    Dernier message: 29/07/2009, 11h09
  3. Instanciation d'objet en JAVA
    Par Sabact dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 10/06/2008, 10h31
  4. [Java] Ne pouvoir instancier une classe qu'une seule fois
    Par Xiao-An dans le forum Design Patterns
    Réponses: 12
    Dernier message: 09/02/2007, 16h12
  5. Réponses: 7
    Dernier message: 21/06/2005, 17h04

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