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 :

[Conception][Avis?] Pseudo SmallTalk on Java


Sujet :

Java

  1. #1
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut [Conception][Avis?] Pseudo SmallTalk on Java
    Bonjour,

    Dans le cadre de mon enseignement, je dois réaliser un projet qui demande la réalisation d'un système ouvert (type smalltalk) implémenté sur le langage java.
    Voici les aspects qu'on nous a proposé :
    Aspects réflexifs possibles :

    Meta-Operation : Des objets comme des meta-objets
    Structure : Les classes comme des objets
    Semantics : Le compilateur est un objet
    Message-Sending : Les messages sont des objets
    Control State : Les processus comme des objets
    Voulant faire quelque chose d'assez simple, je suis partie sur la Meta-Operation et Structure. Et aussi parce que je ne vois pas comment implémenter le reste :s

    Dans mon diagramme de classe je suis partie avec la classe représentant mes objets ST_Object_Class comme la racine et source de toutes les autres classes.

    De cette classes hérite ST_Class_Class puis ST_MetaClass_Class.


    Pour la modélisation d'un objet dans la classe ST_Object_Class, je suis partie du principe qu'un objet avait une liste de propriété et appartiens à une classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private HashMap<String, ST_Object_Class> ST_propertys = new HashMap<String, ST_Object_Class>();
        private ST_Class_Class ST_class;
    En ce qui concerne la modélisation d'une classe ST_Class_Class, elle dispose d'une liste de méthode et d'une liste de propriétés des objets de celle-ci. Ainsi que d'un nom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private String ST_name;
        private HashMap<String, ST_Method_Class> ST_methods = new HashMap<String, ST_Method_Class>();
        private HashMap<String, ST_Object_Class> ST_object_properties = new HashMap<String, ST_Object_Class>();
    Je boucle sur moi-même avec la classe ST_MetaClass_Class qui est sa propre méta-classe.

    Vient ensuite la partie la plus compliqué...
    Et qui selon moi, c'est pas très au point.
    Un méthode est modélisé par la classe ST_Method_Class qui dispose d'une liste de commandes et d'une méthode run() pour les lancer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private List<ST_Command_Class> ST_bodys= new ArrayList<ST_Command_Class>();
     
        public List<ST_Object_Class> run(ST_Object_Class st_object_class, List<ST_Object_Class> parameters)throws Exception {
            List<ST_Object_Class> args=new ArrayList<ST_Object_Class>();
            args.add(st_object_class);
            args.addAll(parameters);
            return ST_bodys.get(0).run(args);
        }
    La classe ST_Command_Class disposant héritières spécifique implémentant List/If/... pour poser les bases du langage.

    N'étant pas très convaincu que la méta-classe d'une méthode ou d'une commande était mon ST_MetaClass_Class, j'ai crée deux entités ST_MetaMethod_Class et ST_MetaCommand_Class.

    J'espère que mon explication de ma démarche est assez claire.

    Je vous laisse le lien vers le projet sourceForge correspondant :
    http://pseudosmalltalk.sourceforge.net

    J'aimerai votre avis ou remarque sur ma structure ou mon code. Je reste près à répondre à la moindre question sur ce projet.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  2. #2
    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 kolodz Voir le message
    J'aimerai votre avis ou remarque sur ma structure ou mon code. Je reste près à répondre à la moindre question sur ce projet.
    PRemière et GROSSE Remarque. Respecter les conventions java pour nommer tes classes et tes propriétés, parce que là, ton code il pique les yeux, c'est impossible a suivre pour quelqu'un qui a l'habitude du java. Ensuite, inutile de faire suivre tous tes noms de classe par _Class, t'as vu un seule classe java qui fini par _Class toi?




    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    private  HashMap<String, STObject> properties = new HashMap<String, STObject>();
    private STClass sTClass;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private String sTName;
    private HashMap<String, STMethod> methods = new HashMap<String, STMethod>();
    private HashMap<String, STObject> properties = new HashMap<String, STObject>();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private List<STCommand> bodies= new ArrayList<STCommand>();
    public List<STObject> run(STObject object, List<STObject> parameters)throws Exception {
        List<STObject> args=new ArrayList<STObject>();
        args.add(object);
        args.addAll(parameters);
        return bodies.get(0).run(args);
    }

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    En effet en java une classe est un classe.
    Mais il se trouve que dans le projet, j'ai aussi des classes qui sont des méthodes ou des commandes dans le projet, donc des _Method ou _Command.
    Pour le pré-fixage avec "st_", j'avoue que c'est lourd et relativement useless.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    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
    C'est n'est pe fait que tu aie des objet Method, Comman ou Class, que je remet en cause, c'est le fait que tu suffixe toutes tes classes java par _Class, ce qui est inutile. De même, on utilise pas de underscore dans un nom de classe en java. Un nom de classe en java se nomme NomDeClasse, pas Nom_De_Classe!!

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

Discussions similaires

  1. [Avis] Les meilleurs programmes Java ?
    Par christopheJ dans le forum ImageJ
    Réponses: 69
    Dernier message: 07/10/2008, 02h12
  2. Votre avis sur notre application Java/Swing
    Par yciabaud dans le forum AWT/Swing
    Réponses: 30
    Dernier message: 02/07/2008, 23h54
  3. avis sur API 2D Java/C++
    Par Bart_lx dans le forum Développement 2D, 3D et Jeux
    Réponses: 9
    Dernier message: 26/05/2008, 10h32
  4. [Conception] avis sur QCM - Traitements des réponses
    Par Dam1en dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/01/2008, 09h10

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