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

Java Discussion :

Math : Création de naturels, relatifs, décimaux, rationnels et réels


Sujet :

Java

  1. #1
    Membre régulier Avatar de zozoman
    Homme Profil pro
    Futur ex-prof
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Futur ex-prof
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 72
    Points
    72
    Par défaut Math : Création de naturels, relatifs, décimaux, rationnels et réels
    Bonjour à tous,

    Je souhaite créer différentes classes : naturels, relatifs, décimaux, rationnels et réels.

    Faut-il que je crée une classe abstraite nombre ou une interface?

    Au départ, j'ai créé la classe NombreNaturel que je voulais petit à petit généraliser mais j'ai l'impression que ce n'est pas possible (bien que tout soit possible en informatique).
    Oubliez les balises php : je cherche à comprendre le java et pour l'instant j'adapte en php

    Je cherche à créer une application générant des exercices de mathématiques de manière aléatoire : j'ai réussi à créer des multiplications de fractions qui se simplifient petit à petit mais j'ai beaucoup de lignes de code similaires : je veux factoriser tout ça et rendre le code propre.

    Merci pour vos réponses

    PS : grand débutant en info

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    <?php
     
    public class EntierNaturel{
        protected $naturel;
     
        // Constructeur par défaut
        function  __CONSTRUCT(){
            $this->naturel = 0;
        }
     
        // Constructeur
        function  __CONSTRUCT($nbNaturel){
            $this->naturel = $nbNaturel;
        }
     
        // Getter
        function getNaturel(){
            return $this->naturel
        }
     
        // Setter
        public function setNaturel($nbNaturel){
            if($nbNaturel<0){
                throw new Exception('Le nombre doit être positif!!');
            }
            else if($nbNaturel/intval($naturel)!=1){
                throw new Exception('Le nombre doit être entier!!');
            }
            else{
                $this->naturel=$nbNaturel;
            }  
        }
    }
     
    ?>
    Créer une fraction sans latex avec mathml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    echo('<math xmlns="http://www.w3.org/1998/Math/MathML" display="inline">')."\n";
            echo('  <mrow>')."\n";
            echo('      <mfrac>')."\n";
            echo('          <mrow>')."\n";
            echo('              <mn id="n1">'.$n1.'</mn>')."\n";
            echo('          </mrow>')."\n";
            echo('          <mrow>')."\n";
            echo('              <mn id="d1">'.$d1.'</mn>')."\n";
            echo('          </mrow>')."\n";
            echo('      </mfrac>')."\n";
            echo('  </mrow>')."\n";
            echo('</math>')."\n";

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Citation Envoyé par zozoman Voir le message
    Faut-il que je crée une classe abstraite nombre ou une interface?
    Dans le principe :
    1. une interface fournit des contrats de méthodes, à la fois pour l'appelant et l'appelé. même si le mot default laisse penser qu'on peut y mettre de l'implémentation, ce n'est pas son but
    2. une classe abstraite est juste une classe dont certaines méthodes ne peuvent être implémentées que spécifiquement et qui sont donc abstraites. Une classe abstraite permet également des attributs et des méthodes private ou protected. On peut également faire une classe abstraite complètement implémentée dans le but juste d'empêcher son instanciation sans l'étendre, mais cette possibilité ne s'applique pas dans ton cas.



    Le choix d'une classe abstraite te permettra de fournir des méthodes communes de traitement (qu'on pourrait faire avec une interface), avec éventuellement des implémentations de base (éventuellement private ou protected, et même final), éventuellement des attributs pour le stockage. Une interface permet de laisser éventuellement le choix à l'utilisateur de l'API de fournir une implémentation complètement nouvelle que tu n'as pas anticipé dans ton système d'API où il y a des méthodes qui prennent des paramètres de ce type ainsi défini. Ou encore de faire une API sans fournir d'implémentation du tout d'objet à traiter.

    Personnellement, je partirais sur une classe abstraite à priori.

    Ensuite, il faut se poser la question si cela peut être intéressant d'avoir des interfaces pour modéliser des concepts, qui pourront permettre de limiter certains appels à l'écriture du code (par paramétrisation). Nombre algébrique par exemple. Comme on peut implémenter plusieurs interfaces dans une même classe, on peut affecter plusieurs concepts à un type de nombre.

    PS En revanche, je te conseille des classes non mutable. Cela évite les risques de mutation pendant des chaînes de calcul (favorise la programmation fonctionnelle) et permet en plus de pouvoir utiliser les nombres comme clef de map. Je parle de ça après avoir lu ton code (je n'y connais rien en php mais je crois comprendre certaines parties) et vu un mutateur.
    Et utilise des noms génériques genre intValue() ou doubleValue(), plutôt que getNaturel(). getNaturel() n'a pas de sens dans une abstraction ou une interface pouvant représenter n'importe quel nombre.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre régulier Avatar de zozoman
    Homme Profil pro
    Futur ex-prof
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Futur ex-prof
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 72
    Points
    72
    Par défaut J'opte pour la classe abstraite
    Merci pour votre réponse,

    Je pensais également à la classe abstraite : je vais donc créer une abstract class Nombre avec quelques méthodes et créer mes classes filles avec les méthodes permettant la définition de chacun de mes ensembles de nombres.

    Je ne note pas "résolu" mais plutôt "en attente de codage" car vu mon niveau d'expérience, ça pourrait me prendre un certain temps !!

    A bientôt

Discussions similaires

  1. [XL-2016] Création fonction VBA avec appel de plage relative
    Par Marik728 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/01/2019, 07h14
  2. Création d'une carte réseau en temps réel (Javascript/php/Json/AJax)
    Par hermally dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 31/03/2015, 11h28
  3. problème création identifiant relatif
    Par erox44 dans le forum Toad
    Réponses: 1
    Dernier message: 26/03/2008, 14h29
  4. Maths : équations
    Par Anonymous dans le forum Mathématiques
    Réponses: 5
    Dernier message: 02/05/2002, 16h41

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