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 :

Génération de classes


Sujet :

avec Java

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 45
    Par défaut Génération de classes
    Bonjour,

    Ma question est un peu spéciale et je ne sais même pas si c'est possible.

    Admettons que j'ai une classe Abstraite A, et deux classes B et C qui héritent de A et qui implémentent ses méthodes abstraites.

    Existe t-il une méthode pour creer une classe abstraite A' qui hérite de A et qui genere automatiquement des classes B' et C' disposant des méthodes de A'?

    Car recreer à la main à chaque fois une méthode B' et C' pour chaque A crée, c'est embêtant.

    par exemple:

    A -> B,C

    Asql -> Bsql, Csql

    Aprim -> Bprim, Cprim

    Merci beaucoup de votre aide.

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2011
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2011
    Messages : 101
    Par défaut
    Je ne comprends pas la situation problème...

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    En général on ne crée pas des nouvelles classes à chaque fois. On fait en sorte que les classes qui sont déjà là puissent tout gérer elles-mêmes.

    Avant Java 1.5 c'était moche. Depuis Java 1.5 ça se règle souvent avec des génériques :

    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
    public abstract class A<E> {
     
      public abstract E getTruc();
     
      public abstract void faireAvecTruc(E e);
     
    }
     
    public class B<E> extends A<E> {
     
      public E getTruc() {
        // implem
      }
     
      public void faireAvecTruc(E e) {
        // implem
      }
     
    }
     
    public class Start {
     
      public static void main(String[] args) {
        A<Sql> sql = new B<Sql>();
        // s'en servir
     
        A<Prim> prim = new B<Prim>();
        // s'en servir
      }
     
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 45
    Par défaut
    Oui je suis bien d'accord mais le truc, c'est que admettons dans ASql je fais une méthode abstraite writeSQL().

    Ce que je souhaite c'est que les méthode BSQL et CSQL implémentent cette méthode.

    De même pour toute nouvelle classe A créée.

    On ne peut pas faire de template car il n'y a pas de méthode générale.

    En fait ce qui serait sympa de faire ce serait quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public abstract class A
    {
           public abstract class B extends A;
           public abstract class C extends A;
     
           public abstract String writeSQL();
           public void methode1(){...}
           public void methode2(){...}
    };

    Ainsi on aurait juste à implémenter les classe B et C pour chaque A crée mais bon ce n'est pas possible de faire comme ça.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par van noctar Voir le message
    On ne peut pas faire de template car il n'y a pas de méthode générale.
    Euh... Dans ce cas tu demandes quelque chose de logiquement impossible -_-°. Il y a forcément un template d'une manière ou d'une autre. Si ce n'est pas le cas, alors l'ordinateur ne peut pas travailler à ta place, et tu n'aurais pas eu cette idée saugrenue.

    Citation Envoyé par van noctar Voir le message
    En fait ce qui serait sympa de faire ce serait quelque chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public abstract class A
    {
           public abstract class B extends A;
           public abstract class C extends A;
     
           public abstract String writeSQL();
           public void methode1(){...}
           public void methode2(){...}
    };
    Ainsi on aurait juste à implémenter les classe B et C pour chaque A crée mais bon ce n'est pas possible de faire comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public abstract class A
    {
           public abstract A newB();
           public abstract A newC();
     
           public abstract String writeSQL();
           public void methode1(){...}
           public void methode2(){...}
    };
    Par exemple. Cela te force, pour chaque classe non-abstraite étendant A, à implémenter newB() et newC(), dont le but sera, l'une de renvoyer un B correspondant, l'autre de renvoyer un C correspondant. Et donc d'implémenter les classes correspondantes.

    Si c'est trop limitant, tu peux remplacer par newBFactory() et newCFactory(), qui renverront des Factory d'objets de ce genre.
    Ou bien getBClass() et getCClass().
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 45
    Par défaut
    Pas bête l'idée de crée des méthodes qui renvoie les classe dont j'ai besoin, je fais ça et je posterais un message ce soir ou demain pour voir si ça marche! Merci beaucoup pour votre aide!

  7. #7
    Invité de passage
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2012
    Messages : 1
    Par défaut
    Bonsoir a tous, c'est la première fois que je viens sur un forum et je débute dans l'informatique et plutot dans la programmation ...
    Je dois créer une classe Placement avec comme attribut le capital placé au départ , le nombre d'année du placement et la taux d'interet composé .
    Il y a 3 constructeurs dont :
    le premier garnit les 3 attributs ,
    le 2ième génère des placement de durée fixe égale a 10 ans ,
    le 3ième permet de créer des placement de taux égal a 4.5%.
    Ainsi qu'une méthode qui permet de déterminer la valeur finale du capital placé

    Pourriez-vous m'indiquez comment écrire mes 3 constructeurs et la méthode car je ne vois pas du tout comment débuter cela ...

    Merci beaucoup d'avance

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 45
    Par défaut
    Ok, non c'est un peu plus compliqué de ce que je pensais, je vais utiliser des interfaces, c'est pas grave. Merci quand même.

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2012
    Messages : 45
    Par défaut
    Normalement tu es sensé créer une nouvelle discussion, mais je te conseille de regarder les tutoriels.

    Pour tes trois constructeur tu peux faire comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Placement(double capital_depart, int nb_annee, double taux_interet)
    {
    ...
    }
    Placement(double capital_depart)
    {
        //Calcul de ton taux d'interet sur les dix an
    }
     
    Placement(double capital_depart)
    {
        //Calcul du nombre d'annee par rapport à 4.5% d'interet.
    }

Discussions similaires

  1. génération de classe à partir de fichier xml
    Par youness_ka dans le forum C#
    Réponses: 2
    Dernier message: 19/05/2008, 00h27
  2. Génération de classe CSS
    Par dahu17 dans le forum Langage
    Réponses: 1
    Dernier message: 15/03/2008, 22h22
  3. [WSDL2Java] Bug dans la génération des classes métiers
    Par adionne dans le forum Services Web
    Réponses: 1
    Dernier message: 21/09/2007, 11h06
  4. [POO] Génération de classe au vol
    Par Akinion dans le forum Langage
    Réponses: 4
    Dernier message: 15/12/2006, 10h11
  5. [JAXB][XSD] Problème lors de la génération des classes
    Par charlot44 dans le forum Persistance des données
    Réponses: 4
    Dernier message: 22/06/2005, 16h10

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