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 :

créer un nouveau type de variable ?


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 30
    Points
    30
    Par défaut créer un nouveau type de variable ?
    Bonjour je voudrais savoir comment créer un nouveau type de variable comme les BigInteger......

    moi ca serai pour la gestion et le calcul avec des nombres binaires donc nous aurions par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Binaire bnr1 = BINAIRE.valueof("10001111100"); //déclaration de variable Binaire et affecte la valeur : 10001111100
    Quelqu'un aurais t-il des idées et des conseils a me donner ?

    merci
    [/code]

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    Le binaire n'est que une representation d'un nombre, ( les matheux dirait une base de 2 ...). Je ne comprends pas ce que tu veux faire et ce que tu ne peux pas faire avec les objets/types actuels...
    Sinon creer un autre "type" reviendrait à créer une nouvelle classe qui extends java.lang.Number. (Oui, on ne peut creer de type primitif mais ce n'était pas ta question, enfin je crois. )

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    en faite a therme, je pourrais addition , soustraire , mulitplier et diviser des nombres binaire...

    créer aussi BINAIRE, OCTAL , DECIMAL, HEXADECIMAL , qui aurais les même option , la possibilité de passer d'une base a l'autre......

    et pourquoi pas, avoir de nombre d'une base diférente , et pouvoir faire des add,sous... ces deux nombres.....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Bininaire extend java.lang.Number {
      .......
    }
     
     
    public class démo {
    Binaire bnr1 = BINAIRE.valueof("10001111100"); //déclaration de variable Binaire et affecte la valeur : 10001111100  
    }

    ca donne ca a peut prêt ??

    sinon merci
    [/code]

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Integer.html#toString(int,%20int)
    Cela ne te suffit pas ? Cela permet de convertir l'entier en sa representation dans une base donnée (la sortie étant une string).
    Avec un jdk >= 5.0 (cad autowrapping) l'addition des Integer se fait automatiquement donc je ne vois pas trop le probleme mais tu peux toujours creer une class qui extends java.lang.Number pour le fun.... Et il faudra definir les methodes correctement

    BINAIRE.valueof("10001111100") peut signifier quelquechose mais pour l'instant aucune fonction existe du genre pour ta nouvelle classe et dans ton cas tu pourrais simplement utiliser un constructeur, cad Binaire bnr1 = new Binaire("10001111100");


    Ps : class Bininaire

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 47
    Points : 30
    Points
    30
    Par défaut
    Oui d'accord mais les les méthode que tu me donne me permette seulement d'addition des décimaux ou de passer d'un décimal à une autre base....

    Moi ce que je veux faire c'est addition etc... des nombres de n'importe quel base....

    et pouvoir passer d'une base à une autre ....

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    Des décimaux....
    Changer la base d'un nombre ne change pas sa valeur, alors que l'API propose de déclarer les nombres en base 10 car c'est celle qui est le plus utilisée par les humains, pour ton processeur il s'agit de nombre en base 2...
    L'important est que Integer stoque une valeur et que savoir comment cette valeur est stoquée n'est pas le probleme. Principe de la POO : l'objet fait ce qu'il a à faire et toi tu dois juste regarder l'API qu'il te propose.

    En base 10
    déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Integer myInteger = new Integer(6);
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Integer myInteger = new Integer("6");
    récupération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int myInt = myInteger.intValue();
    String myString = myInteger.toString();
    ***************************************************************

    Dans n'importe quelle base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Integer myInteger = Integer.valueOf("0101",2); // pour une base 2 et une valeur de (0101)
    récupération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int myInt = myInteger.intValue(); // cela ne change pas
    String myString = Integer.toString(myInteger.intValue(), 2); //pour une base 2
    Remarque : Integer.toString(int i, radix i) est la fonction permettant d'avoir une representation dans de nombreuses bases de ton int (jusqu'en base 36) , pour les fainéants l'API propose également pour les bases les plus utilisées (2,8,16) :
    Integer.toBinaryString(int i)
    Integer.toHexString(int i)
    Integer.toOctalString(int i)
    Il faut avouer que c'est plus lisible, tout de meme.

    Le code présenté est valide pour tous les sdk seulement à partir du 5, l'autowraping devrait permettre de simplifier les choses (l'écriture) mais le principe reste le meme.


    Apres si tu veux avoir des calculs precis (si tu veux faire du binaire entre autre), la classe BigInteger est plus adaptée mais le principe reste encore une fois le même. Bien que l'API soit plus simple :
    constructeur : BigInteger(String val, int radix)
    récuperer : myBigInteger.toString(int radix)
    De plus cette classe propose des methodes pour manipuler les bits.

    Par contre la manipulation d'octets ou de mots je ne pense pas que quelque chose est était prévue "explicitement" (Manipuler des octets et des motsrevients à munipuler plusieurs bites en meme temps.)

Discussions similaires

  1. Créer un nouveau type de fichiers
    Par troumad dans le forum Applications et environnements graphiques
    Réponses: 14
    Dernier message: 04/04/2011, 21h03
  2. [À télécharger] Créer un nouveau type de fichier
    Par SfJ5Rpw8 dans le forum Vos téléchargements VB6
    Réponses: 0
    Dernier message: 13/11/2010, 19h48
  3. créer un nouveau type de fichier
    Par ryoussef19 dans le forum C++/CLI
    Réponses: 5
    Dernier message: 24/08/2007, 12h14
  4. créer un nouveau type
    Par sam80 dans le forum Delphi
    Réponses: 3
    Dernier message: 27/12/2006, 21h24
  5. créer un nouveau type de donnée
    Par noussa_nouha dans le forum Langage
    Réponses: 5
    Dernier message: 05/09/2006, 11h29

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