Designed by NoKi !
73 en ligne   Boutique | Sites | Bar | Forum | PhpBB | Actu | Glossaire | Codes | Tips | Liens | Livres | Lettre  


 Recherche

 NewsLetter





   

JavaScript & la POO (1/8)

Puissance du plus populaire langage de script.





Derf
En ces temps modernes, où le passé n'a de cesse de ressurgir et être remis à la mode, le langage JavaScript fait partie de ces outils que l’on a relégués un temps aux oubliettes du passé et que l'on ressort aujourd’hui, auréolés d’un nouveau prestige. On redécouvre aujourd’hui JavaScript à travers l’objet XMLHttpRequest et autres Frameworks AJAX.
Alors, je vous propose de découvrir un autre aspect plutôt méconnu de ce langage : ses aptitudes à la POO.

Télécharger l'article au format PDF



JavaScript est il un langage de programmation orienté objet ?

Si il fait un usage intensif des objets ca n'en fait pas pour autant un langage de POO, juste un langage basé sur des objets me direz vous ; Je vous l'accorde, et pourtant ...

Quelles sont les principales spécificités des langages de POO ? L'encapsulation, l'héritage et le polymorphisme...

JavaScript, à sa manière, offre toutes ces possibilités.



JavaScript est un langage de script interprété et non compilé. Ce n'est pas un obstacle à la POO, mais de fait, impossible de cacher et protéger l'implémentation d'une classe ou n'importe quel autre code.

Il n'existe pas, non plus, d'instructions spécifiques permettant de définir un bloc de classe, une structure, un module...

Mais rien ne vous empêche de créer vos classes dans des fichiers JS (des fichiers séparées, portant l'extension .js) en faisant précéder le nom des fichiers par le terme « class_ » par exemple.

Alors, comment construire des objets à partir de modèles si rien n'existe pour définir ces modèles ?

Qui a-t-il de plus important, la manière dont est délimité le modèle ou son contenu ?

Son contenu me semble-t-il !

Une classe est constituée, pour l'essentiel, de propriétés et méthodes ainsi que les implémentations subordonnées. Mais aussi, d’un constructeur qui permettra d'instancier des objets formatés par le modèle, donc par la classe.



En JavaScript, un constructeur est une simple fonction chargée d’initialiser un objet quand elle est invoquée par l'opérateur new.

Au sein de la structure de cette fonction, on utilise le mot clé this pour référencer l'objet.

function CType(arg1,arg2)
{
this.property_1 = arg1;
this.property_2 = arg2;
};

var myObject = new CType(value_1,value_2);

Les arguments de la fonction servent à initialiser les propriétés de l’objet ; Objet référencé par le mot clé this.



En JavaScript, il n'est pas possible de créer une fonction « destructeur » pour supprimer un objet.

Mais l'opérateur delete permet de supprimer des propriétés, des variables (sauf celles déclarées avec l'instruction var), des éléments de tableau …

Le mot clé null peut également être utilisé pour supprimer une référence.

obj = new Object();
delete obj;// Supprime obj
obj = null;// Vide obj

// --------------------------------------------------------- //

var obj = new Object();
delete obj;// Ne supprime pas obj
obj = null;// Vide obj




Une méthode est une fonction qui peut être invoquée via l'objet issu de la fonction constructeur.

Ici aussi, le mot clé this référence l'objet qui invoque la méthode.

Dans l'exemple ci-dessous, j'utilise 2 techniques différentes pour définir les méthodes :
La première technique consiste à déclarer la fonction _Compute( ), devant servir de méthode, à l'extérieur de la fonction constructeur. Pour la transformer en méthode, j'attribue le nom de la fonction à une propriété de l'objet (getCompute).
La seconde technique consiste à imbriquer la totalité de la fonction, dans la fonction constructeur. Pour cela, j'affecte une fonction, non nommée, à une propriété de l'objet (toString).

//Méthode
function _Compute()
{
return this.property_1 + this.property_2;
};

// Constructeur
function CType(arg1,arg2)
{
//Initialisation des propriétés de l'objet
this.property_1 = arg1;
this.property_2 = arg2;

//Définition des méthodes de l'objet
this.getCompute = _Compute;
this.toString = function()
{
return (this.property_1 + ' - ' + this.property_2);
};
};

//Nouvelle instance de notre type
var myObject = new CType(value_1,value_2);
var result = myObject.getCompute();
alert(myObject.toString());

Il me semble que l'exemple ci-dessus décrit une structure qui pourrait s'apparenter à une classe (CType()). Certes, il y manque bien quelques assignations de portée (Public, Private ...) mais pour cela, il faudra attendre la prochaine version d'ECMAScript : la 4 probablement.

Les techniques utilisées ici, pour définir les méthodes de la classe CType, présentent un inconvénient : Effectivement, pour définir les fonctions _Compute() et toString en tant que méthode de la « classe d'objets » CType, je les ai attribuées à des propriétés déclarées dans le constructeur; Du coup, pour chaque instance de l'objet, mes méthodes occuperont un certain espace mémoire, et ce, avant même de savoir si l'instance utilisera la ou les méthodes.

C'est là qu'intervient l’objet prototype…

Pour pouvoir écrire dans ce forum, identifiez-vous !

  v1.3p © ASP-PHP.net 2002  

Derf le 12/11/2006 (29 732 hits)
Didier Gratuit : Formez-vous sur Silverlight, .NET, OpenXML, ...
Ils l’ont fait avec SQL Server. Découvrez comment !
Concours de programmation Flash !
Au fil des news  
PowerShell - Ajouter une liste dans un site SharePoint
Annuaire d'entreprise en PHP - Très pratique pour ne plus rien perdre
Mon petit annuaire d'entreprise, je m'en sers tous les jours alors autant vous en faire profiter. ...
PHP-MySQL : Formulaire - pour le script 'Bon anniversaire' de DB77
Formulaire et script d'enregistrement pour le script « Bon anniversaire » de DB77 en PHP/MySQL ...
.NET - Introducing Microsoft Silverlight 2.0, 2nd Edition
PHP5 - Upload de fichiers - Classe PHP
PHP - PHP 5 /MYSQL® 5
PHP - Calcul de la surface d'un polygone
Comment supprimer des items d'une liste SharePoint - Supprimer les informations d'une liste SharePoint
SharePoint permet bien sur de stocker des données. Parfois, on peut vouloir effacer certaines de ...
Dreamweaver CS4 - Nouvelle version Béta
Voici la nouvelle mouture, annoncée en juin, juste 6 mois après la sortie de la version CS3. Je ...
PowerShell - Synchronisation répertoire par répertoire
PowerShell - Ajouter des items dans une liste SharePoint
Localisation des développements avec SharePoint - Rendre ses applications SharePoint internationales
Lorsque l'on développe des applications avec SharePoint, on se confronte très souvent à une ...
PowerShell - Supprimer tous les items d'une liste SharePoint
PowerShell - Vider la Corbeille SharePoint d'une collection
PowerShell - Modifier le Thème d'une collection SharePoint
PowerShell - Tester l'existance ou effacer une WebPart
PowerShell - Définir une valeur pour une propiété d'un SPWeb
PowerShell - Importer une liste SharePoint depuis un fichier
PowerShell - Exporter une liste SharePoint dans un fichier
PowerShell - Lister les propriétés d'un site SharePoint
Modification de l'adresse du Search Center - Définir la page de résultat d'une ferme MOSS
Lorsque l'on installe MOSS dans une ferme SharePoint et que l'on configure le moteur de recherche ...
PHP - Redimensionner Image + Picto après Upload - Galerie photos, revue de presse, ...
Upload de photo, redimensionnement, création de picto, enregistrement ...
ASP - Redimensionner Image + Picto après Upload - Galerie photos, revue de presse, ...
Upload de photo, redimensionnement, création de picto, enregistrement ... Utilisation ...
Exporter et Importer un site SharePoint - Comment déplacer un site SharePoint
Une question est très régulièrement posée à tout responsable de ferme SharePoint : Comment ...
Bon anniversaire - Comment le souhaiter à ses membres ?
Avoir un site, c'est bien. Avoir des inscrits, c'est mieux. Souhaiter leur anniversaire, c'est ...
Audio & Vidéo - Multimédia dans ses pages web
AUDIO/VIDEO : QuickTime, MediaPlayer, RealPlayer, FlashPlayer, ... : Du multimédia dans ses pages ...
Magazines - Le Hors-Série .Net de Programmez !
PHP - Administrer en ligne - Protection des pages
Protéger ses pages pour administrer son site en ligne en (relative) sécurité (PHP).
Communautés - Concours de programmation Flash !
[MAJ] Afficher ses images à la taille voulue - Utilisation du composant IMGSIZE
Ajout de la vérification de l'existence du fichier et d'un test d'erreur de retour du composant ...
Protéger ses Images - Propriété intellectuelle - Vie privée
Je me suis penché sur la question en tant qu'artiste moi-même, et concepteur de site web pour ...
Création de miniatures - Fonction php de création
Cette fonction sert à créer des miniatures.
ASP - Administrer en ligne - Protection des pages
Protéger ses pages pour administrer son site en ligne en (relative) sécurité (ASP).
JavaScript - Numéros de ligne à gauche d'un textarea
Protection - Sécurité - Mise au point - Précautions - Solutions
Même sans être paranoïaque, on a tous entendu parler de failles de sécurité, piratage informatique, ...
AspSmartUpload - Mode d'Emploi
Le composant ASPSmartUpload (gratuit) permet de gérer les téléchargements de FICHIERS ou de ...
JavaScript - Contrôler une date saisie dans un formulaire
HTML - Ajouter un fichier multimédia dans une page web
HTML - Musique de Fond sur son site
Afficher ses images à la taille voulue - Utilisation du composant IMGSIZE
Devant la diversité des formats d'image actuels, il est parfois nécessaire de connaître les ...
Tutorial : HTML | Scripting | ASP-PHP | ASP.net | SQL Server | XML
Sharepoint | XAML | Pocket | Dreamweaver | VML | Divers
  Scripts : Scripting | ASP-PHP | ASP.net | Divers
  Boutique | Annuaire | Bannières | Météo | Tribune | Partenariats
v3 © Didier 2003   
 

Corpo Sciences de Reims Partitions gratuites Carte, météo, annonces
 Wygwam The Inquirer FR DotNet Project Groupes Utilisateurs Microsoft TechNet MVP El Roubio ASP-magazine CodePPC Codes Sources