B1 - Développement Web Javascript
Auteur : Paul Schuhmacher
Version : 1
- Créer un objet
student1(sans fonction constructeur) représentant un·e étudiant·e avec les propriétés suivantes :- name
- age
- courses (une liste de matières suivies par l'étudiant·e, par exemple, Mathématiques, Histoire, Informatique, etc.)
student1 contient les informations sur Jane, âgée de 25 ans qui étudie les matières suivantes : Arts, Sociology et Computer Science.
- Créer un deuxième objet
student2(toujours sans fonction constructeur !) avec les mêmes propriétés, mais des informations différentes. Cette fois-ci,student2contient les informations sur John, âgé de 23 ans et qui étudie les matières suivantes : Computer Science, Biology. - Écrire une fonction
printStudent(student)qui prend un objet étudiant en argument et affiche les informations de l'étudiant·e de la manière suivante :
Name : Jane
Age : 25 ans
Courses: Arts - Sociology - Computer Science
Name : John
Age : 23 ans
Courses : Computer Science - Biology- Ajouter une méthode
addCourse(course)à l'objetstudent1qui permet d'ajouter une nouvelle matière à la liste des matières suivies. Cette méthode est-elle présente surstudent2? - Imaginez que vous deviez maintenant créer 100 étudiant·es au lieu de 2. Si vous décidez de renommer la propriété
nameenfullNameou de modifier le fonctionnement de la méthodeaddCourse, quelles seraient les conséquences sur votre code actuel ? En quoi l'utilisation d'une fabrique à objets (la fonction constructeur) rendrait-elle votre application plus facile à maintenir ? - Créez une fonction constructeur pour instancier des étudiant·es. Utilisez-la pour réinstancier les objets représentant
JaneetJohn. - Créer une fonction
calculateAverageAge(...students)qui prend un nombre indéterminé d'étudiant·es et retourne l'âge moyen des étudiants. - Écrire une fonction
findCommonCourses(etudiant1, etudiant2)qui prend deux objets étudiants en argument et retourne la liste des matières qu'ils ont en commun. - Modifier la structure d'un étudiant en remplaçant la propriété
ageparbirthDate. Pourquoi est-ce un choix plus judicieux ? Instancier les étudiants avec cette nouvelle forme. Utiliser l'objet natif JavaScript Date pour générer des dates de naissance. Exemple d'usage :let date = new Date(Year, Month, Day). - Écrire une fonction qui retourne la liste des étudiant·es, ordonné du plus jeune au plus agé·e. Testez-là en ajoutant d'autres étudiant/es à votre liste.
- Bonus : Ajouter une méthode
age()à l'objet étudiant qui calcule et retourne son âge actuel.
- Créez un tableau appelé
numberscontenant les nombres de 1 à 10. - Affichez le tableau
numbersdans la console. - Ajoutez les nombres 11 et 12 à la fin du tableau.
- Affichez à nouveau le tableau mis à jour dans la console.
- Trouvez et utilisez une méthode de tableau pour inverser l'ordre des éléments dans le tableau.
- Affichez le tableau inversé dans la console. Que remarquez-vous ?
- Réaliser l'opération sans modifier le tableau original. Pour cela, réaliser un clone du tableau numbers au préalable avec la méthode
Array.from(). - Utilisez une méthode de tableau pour extraire et afficher les nombres entre 5 et 8 (inclus). Cette opération ne doit pas modifier le tableau original.
- Utilisez une méthode de tableau pour vérifier si le nombre 3 est présent dans le tableau. Affichez le résultat dans la console.
- Créez un nouveau tableau appelé
oddNumberscontenant uniquement les nombres impairs du tableaunumbers. - Affichez le tableau
oddNumbersdans la console. - Trouvez une méthode pour transformer le tableau en chaîne de caractères, où chaque élément est séparé de l'autre par un slash (/).
- Écrire une fonction qui permet de tester si une chaîne de caractère passée en paramètre commence par une lettre majuscule ou minuscule entre 'a' et 'd'.
- Écrire une fonction qui renvoie 'true' lorsqu'une chaîne contient un seul caractère '@' sinon renvoie 'false'.
- Écrire une fonction qui renvoie 'true' lorsqu'une chaîne contient au moins un chiffre, sinon renvoie 'false'.
- Écrire une fonction qui remplace les chiffres par le caractère '*' .
- En vous aidant de la documentation, trouver une méthode qui permet de transformer la chaîne
let string = '13,14,15,16,17,18,19,20';en un tableau de nombres.
Source : www.exelib.net
-
Créez une fonction constructeur appelée
Rectanglequi permet de fabriquer des rectangles. La fonction doit prendre en paramètre la largeur et la longueur du rectangle. -
Créez une fonction constructeur appelée
Circlequi permet de fabriquer des cercles. La fonction doit prendre en paramètre le rayon du cercle. -
Ajoutez une méthode aux rectangles appelée
area()qui calcule et affiche l'aire du rectangle. Faites de même pour les cercles. -
Créez une liste de rectangles avec des côtés aléatoires entre 1 et 10 (largeur et longueur). Placez-les dans un tableau avec la méthode
push. Trouvez le rectangle ayant la plus grande surface et affichez ses caractéristiques. -
Créez des cercles de tailles aléatoires entre 1 et 10. Placez-les dans un tableau avec la méthode
push. Pour chaque cercle, dressez la liste des autres cercles plus petits que lui. -
Ajoutez une propriété de position
xaux cercles. Créez 10 cercles avec des positions aléatoires entre 0 et 5, et des rayons compris entre 1 et 2. Ajoutez une méthode aux cercles nomméeisOverlapping(autreCercle): bool. Cette méthode prend un cercle en argument et retourne vrai si les deux cercles se chevauchent, faux sinon. Écrivez une fonction qui retourne le nombre de cercles qui se chevauchent.
- Ajouter une méthode
isClicked(clickPosition)aux cercles qui prend en argument la position d'un click utilisateur (entre 0 et 7). Cette méthode retourne vrai si le click a été fait à l'intérieur du cercle, faux sinon.
// Exemple de création d'un rectangle
let myRectangle = new Rectangle(4, 6);
myRectangle.area();
// Exemple de création d'un cercle
let myCircle = new Circle(1, 3);
let myCircle2 = new Circle(2, 2);
myCircle.area();
myCircle.isClicked(5); // false
myCircle.isOverlapping(myCircle2); //trueVous pouvez utiliser la fonction
Math.random()pour générer des nombres aléatoires entre 1 et 10 pour les côtés des rectangles, les rayons des cercles, les positions x des cercles, etc.