Aller au contenu

Programmation JavaScript/Programmation objet

Un livre de Wikilivres.

Programmation objet

[modifier | modifier le wikicode]

Dans la programmation orientée objet, le programme est conçu pour que ses composants soient aussi modulaires que possible. En particulier, quand un nouveau type d'objet est créé, il devrait fonctionner sans problèmes lorsqu'il est placé dans un environnement différent ou nouveau projet de programmation, c'est à dire qu'il est indépendant. Le résultat est une réduction du temps passé dans la réécriture de code.

JavaScript utilise des objets pour représenter des types de données complexes. Ces objets sont de petites structures de données avec leurs propres champs et des fonctions d'accès ou de modification de ces données. Ces objets bénéficient d'une approche où les variables sont protégées de toute ingérence extérieure. Si les variables peuvent être modifiées directement par le code d'un programme en dehors de la fonction ou de l'objet, alors il ne peut plus être tributaire de donner un résultat précis.

Contrairement à d'autres langages de programmation, JavaScript n'a pas de niveaux de protection sur les membres d'un objet. JavaScript utilise un prototype de forme des objets, qui peuvent encore hériter de classes des parents, mais n'est pas une forme pure de langage orienté objet ; il s'agit un langage de programmation objet par prototype. Cependant, la plupart des modèles de conception peut encore s'appliquer au langage tant que l'on ne cherche pas à accéder directement à l'état interne de l'objet (par exemple, en utilisant les méthodes d'un objet).

Comme avec d'autres langages de programmation, en JavaScript, les références aux champs et fonctions d'un objet utilisent le point (.) entre l'objet et le nom du champ.

Le mot clé new crée un nouvel objet.

item = new Object();

Méthodes et champs d'un objet

[modifier | modifier le wikicode]

Dans JavaScript, les objets n'ont pas de forme fixe - ils peuvent se modifier en cours d'exécution pour crée un nouvel objet, ou pour créer des champs ou fonctions.

money = new Object();
money.quarters = 10;

Comme on le voit plus bas, on peut créer des méthodes pour l'objet de la même manière.

Function et prototype

[modifier | modifier le wikicode]

En JavaScript, qui est un langage de programmation orientée prototype, chaque objet hérite des attributs et méthodes de son prototype.

Exemple :

		function Animal(race, sex)
		{
			this.race = race;
			this.sex = sex
			
			manger = function()
			{
				return "je mange";
			}
		}

		Animal.prototype.attaquer = function(){
			alert("J'attaque");
		};
	
		var anim = new Animal("labrador","male");
		
		anim.age = 10;
		anim.courir = function(vitesse){
			alert("Je cours à "+vitesse+" km/h");
		};

                // ->
		anim.courir(50);
		anim.attaquer();

Le mot clé this est utilisé dans une méthode, et se réfère à l'objet qui est attaché à cette méthode.

money.addQuarters = function(amount) {
   this.quarters += amount;
}
money.addQuarters(10);

Paradigme de programmation classe/objet

[modifier | modifier le wikicode]
/**
 * Modélisation d'une voiture
 *
 * @class Voiture
 */
var Voiture = (function () {
    //'use strict';

    Voiture.couleur = "verte";
    // methode de classe
    Voiture.construire = function (marque) {
        return new Voiture(marque);
    };

    // constructeur
    function Voiture(marque) {
        this.marque = marque;
    }

    // méthodes d'instance
    Voiture.prototype = {
        
        rouler: function (direction) {
            document.write("la voiture roule");
        },
        getMarque: function (){
        	return this.marque;
        }
    };
    
    return Voiture;
    
}());

// ->
var saab = new Voiture('Saab');
var chrysler = Voiture.construire('Chrysler');
chrysler.rouler();
alert(saab.getMarque());