Programmation Javascript (NFA041)

Feuille 3

Olivier Pons
(pons@cnam.fr)

2022

Exercice 1

Définir des objects javascript pour représenter la pizza « basique » à 8 euros cinquante, dont les ingredients sont «sauce tomate»,«mozzarella» et «jambon», et la pizza « bbq » à 9 euros cinquante, dont les ingredients sont « Râpé » , « oignons » , « poulet» , « oignons » et « sauce barbecue ».

:::solution ### Solution


let piz1=
{
    nom:"basique",
    prix:8.50,
    ingredients:["sauce tomate","mozzarella","jambon" ]
}


let piz2={
    nom:'bbq',
    prix:9.5,
    ingredients:["Râpé","oignons","poulet","oignons","sauce barbecue"]
}

Exercice 2

Proposer une fonction creerPizza pour créer un objet pizza, a partir d'un nom d'un prix et d'une liste d'ingredients.
Puis l'utiliser pour créer une pizza « basquaise » à « 8 euros 90 » dont les ingredients sont « Râpé » « oignons » « poivrons » « poulet ».

Exercice 3

Proposer un constructeur ou une classe pour les pizzas. Puis l'utiliser pour créer une pizza « frenchy » à « 9 euros » dont les ingredients sont « Râpé » « camembert » « herbes de Provence » « huile d'olive ».

Exercice 4

Une commande de pizza, a un nom, une adresse et la liste des pizzas commandées On peut lui ajouter des pizzas, ou demander le prix total.

Proposer une classe pour représenter une commande.

Exercice 5

Vous voulez garder la trace des livres que vous avez lus et de ceux que vous voulez lire.

Pour cela, créez un tableau d'objets livre , où chaque objet décrit un livre et possède 3 propriétés le titre , l'auteur et déjàLu (un booléen indiquant si vous l'avez déjà lu).

Exercice 6

Il s'agit de définir un objet chronometre avec deux méthodes. - demarrerqui démarre le chronomètre - arreter qui l’arrête et renvoie le nombre de millisecondes écoulées depuis le démarrage.

Si le chronomètre n'est pas démarré elle ne fait rien.
Sinon il attend qu'on lui demande de s’arrêter.
Quand on l’arrête, il affiche le temps écoulé depuis le démarrage

On pourra utiliser Date.now()qui renvoie le nombre de millisecondes depuis le 1er Janvier 1970.

>chronometre.start()
undefined
> chronometre.end() // presque 2 seconde après
1943   
> 

Solution


let chronometre={
    estDemmarre:false,
    current:undefined,
    demarrer : function (){ this.estDemmarre=true; this.current=Date.now(); },
    arreter : function (){ if(this.estDemmarre){
        //sinon on ne fait rien
        this.estDemmarre=false;
        return Date.now()-this.current; }
        }

}

On peut l'utiliser pour comparer le temps d'execution de 2 fonctions. il suffit de comparer les resultat de :

chronometre.start();f1();chronometre.end()
chronometre.start();f2();chronometre.end()

Exercice 7

Écrire une fonction pour convertir un objet en une liste de paires.

let p={nom:"Marx",prenom:"Karl"}

> objet2List2paires(p)
[ [ 'nom', 'Marx' ], [ 'prenom', 'Karl' ] ]

Exercice 8

L'objectif est ici de modéliser (de façon rudimentaire) un compte en banque. Dans premiere version le compte un compte a juste un montant et deux méthode, ajouter et retirer qui font varier le montant.
On ne peut retirer plus que le montant present sur le compte.

Exercice 9

Définir une classe CompteAvecDécouvert qui hérite de compte mais qui autorise un découvert d'un montant maximum qui peut être fixer par une méthode fixerDécouvert

Exercice 10

Écrivez une fonction JavaScript pour imprimer toutes les méthodes d'un objet JavaScript. On pourra utiliser getOwnPropertyNames pour obtenir un tableau de de toutes les propriétés d'un objet. Il s'agit de retenir celles qui ont une valeur fonctionnelle.

On peut éventuellement utiliser la fonctionnelle filter pour filtrer les propriétés; on peut aussi faire une boucle.