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

Bibliothèques & Frameworks Discussion :

Etendre l'objet Date


Sujet :

Bibliothèques & Frameworks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Par défaut Etendre l'objet Date
    Bonjour,

    je me permets de vous demander une aide, je suis débutant en développement POO javascript avec la librairie prototypes. je souhaites ajouter des méthodes à l'objet Date et conserver les méthodes déjà existantes de cette objet. voici un bout de code que j'ai codé et qui ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var DataWriter = Class.create();
          Object.extend(DataWriter, Date);
           DataWriter.prototype.message2 =function (){
             alert("message2");
           }
    ----
    var paques = new DataWriter;
    1) paques.message2();
    2) alert(paques.getDate());
    ---
    le message "message2" s'affiche parfaitement en 1)
    le getDate ne s'affiche pas du tout en 2)

    comment puis-je ajouter des méthodes et propriétés à l'objet Date
    en conservant les méthodes existantes, mon bute étant d'ajouter une fonction qui retourne le Dimanche de pâques et quelques autres méthodes

    merci a tous ce qui pourrons m'orienter et m'aider dans cette démarche

    cordialement,
    MP59100

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    je n'ai pas compris le premier code ....

    pour étendre : Date.prototype.getPaque = function(){..}

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Par défaut Explication plus poussé
    Bonjour, le chômeur et merci de ta première réponse,

    le but est de créer une classe héritant des propriétés et méthodes de l'objet Date, avec le Framework prototypes.

    dont voici le code :

    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
    var classDate = Class.create(Date, {
     
      initialize : function(){ 
     
      _vecteurJours   = Array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
      _vecteurMois    = Array("Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout",
                              "Septembre","Octobre","Novembre","Decembre");
      },
     
      getDatePaques : function(Annee){
       if (Annee == null ) Annee = this.getFullYear();;   
       var C = Math.floor(Annee / 100); 
       var C_4 = Math.floor(C / 4);
       // le nombre d'or diminué de 1
       var G = Math.floor(Annee % (C - 1));
       var E = Math.floor((8 * C + 13) / 25)
       var H = Math.floor((19 * G + C - C_4 - E + 15) % 30);
       var K = Math.floor(H / 28);
       var P = Math.floor(29 / (H + 1));
       var Q = Math.floor((21 - G) / 11);
       // I représente le nombre de jours entre la pleine lune pascale et le 21 mars
       var I = (K * P * Q - 1) * K + H;
       var B = Math.floor(Annee / 4) + Annee;
       var J1 = B + I + 2 + C_4 - C;
       // J2 calcule le jour de la lune pascale
       var J2 = Math.floor(J1 % 7);
       var R = 28 + I - J2;
     
       if (R > 31 ) return (new Date(Annee, 3, R - 31));
       else         return (new Date(Annee, 2, R)); 
     
     },
     
     toStringFr : function(){ 
     return _vecteurJours[this.getDay()]                 +" "+ 
                          this.getDate()                 +" "+ 
     					  _vecteurMois [this.getMonth()] +" "+ 
    					  this.getFullYear();        
     },
     
     setDay : function(X){
       var Day=0;	  
       if (this.getDay() == 0)  Day = 7;  // si le jour actuel est le Dimanche 
       if ( X == 0 )              X = 7;  // si le jour rechercher est le Dimanche
       if (X != Day ) {                   // si le jour recherché est différent d'aujourd'hui
        if (X < Day)             this.setDate(this.getDate() - (Day - X) );
    	else if (X > this.Day)	 this.setDate(this.getDate() + (X - Day) ); 							    	
       }  
     }
    });
    le problème est le suivant, l'héritage des méthodes de l'objet Date ne sont pas prise en compte. De ce fait dans les nouvelles fonctions les instructions this.getFullYear() par exemple ne fonctionne pas de même quand je code les instruction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var paques = new classDate();
    alert(paques.getDate());
    cela ne fonctionne pas !!!

    d'où ma question comment créer un classe dérivée de l'objet Date

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 17
    Par défaut explications plus détailliées
    Bonjour, le chômeur et merci de ta première réponse,

    le but est de créer une classe héritant des propriétés et méthodes de l'objet Date, avec le Framework prototypes.

    dont voici le code :

    var classDate = Class.create(Date, {

    initialize : function(){

    _vecteurJours = Array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi");
    _vecteurMois = Array("Janvier","Fevrier","Mars","Avril","Mai","Juin","Juillet","Aout",
    "Septembre","Octobre","Novembre","Decembre");
    },

    getDatePaques : function(Annee){
    if (Annee == null ) Annee = this.getFullYear();;
    var C = Math.floor(Annee / 100);
    var C_4 = Math.floor(C / 4);
    // le nombre d'or diminué de 1
    var G = Math.floor(Annee % (C - 1));
    var E = Math.floor((8 * C + 13) / 25)
    var H = Math.floor((19 * G + C - C_4 - E + 15) % 30);
    var K = Math.floor(H / 28);
    var P = Math.floor(29 / (H + 1));
    var Q = Math.floor((21 - G) / 11);
    // I représente le nombre de jours entre la pleine lune pascale et le 21 mars
    var I = (K * P * Q - 1) * K + H;
    var B = Math.floor(Annee / 4) + Annee;
    var J1 = B + I + 2 + C_4 - C;
    // J2 calcule le jour de la lune pascale
    var J2 = Math.floor(J1 % 7);
    var R = 28 + I - J2;

    if (R > 31 ) return (new Date(Annee, 3, R - 31));
    else return (new Date(Annee, 2, R));

    },

    toStringFr : function(){
    return _vecteurJours[this.getDay()] +" "+
    this.getDate() +" "+
    _vecteurMois [this.getMonth()] +" "+
    this.getFullYear();
    },

    setDay : function(X){
    var Day=0;
    if (this.getDay() == 0) Day = 7; // si le jour actuel est le Dimanche
    if ( X == 0 ) X = 7; // si le jour rechercher est le Dimanche
    if (X != Day ) { // si le jour recherché est différent d'aujourd'hui
    if (X < Day) this.setDate(this.getDate() - (Day - X) );
    else if (X > this.Day) this.setDate(this.getDate() + (X - Day) );
    }
    }
    });

    le problème est le suivant, l'héritage des méthodes de l'objet Date ne sont pas prise en compte. De ce fait dans les nouvelles fonctions les instructions this.getFullYear() par exemple ne fonctionne pas de même quand je code les instruction suivante :

    var paques = new classDate();
    alert(paques.getDate());

    cela ne fonctionne pas !!!

    d'où ma question comment créer un classe dérivée de l'objet Date

    Citation Envoyé par le_chomeur Voir le message
    je n'ai pas compris le premier code ....

    pour étendre : Date.prototype.getPaque = function(){..}

Discussions similaires

  1. transformer des objets Date et Integer
    Par Edta dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 25/12/2007, 16h25
  2. Ajouter des jours à un objet Date
    Par lity7 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 03/11/2007, 15h40
  3. [POO] Objet Date et méthode setYear()
    Par NikoBe dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/12/2006, 18h37
  4. [FLASH MX] Problème avec l'objet Date
    Par n_tony dans le forum Flash
    Réponses: 13
    Dernier message: 22/03/2005, 13h44
  5. []Enlever 1 an à un objet "Date"
    Par inotna2099 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/10/2002, 17h21

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