Programmation orientée objet en Javascript
Aperçu des sections
-
Cours en cours de réécirture car la POO a grandement évolué en JS ces derniers temps.
Infos à jours sur le MDN :
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Classes
https://developer.mozilla.org/fr/docs/Learn/JavaScript/Objects/JS_orient%C3%A9-objet -
Voir le cours générique sur la programmation orientée objet.
-
Cet exemple reprends toutes les notions de base de la POO vues dans le cours générique.
<meta charset="UTF-8" /><h1>POO VOITURE</h1><script>class Vehicule {#couleur = ''#marque = ''#vitesseMax = 0#passagers = []#limitePassagers = 0#quantiteCarburant = 0#volumeReservoir = 0#type = ''klaxon = ''static #nombreDeVoiture = 0;constructor(c = 'jaune', m = 'Ferrari', v = 100, p = 1, qteCarburant = 0, volReservoir = 35) {console.log("Création d'un nouveau véhicule !")this.#couleur = cthis.#marque = mthis.#vitesseMax = vthis.#limitePassagers = pthis.#quantiteCarburant = qteCarburant;this.#volumeReservoir = volReservoir;Vehicule.#nombreDeVoiture++;}static get nombreDeVoiture() {return Vehicule.#nombreDeVoiture}get couleur() {return this.#couleur;}set couleur(couleur) {if (isNaN(couleur)) {this.#couleur = couleur;} else {console.error(`une couleur ne peut pas etre un nombre ${couleur}.`);}}get type() {return this.#type;}set type(type) {if (type === 'voiture' || type == 'camion' || type == 'moto') {this.#type = type;} else {console.error('un véhicule n epeut etre que une voiture, un camion, ou une moto');}}acceler() {console.log('La voiture roule')console.log(`Attention, la voiture ne peut pas dépasser les ${this.#vitesseMax}km/h`)}freiner() {console.log('La voiture freine')}info() {console.log(`Type de véhicule : ${this.#type}`)console.log(`La couleur de ce véhicule est ${this.#couleur}`)console.log(`La marque de ce véhicule est ${this.#marque}`)console.log(`La vitesse max de ce véhicule est de ${this.#vitesseMax} km/h`)console.log(`Nombre de passagers autorisés : ${this.#limitePassagers}`)console.log(`Réservoir : ${this.#quantiteCarburant}/${this.#volumeReservoir}`)console.log(`Passagers : ${this.nombreDePassager()}/${this.#limitePassagers})`)/* console.log(`=> Nombre de véhicules créées : ${Vehicule.#nombreDeVoiture}`); */}rajouteCarburant(qte = 1) {if (qte + this.#quantiteCarburant > this.#volumeReservoir) {console.error(`Impossible de mettre ${qte}L dans le réservoir.`);} else {this.#quantiteCarburant += qte;}}faireLePlein() {while (this.#quantiteCarburant < this.#volumeReservoir) {this.rajouteCarburant()}}nombreDePassager() {return this.#passagers.length}ajouterUnPassager(prenom) {if (this.nombreDePassager() >= this.#limitePassagers) {console.error(`Nombre maximum de passager atteint (${this.nombreDePassager()}/${this.#limitePassagers})`)} else {this.#passagers.push(prenom)}}coupDeKlaxon = () => {console.log(`Klaxon : ${this.klaxon}`)}}class Voiture extends Vehicule {#capaciteCoffre = 0constructor(c = 'jaune', m = 'Ferrari', v = 100, p = 1, qteCarburant = 0, volReservoir = 35) {super(c, m, v, p, qteCarburant, volReservoir)this.type = 'voiture'this.#capaciteCoffre = 50this.klaxon = 'Tut tut'console.log("=> Création d'une nouvelle voiture !")}info = () => {super.info();console.log(`La capacité du coffre de ma voiture est de : ${this.#capaciteCoffre}L`)}}class Camion extends Vehicule {#remorque = falseconstructor(c = 'jaune', m = 'Ferrari', v = 100, p = 1, qteCarburant = 0, volReservoir = 35) {super(c, m, v, p, qteCarburant, volReservoir)this.type = 'camion'this.klaxon = 'Pouet pouet'this.#remorque = trueconsole.log("=> Création d'un nouveau camion !")}info = () => {super.info();if (this.#remorque === true) {console.log(`Le camion a une remorque`)} else {console.log(`Le camion n'a pas de remorque`)}}}let vehicules = [];let voiture = new Voiture()let camion = new Camion('blanc', 'iveco', 90, 8, 0, 150)/* let voiture2 = new Voiture('bleu', 'Renault', 130, 3, 10, 40)let voiture3 = new Voiture('rose', 'Citroen', 150, 2, 19, 20)let voiture4 = new Voiture('jaune', 'Fiat', 130, 3, 10, 20)*/vehicules.push(voiture)vehicules.push(camion)/*voitures.push(voiture2)voitures.push(voiture3)voiture1.ajouterUnPassager('Julien')voiture1.ajouterUnPassager('Patricia')//On ajoute un passager a la voiture 2voiture2.ajouterUnPassager('Fédérique')voiture2.ajouterUnPassager('Nadia')voiture2.ajouterUnPassager('Bilal')voiture2.ajouterUnPassager('Corentin')voiture3.ajouterUnPassager('Nathan')*/console.log('-------')vehicules.forEach((vehicule) => {vehicule.faireLePlein()vehicule.info()vehicule.coupDeKlaxon()console.log('-------')})/* console.log(`=> Nombre de voiture créées : ${Voiture.nombreDeVoiture}`); */</script> -
-
Devoir
-
Devoir
-
Devoir
-
Devoir
-
Devoir