Download TypeScript program Rendez_vous.ts.zip
class Personne { constructor(private readonly _name: string) { } public a_l_heure(moment: string, participants: Array<Personne>): void { console.info(this._name + " rendez-vous à l'heure " + moment + " avec " + participants.map(participant => participant._name).filter(name => name !== this._name).join(" - ")); // participants.filter(participant => participant._name !== this._name).map(participant => participant._name).join(" - ")); } } class Rendez_vous { private readonly _heure: number; private readonly _minute: number; private readonly _participants: Array<Personne>; get participants(): Array<Personne> { return this._participants; } /* Minuterie : */ readonly dringgg: Promise<string>; private _interval_id: number; constructor(private readonly date: Date, ...participants: Array<Personne>) { this._heure = date.getHours(); this._minute = date.getMinutes(); this._participants = [...participants]; this.dringgg = new Promise<string>((c_est_l_heure, c_est_plus_l_heure) => { /* On passe les fonctions 'c_est_l_heure' et 'c_est_plus_l_heure' en parametres de la minuterie */ /* Le timer est ici réglé à 15 sec. mais le sujet du contrôle fait varier cette valeur : */ this._interval_id = setInterval(this._est_ce_que_c_est_l_heure_, 15000, c_est_l_heure, c_est_plus_l_heure, this); }); } // Les fonctions 'c_est_l_heure' et 'c_est_plus_l_heure' sont recuperees ici pour tenir (ou non) la promesse : private _est_ce_que_c_est_l_heure_(c_est_l_heure: Function, c_est_plus_l_heure: Function, rendez_vous: Rendez_vous): void { const maintenant: Date = new Date(Date.now()); const moment: string = maintenant.getHours() + ":" + (maintenant.getMinutes() < 10 ? "0" + maintenant.getMinutes() : maintenant.getMinutes()); console.info("Est-ce que c'est l'heure ? " + moment); if (rendez_vous._heure === maintenant.getHours()) { if (rendez_vous._minute === maintenant.getMinutes()) { clearInterval(rendez_vous._interval_id); // On arrete la minuterie (timer)... c_est_l_heure(moment); } else if (rendez_vous._minute < maintenant.getMinutes()) { clearInterval(rendez_vous._interval_id); // On arrete la minuterie (timer)... c_est_plus_l_heure("Petit retard " + moment); } } else if (rendez_vous._heure < maintenant.getHours()) { clearInterval(rendez_vous._interval_id); // On arrete la minuterie (timer)... c_est_plus_l_heure("Gros retard " + moment); } } } const Main = /* async */ () => { const Damien = new Personne("Damien"); const Julie = new Personne("Julie"); /* L'heure du rendez-vous est fixée ici mais le sujet du contrôle fait varier cette valeur : */ const rendez_vous: Rendez_vous = new Rendez_vous(new Date('2024-09-27T10:15:00'), Damien, Julie); rendez_vous.dringgg.then(moment => { rendez_vous.participants.forEach(participant => participant.a_l_heure(moment, rendez_vous.participants)); }).catch(message => { console.error(message); }).finally(() => { console.log("Coucou"); }); } Main();
Q1 : la fonction
Main
doit-elle être déclaréeasync
(pour l’instant en commentaire) pour le programme compile sans erreurs ?
- OUI
- NON
Q2 : On lance le programme à 8h 50m 00s. Le rendez-vous est fixé à 08::51::00 et le timer est réglé à 120000ms. Qu’est-ce qui est affiché ?
- Gros retard… etc.
- Petit retard… etc.
- Damien rendez-vous à l'heure… etc.
Q3 : On lance le programme à 8h 50m 00s. Le rendez-vous est fixé à 08::51::00 et le timer est réglé à 15000ms. Qu’est-ce qui est affiché ?
- Gros retard… etc.
- Petit retard… etc.
- Damien rendez-vous à l'heure… etc.
Q4 : Combien y-a-t-il d’attributs (champs) non
static
dans tout objet de typeRendez_vous
?
- Aucun
- 5
- 6
- Une infinité (par définition en TypeScript)
Q5 : De quoi hérite la classe
Rendez_vous
?
Object
any
- Rien
unknown
Q6 : Dans l’hypothèse énoncée en Q2, est-ce que
Coucou
est affiché à l’écran ?
- OUI
- NON
Q7 : Dans l’hypothèse énoncée en Q3, est-ce que
Coucou
est affiché à l’écran ?
- OUI
- NON
Q8 : Dans la méthode
a_l_heure
de la classePersonne
, si on intervertitmap
suivie defilter
au profit defilter
suivie demap
(voir ligne en commentaire) ?
- Le programme ne compile pas
- Le programme compile mais ne s’exécute pas correctement
- Aucune différence