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

JavaFX Discussion :

Votre avis sur l'héritage multiple avec JavaFX


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de guitariste
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 245
    Par défaut Votre avis sur l'héritage multiple avec JavaFX
    salut.

    J'ai appris que javafx permettait l'héritage multiple. Je voulais savoir comment elle a résolu les problèmes classiques qui sont liés à cette pratique !

    Par exemple, si les deux classes mères contiennent deux méthodes avec le même nom ?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Ca les resout mal et de maniere pas vraiment bien definie (c'est le flou officiel) dans les versions 1.0 et 1.1/1.1.1*.
    La version 1.2 introduit l'usage du mot cle mixin a placer sur les autres classes meres** et permet enfin d'appeler super.nomDeMethodeOuFonction().

    **On pouvait heriter d'un nombre infini d'interfaces et de classes JavaFX, le nombre d'heritages de classe Java etait limite a 1 il me semble.

    **On ne peut donc heriter d'une seule et unique classe JavaFX et Java directement et d'un nombre infini de mixing JavaFX ou d'interfaces. Le nombre d'heritage de classe Java doit toujours etre limite a 1 vu que le mot cle mixin n'existe pas dans ce language.

    Pour le reste, je n'ai pas pousse plus loin mes investigations quant a l'heritage en diamant ou les collisions de nom dans cette nouvelle version (trop de problemes dans les version precedentes font que j'ai vite abandonne le sujet : VIVE LA DELEGATION !).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 64
    Par défaut
    Exemple :
    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
    def individual = Contact { firstName: "Julien", lastName: "Jabbot", role: "Senior Developer" };
    //~ individual.printInfo();
    //~ println(individual.id);
    (individual as Person).printInfo();
    (individual as Employee).printInfo();
    println("{(individual as Person).id}");
    println("{(individual as Employee).id}");
     
    mixin class Person
    {
      var firstName = "Fabien";
      var lastName = "Flubbler";
      var id = 89771;
      function printInfo()
      {
        println("{firstName} {lastName}");
      }
      abstract function isAlive();
    }
    mixin class Employee
    {
      var role = "Project Manager";
      var id = 11666342;
      function printInfo()
      {
        println("{role}");
      }
    }
     
    class Contact extends Person, Employee { override function isAlive() { return Person.id > 0; } }
    On accède au champ ID de chaque mixin, mais pas à la méthode. J'ai rempli un bug : http://javafx-jira.kenai.com/browse/JFXC-3273
    Je crois que la solution est qu'un des deux champs sera caché par l'autre...

    Comme dit bouye, et comme un peu partout dans JavaFX, c'est pas parfait et en cours d'amélioration...

    Ce qui est marrant, c'est qu'on a encore des classes abstraites, qui font maintenant bien double emploi avec les mixins (en plus limité !).

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Février 2008
    Messages
    658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 658
    Par défaut
    C'est vraiment & evidement le derangement que peut avoir l'heritage simple.
    En effet c'est vrai normal qu'un enfant peut heriter de sa mere et son pere d'ailleurs s'il s'agit d'un enfant unique. Supposon que sa mere à un villa au Mali et son pere un autre à Moscone. Je peux bel et bien heriter de ses deux villa.

    Mais un probleme persiste, comme il est heritier, les barbes etant public et le sein protected, alors il peut avoir les barbes de son pere et les seins de sa mere.

    La on se retrouve devant un autre Michael Jackson. C'est ce qui est frequent en C++.
    C'est vrai que ca limite effetictement java mais les interfaces resolvent la plupart de temps ce probleme.

    Enfin c'etait juste pour detendre le debat.

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Février 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 284
    Par défaut
    Comme mon grand père le disait, si ma tante en avait, l'héritage serait plus simple...

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Allez hop, un petit article sur le sujet : http://java.sun.com/developer/techni.../javafx/mixin/


    Je comprend tout a fait qu'on ne puisse pas faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var m:MyMixin = new MyMixin();      // ILLEGAL. COMPILER ERROR.
    Mais je suis cependant surpris qu'il ne soit pas possible de faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var m:MyMixin = MyMixin {           // ILLEGAL. COMPILER ERROR.
        variable1: "Hello Again"
        variable2: "World"
    }
    Puisque normalement ceci cree en fait une classes anynome qui etend le mixin.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Réponses: 29
    Dernier message: 04/11/2014, 08h02
  2. Votre Avis sur l'article : Le clustering avec Glassfish
    Par millie dans le forum Glassfish et Payara
    Réponses: 7
    Dernier message: 26/03/2010, 16h58
  3. votre avis sur ma problématique avec les <div>
    Par viny dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 11/01/2010, 16h54
  4. Réponses: 5
    Dernier message: 27/10/2009, 19h06
  5. Réponses: 1
    Dernier message: 07/08/2007, 17h50

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