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 :

Debut en java divers questions.


Sujet :

avec Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut Debut en java divers questions.
    Bonjour a tous,
    j'ai beaucoup code en c et c++ et je vient de mettre au java, j'aurai donc quelques questions :

    - Si je fait hériter une classe de Thread (extends Thread), ma classe sera threader d'accord mais l'accès au attribut doit il être mutexer ou c'est implicitement fait ? genre dans une méthode qui pop une stack il faut prendre un mutex poper l'élément et relâcher le mutex ou pas besoin ? Si oui quelle classe implémente les mtuex ?
    - Les pointeurs sur méthodes existe-t'ils ? Si non y-a-t'il un équivalent ?
    - Supposons que je code une classe genre Matrice, vu qu'il n'y a pas de surcharge d'opérateur en Java, impossible d'accéder a un élément via [][] ?
    Obliger de faire une méthode private int GetValue(int x, iny)... ?
    - Eclipse colorie les const ? il ne semble pourtant ne pas être implémente .. ?

    Merci d'avance,
    Cordialement,
    NeoKript

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Salut.

    J'ai aussi récemment commencé en Java, j'avais jusqu'ici plutôt l'habitude du C. Tout ce que je peut te dire donc c'est qu'on m'a appris que la gestion de la mémoire était différente en Java et qu'il n'y avait pas de pointeurs ...

    Bonne continuation.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par NeoKript Voir le message
    - Si je fait hériter une classe de Thread (extends Thread), ma classe sera threader d'accord
    Il faut distinguer le Thread (objet) du thread (unité d'exécution). On crée l'unité d'exécution en utilisant Thread.start()
    mais l'accès au attribut doit il être mutexer ou c'est implicitement fait ? genre dans une méthode qui pop une stack il faut prendre un mutex poper l'élément et relâcher le mutex ou pas besoin ? Si oui quelle classe implémente les mtuex ?
    Les attributs ne sont pas synchronisés par défaut. Sauf pour les classes ou c'est mentionné comme tel. Le plus simple, pour commencer, est d'utiliser les classes spécialisées comme les blockingqueue, qui permettent d'ajouter et supprimer des éléments d'une queue de maniere synchronisée.
    - Les pointeurs sur méthodes existe-t'ils ? Si non y-a-t'il un équivalent ?
    Pas de pointeurs, que ce soient sur des valeurs ou des méthodes, seulement des références aux objet. Pour implémenter l'équivalent d'un callback, on utiliser une interface et un objet qui l'implément. C'est l'objet qui fait office de callback. Pour des exemples, regarde dans les api GUI et les tutoriel swing. Tu verra plein d'utilisation pour réagitr aux clicks et autre mouvements de souris
    - Supposons que je code une classe genre Matrice, vu qu'il n'y a pas de surcharge d'opérateur en Java, impossible d'accéder a un élément via [][] ?
    Obliger de faire une méthode private int GetValue(int x, iny)... ?
    Par de surcharge, obligé d'utiliser une méthode. Maintenant, en "interne", rien ne t'empeche d'utiliser un array à deux dimension et la notation [][] dessus

    - Eclipse colorie les const ? il ne semble pourtant ne pas être implémente .. ?
    Que veux tu dire? Les "constantes", ce sont des champs ayant le marqueur "final"

  4. #4
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 562
    Points : 15 493
    Points
    15 493
    Par défaut
    - Eclipse colorie les const ? il ne semble pourtant ne pas être implémente .. ?
    Que veux tu dire? Les "constantes", ce sont des champs ayant le marqueur "final"
    Non, il a raison le mot "const" est colorié car il fait partie des quelques mots réservés par les spécifications du langage, même s'ils ne sont pas utilisés. Dans le même genre il y a "goto".

    Des le début, Java à souhaité se garder ces mots en réserve pour d'éventuelles futures évolutions qui n'ont finalement jamais vu le jour. Malheureusement, ils n'avaient pas prévu de réserver "assert" et "enum".

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 634
    Points : 407
    Points
    407
    Par défaut
    Merci pour vos réponses,

    Je n'ai cependant pas tout compris concernant l'équivalent des pointeurs sur méthode.

    en c++, j'avais l'habitude de faire des truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef void   (NOM_DE_LA_CLASSE::*methode)(void);
    {
    std::map<std::string, methode> _map;
    _map["meth1"]= &NOM_DE_LA_CLASSE::test;
    }
    Ainsi lors de la réception d'une commande (par socket par exemple) je vérifiais si cette commande était présente dans la map et j'appelais directement la méthode (évite de faire 20 if else if ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (this->_map.ExistKey(list[0]))
           (this->*_map[list[0]])();
    De plus, concernant les socket, y-a-t'il un équivalent a select() qui permettait de voir si l'on recevait quelque chose sur un std::vector de socket par exemple.

    Cordialement,
    NeoKript

  6. #6
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par NeoKript Voir le message
    Merci pour vos réponses,

    Je n'ai cependant pas tout compris concernant l'équivalent des pointeurs sur méthode.

    en c++, j'avais l'habitude de faire des truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef void   (NOM_DE_LA_CLASSE::*methode)(void);
    {
    std::map<std::string, methode> _map;
    _map["meth1"]= &NOM_DE_LA_CLASSE::test;
    }
    Ainsi lors de la réception d'une commande (par socket par exemple) je vérifiais si cette commande était présente dans la map et j'appelais directement la méthode (évite de faire 20 if else if ...)
    Pour l'équivalent des pointeurs de fonction en Java, voir l'entrée de la FAQ à ce sujet :

    http://java.developpez.com/faq/java/...nteur_fonction

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

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

Discussions similaires

  1. debutant en java, des questions de base
    Par neufrdb dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 01/12/2010, 17h51
  2. Aide java script diver questions
    Par Argorate dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 05/08/2006, 03h32
  3. [debutant]Servlet java
    Par Regis.C dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/05/2004, 10h28
  4. [debutant] correspondance JAVA C++ pour pointeur de fonction
    Par davidoff_tls dans le forum Langage
    Réponses: 7
    Dernier message: 15/04/2004, 09h13
  5. Divers questions
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 06/08/2002, 21h57

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