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 queVampire.prototype={
manger:function(){
alert("manger la chair humaine");
}
}
alors que
marche nickel.Animal.prototype.manger=function(){
alert("manger avec la bouche");
}
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.
J'espere compter sur vous, car je dois commencer l'ecriture d'une api javascript et je veux utiliser ces bons concepts.
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();
pour les tutoriaux
Partager