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

JavaScript Discussion :

classe abstraite, paquetage javascript.


Sujet :

JavaScript

  1. #1
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 159
    Points : 97
    Points
    97
    Par défaut classe abstraite, paquetage javascript.
    Bonsoir. Apres avoir suivi le tutorial sur la programmation objet en javascript
    http://t-templier.developpez.com/tut...vascript-poo1/
    http://t-templier.developpez.com/tut...vascript-poo2/
    http://t-templier.developpez.com/tut...vascript-poo3/
    J'ai effectue des petits tests. Il faut dire que nous etions de ceux la qui faisent du javascript a la script (sans vrament une gestion objet en bas). On va corriger cela. Revenons a mon probleme

    Mon premier probleme concerne la notion de classe abstraite:
    Partons du faite qu'une classe Mammifere a une une methode abstraite manger
    Quant je redefinis la methode abstraite dans la fille avec la notation du genre
    Vampire.prototype={
    manger:function(){
    alert("manger la chair humaine");
    }
    }
    ca ne marche pas. il ne vois meme plus la classe de la mere, alors que
    alors que
    Animal.prototype.manger=function(){
    alert("manger avec la bouche");
    }
    marche nickel.

    le premiere notation est pratique et permet de regrouper plusieurs fonctions. de plus, c'est la notation a la json. what bad.
    Tout l'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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    var Mammifere=function(modeAccouchement){
        this.modeAccouchement=modeAccouchement;
    }
    Mammifere.prototype={
        seNourrir:function(){
            this.manger();
        },
        manger:function(){//methode abstraite non encore implémentee
            throw new Error("non implémentée!");  
        }
    }
     
    //Une classe fille Animal. Ce cas marche nickel
    var Animal=function(modeAccouch){
        this.modeAccouchement=modeAccouch;
    }
    heriter(Animal.prototype, Mammifere.prototype); 
    Animal.prototype.manger=function(){  
        alert("manger avec la bouche");    
    }
    lion=new Animal("tombe enceinte");
    lion.seNourrir();
     
     
     
    //Ce exemple ci ne marche pas. Il met dracula.seNourrir() is not a function
    //Vous remarquez que la seule différence avec la classe Animal,
    //c'est Vampire.prototype=    plutot que
    //Animal.prototype.manger=function().          What bad
     
    var Vampire=function(modeAccouch){   
        this.modeAccouchement=modeAccouch;
    }
    heriter(Vampire.prototype, Mammifere.prototype); 
    Vampire.prototype={  
        manger:function(){
             alert("manger la chair humaine"); 
        }   
    }
    dracula=new Vampire("se duplique");
    dracula.seNourrir();
    --------------------------------------------------
    Le deuxieme concerne la notion de paquetage. je n'arrive pas a faire un paquetage interne du genre OUEX.Utils.init();

    Un exemple concret.
    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    //Ce cas marche nickel
    var DOMX=window.DOMX || {};
    DOMX=function(){
        var moveComponent=function(){//Cette fonction n'est visible que dans le package
            alert("deplacement de composant");
        };
        return{
            init:function(){
                alert("initialisation");
                moveComponent.apply(null,arguments);
            },
            rien:function(){
                alert("rien a l'horizon");
            }
        }
    }();
    //NAMESPACE (a voir)
    //Execution de l'initialisation
    DOMX.init();
    DOMX.rien();
     
     
    //Par contre, celui ci ne passe pas. il me met OUEDX.Utilities.init() is 
    //not a function
     
    var OUEDX=window.OUEDX || {};
    OUEDX=function(){
        //////////////////////////////////Debut paquetage
        //private
        var Utils={};
        Utils=function(){
            var fonccombo=function(){
            }
            fonccombo.prototype.afficherCombo=function(){
                alert("mon combo est affiche");
            }
        //public pour OUEDX.Utilities
        return{
            init:function(){
                alert("init du combo");
            }
        }
         ////////////////////////////////////Fin packetage OUEDX.Utils
        }();
     
        //public
        return{
            Utilities:function(){
                return Utils;
            }
        }
     ////////////////////////////////////Fin packetage OUEDX
    }();
     
    OUEDX.Utilities.init();
    J'espere compter sur vous, car je dois commencer l'ecriture d'une api javascript et je veux utiliser ces bons concepts.
    pour les tutoriaux

  2. #2
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 159
    Points : 97
    Points
    97
    Par défaut
    Bonjour.
    Concernant la problématique des packages imbriqués. par exemple
    avoir une forme du genre
    OUEDX.Utils.init();
    et pourquoi par
    OUEDX.Utils.Combo.init();
    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
     
     
    Cette forme ci dessous marche
    var OUEDX=window.OUEDX || {};
     
    OUEDX.Utils=function(){
            var fonccombo=function(){
            }
            fonccombo.prototype.afficherCombo=function(){
                alert("mon combo est affiche");
            }
        //public pour OUEDX.Utilities
        return{
            init:function(){
                alert("init du combo");
            }
        }
         ////////////////////////////////////Fin packetage OUEDX.Utils
    }();
     
    OUEDX.Utils.init();
    Je pensais pouvoir le faire en un seul mais non. donc je m'abstiens a cette solution.

    Il me reste la forme abstraite qui ne marche pas...
    Peut etre une erreur de syntaxe

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Citation Envoyé par ouedmouss Voir le message
    Bonsoir. Apres avoir suivi le tutorial sur la programmation objet en javascript
    http://t-templier.developpez.com/tut...vascript-poo1/
    http://t-templier.developpez.com/tut...vascript-poo2/
    http://t-templier.developpez.com/tut...vascript-poo3/
    J'ai effectue des petits tests. Il faut dire que nous etions de ceux la qui faisent du javascript a la script (sans vrament une gestion objet en bas). On va corriger cela. Revenons a mon probleme

    Mon premier probleme concerne la notion de classe abstraite:
    Partons du faite qu'une classe Mammifere a une une methode abstraite manger
    Quant je redefinis la methode abstraite dans la fille avec la notation du genre

    ca ne marche pas. il ne vois meme plus la classe de la mere, alors que
    alors que
    marche nickel.

    le premiere notation est pratique et permet de regrouper plusieurs fonctions. de plus, c'est la notation a la json. what bad.
    Salut,

    Dans ton premier objet, tu tentes d'écraser le prototype avec un objet qui contient un méthode manger();
    De plus, une notation à la json ça ne veut rien dire, json est un format de données.

Discussions similaires

  1. [Debutant] Une classe abstraite en parametre ?
    Par kiroukou dans le forum Débuter
    Réponses: 8
    Dernier message: 03/02/2005, 15h05
  2. [Débutant(e)] toString + classes abstraites
    Par debdev dans le forum Langage
    Réponses: 9
    Dernier message: 26/01/2005, 15h22
  3. [Debutant][Conception] Classes abstraites et interface.
    Par SirDarken dans le forum Langage
    Réponses: 4
    Dernier message: 29/10/2004, 00h02
  4. Classe abstraite / MVC
    Par caramel dans le forum MVC
    Réponses: 5
    Dernier message: 01/04/2003, 09h27
  5. pb constructeurs classes dérivant classe abstraite
    Par Cornell dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2003, 19h02

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