## Atelier ### Un organisateur de voyages veux pouvoir remplir son véhicule de 8 places avant de savoir si il doit organiser le voyage ou pas. Chaque voyageur a un nom, un prénom, un numero de place, une date de naissance, et un indicateur qui précise si il a payé ou pas. Il n'a pas besoin d'avoir payé pour avoir un numéro de place. ### Ecrire l'objet voyageur avec ces propriétés et au moins une fonction pour pouvoir modifier l'état payé. ``` objet voyageur variable privée nom, prenom : chaine; variable privée date_de_naissance : date; variable privée numero_de_place : entier; variable privée payé : booléen; methode constructeur(nom,prenom,date) ceci->nom = nom; ceci->date_de_naissance = date; ceci->prenom = prenom; ceci->numero_de_place = 0; ceci->payé = faux; fin methode methode paiement_recu() ceci->payé = vrai; fin méthode; methode a_payé() renvoyer ceci->payé fin methode methode attribuer_place(numero) si numero > 0 ceci->numero_de_place = numero fin si fin methode methode place() renvoyer ceci->numero_de_place; fin methode methoode identite() renvoyer ceci->prenom ~ " " ~ ceci->nom ~ " né le " ~ ceci->date_de_naissance; fin methode fin objet ``` ### Ecrire un objet chauffeur héritant de voyageur, mais comme il est dans l'équipage, il est forcément indiqué comme ayant payé. ``` objet chauffeur étend voyageur methode constructeur(nom,prenom,date) parent->constructeur(nom,prenom,date); ceci->paiement_recu(); fin methode; fin objet ``` ### Ecrire le psuedo code permettant de créer un chauffeur ou un voyageur en fonction du choix de l'utilisateur ``` fonction creer_voyageur(chauffeur_autorisé=vrai) var mon_voyageur : objet; var est_chauffeur : booléen; var nom, prenom : chaine; var unedate : date; Afficher "Nom ?" Lire nom Afficher "Prenom ?" Lire prenom Afficher "Date de naissance ?" Lire date si chauffeur_autorisé alors est_chauffeur = faux; Afficher "C'est un chauffeur ?" Si reponse_fin == "oui" Alors est_chauffeur = vrai Fin si fin si Si est_chauffeur == vrai Alors mon_voyageur = nouveau chauffeur(nom,prenom,date); Sinon mon_voyageur = nouveau voyageur(nom,prenom,date); Fin si; renvoyer mon_voyageur; fin fonction ``` ### Ecrire le pseudo code permettant de mettre dans un tableau au minimum un chauffeur et un client. Sachant quon ne peut pas avoir plus d'un chauffeur. ``` var tdv : tableau; var fini, a_chauffeur, vehicule_rempli : booléen; var nb_voyageurs : entier; var reponse : chaine; nb_voyageurs = 0; fini = faux; a_chauffeur = faux; vehicule_rempli = faux; Tant que (fini != vrai et a_chauffeur != vrai et !vehicule_rempli) tdv[nb_voyageurs] = creer_voyageur(!a_chauffeur); nb_voyageurs = nb_voyageurs +1; Si tdv[nb_voyageurs] instancede chauffeur a_chauffeur = vrai; fin si; vehicule_rempli = (a_chauffeur et nb_voyageurs == 9) ou (!a_chauffeur et nb_voyageurs == 8); Si taille(tdv) >= 2 alors Afficher "fini ?" Lire reponse_fin Si reponse_fin == "oui" Alors fini = vrai Fin si Fin si Fin tant que; ``` ## Puis de vérifier si tout le monde a payé ou pas. ``` var i entier; i=0; fini = false; Tant que i < taille(tdv) et !fini si faux == tdv[i]->a_payé() alors Afficher "tout le monde n'a pas payé"; fini = vrai fin si i = i+1; fin tant que Si i == taille(tdv) et !fini Afficher "tout le monde a payé"; fin si ```