Vous êtes sur la page 1sur 16

ISTA HAY RYAD TDI

2012/2013

Programmation Orientée Objet

Exercice 1 :

Série dexercices

Ecrivez une classe Livre avec les attributs suivants: titre, auteur, prix, annee.

La classe Livre doit disposer des constructeurs suivants :

Livre(titre, auteur),

Livre(Livre).

Livre(),

Livre(titre),

annee),

Livre(titre, auteur, prix), Livre(titre, auteur, prix,

La classe Livre doit contenir des accesseurs et mutateurs pour les différents attributs.

La classe livre doit aussi contenir une méthode afficher() pour afficher les attributs des livres. Une méthode compter() pour avoir le nombre des instances créées et une

le

méthode type() qui va

prendre

1

si

le prix

de livre

<100 et la valeur 2

si

100<=prix< =500 et 3 si 500<prix.

Ecrivez aussi un formulaire pour tester cette classe.

Exercice 2 :

Réaliser une classe Cercle. Chaque Cercle sera caractérisé par un nom (de type chaine) , un centre de type chaine , une abscisse (de type double) et l’ordonnée (de type double) et un rayon On prévoira :

1. un constructeur recevant en arguments le nom , le centre et l’abscisse et l’ordonne du centre, et le rayon.

2. une méthode affiche imprimant le nom du cercle le centre et son abscisse et ordonnée et le rayon ,

3. Une méthode translate(dx, dy) effectuant une translation du centre qui fait changer l'abscisse (x + dx) et l'ordonnée (y+dy).

4. Une méthode pour calculer le périmètre()

5. Une méthode pour calculer la surface()

6. Une méthode nbcercles() pour afficher le nombre des cercles ayant le rayon < 10cm et le nombre des cercles dont le rayon>10cm

Écrire un programme utilisant cette classe pour créer un cercle, en afficher les caractéristiques, afficher le périmètre et la surface.

le déplacer avec dx=2 et d y=4 et en afficher à nouveau les caractéristiques.

1. Créer un cercle C de nom C, de centre O (9,4) et de rayon 12.

2. Changer le rayon à 13cm et afficher le nouveau rayon.

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

Exercice 3 :

2012/2013

Définir une classe ville, qui va contenir une variable dont le rôle sera de stocker le nom, une autre stockera le nombre d'habitants et la dernière se chargera du pays.

Une méthode afficher() .

Une méthode comparer (ville) : pour comparer les nombres d'habitants des deux villes.

C1() . Le nombre des villes qui ont un nombre d’habitant < 10000

C2() Le nombre des villes qui ont un nombre d’habitant entre 10000 et 1000000

C3() Le nombre des villes qui ont un nombre d’habitant > 1000000

La méthode catégorie () : dans quelle tranche se trouve la ville en question. Selon le nombre d'habitants, le caractère renvoyé changera.

{0, 1000, 10000, 100000, 500000, 1000000, 5000000, 10000000};

{'?', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'} ;

Par exemple si le nombre d’habitants <= 1000 la méthode renvoie le char ‘A’.

si le nombre d’habitants =0 la méthode renvoie le char ‘?’.

Classe testville pour tester la classe ville

Changer le nombre d’habitants d’une ville V.

Affiche le pays de la Ville V

Exercice 4 :

1- Créez la classe Salarie.

Cette classe possédera 5 propriétés de visibilité publique :

matricule

Matricule

Integer

nom

Nom

String

Prénom

Prénom

String

salaire

Salaire

Double

Taux Charges Sociales

TauxCS

Double

Ces propriétés doivent seulement être accessibles par le biais des accesseurs en lecture/écriture mis en œuvre par le biais de l’instruction Property.

2- Implémentez la méthode CalculerSalaireNet().

Elle doit calculer le salaire net d’un employé qui équivaut à :

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

2012/2013

Salaire (salaire*TauxCS) et retournera la valeur calculée.

Et renvoyer la valeur ainsi calculée.

3- Pour tester la définition de votre classe et son bon fonctionnement :

Créez un module et une procédure principale Main.

Déclarez 2 variables de type Salarie et créez 2 instances de type Salarie.

Renseignez les propriétés de ces deux salariés. Choisissez des valeurs significatives pour les salaires et le taux de charge sociale afin de tester correctement le calcul réalisé par la méthode CalculerSalaireNet.

Pour des salaires respectifs de 5 000 et 10 000 dirhams un taux de charges sociales de 25 % , vous devez trouver 3 750 et 7 500.

4- Le taux de charges sociales est en fait commun à tous les salariés. Pour éviter toute redondance de cette propriété, vous devriez donc la déclarer comme partagée au niveau de la classe Salarie et non comme une propriété spécifique des objets instanciés à partir de la classe.

Utilisez pour cela le mot clé Shared au niveau de la définition de la propriété TauxCS.

5-

Testez de nouveau votre classe.

6-

Implémentez deux nouveaux constructeurs d’initialisation :

Un qui permet de renseigner le matricule lors de l’instanciation

Un qui permet de renseigner le matricule et le nom

N’oubliez pas que le constructeur par défaut doit alors être défini explicitement.

7-

Testez votre code : Instanciez deux nouveaux objets à l’aide de ces constructeurs.

8-

Implémentez un constructeur de recopie pour faire un clone d’un objet de référence.

Exercice 5 :

Dans l'avion Paris-Rabat, on peut trouver les personnes suivantes :

Aymane : Pilote

Ismail : coPilote

Firdaous : Hôtesse n°1

Meriem : Hôtesse n°2

Khalid : passager siège n°1

Jamal : passager siège n°2 etc …

Chacune de ces personnes peut être représenté e sous la forme d'objet et on peut dire que chacun de ces objets appartient à une de ces catégories : Pilote, Hôtesse ou Passager

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

On peut construire le diagramme suivant :

CPilote

Prénom N° de tel Adresse Age Nbre d'heures de vol Salaire Date_embauche

les constructeurs les accesseurs EstFatigue() Sub Affichage() Prime_rendement() Année_expérience()

CHotesse

Pré nom N° de tel Adresse Age Nbre de langues Salaire Date_embauche

les constructeurs les accesseurs

ParlePlus3Langues()

Sub Affichage() Prime_rendement()

Année_expérience()

2012/2013

CPassage

Prénom N° de tel Adresse Age N° de son siège

les constructeurs

les accesseurs

Chanceux()

Affichage()

La prime de rendement sera calculée comme suit:

Si nombre d’année d’expérience Si nombre d’année d’expérience Si nombre d’année d’expérience Si nombre d’année d’expérience

2 < NAE <=4 alors prime=salaire 4 < NAE <=6 alors prime=salaire* 1,5 6 < NAE <=8 alors prime=salaire *2 NAE > 8 alors prime=salaire *4

La méthode estfatigué() sera calculé comme suit :

Si le nombre de vol assuré par le pilote est supérieur à 5 heures, alors il est fatigué sinon il ne l’est pas encore.

La méthode chanceux() sera calculé comme suit :

Si le nombre de son siège est différent de 13 alors il est chanceux.

On vous demande dans l’exercice d’essayer d’optimiser les classes, on créant éventuellement des classes héritées à partir d’autres classes.

Il est également demandé de :

- Créer les constructeurs d’initialisation pour chaque classe créée

- Créer une variable permettant de donner un nombre à chaque passager. (et faire en sorte que ce compteur s’incrémente automatiquement à chaque instanciation, passager Khalid aura le numéro 1, passager Jamal le numéro 2 ….)

- Ecrire un module principal permettant de tester le bon fonctionnement des classes et leurs méthodes respectives.

Exercice 6 :

Pokemons

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

2012/2013

Les Pokémons sont des gentils animaux qui sont passionnés par la programmation objet en général et par le polymorphisme en particulier.

Il existe quatre grandes catégories de pokémons :

- Les pokémons sportifs : Ces pokémons sont caractérisés par un nom, un poids (en kg), un

nombre de pattes, une taille (en mètres) et une fréquence cardiaque mesurée en nombre de pulsations à la minute. Ces pokémons se déplacent sur la terre à une certaine vitesse que l’on

peut calculer grâce à la formule suivante : vitesse = nombre de pattes * taille * 3

- Les pokémons casaniers : Ces pokémons sont caractérisés par un nom, un poids (en kg),

un nombre de pattes, une taille (en mètres) et le nombre d’heures par jour où ils regardent la

télévision. Ces pokémons se déplacent également sur la terre à une certaine vitesse que l’on peut calculer grâce à la formule suivante : vitesse = nombre de pattes * taille * 3

- Les pokémons des mers : Ces pokémons sont caractérisés par un nom, un poids (en kg) et

un nombre de nageoires. Ces pokémons ne se déplacent que dans la mer à une vitesse que l’on peut calculer grâce à la formule suivante : vitesse = poids / 25 * nombre de nageoires

Pour chacune de ces trois catégories de pokémons, on désire disposer d’une méthode toString qui retourne (dans une chaîne de caractères) les caractéristiques du pokémon.

Par exemple la méthode toString() appliquée sur un pokémon sportif retournerait :

"Je suis le pokémon Pikachu mon poids est de 18 kg, ma vitesse est de 5,1 km/h j'ai 2 pattes, ma taille est de 0,85m ma fréquence cardiaque est de 120 pulsations à la minute"

Cette même méthode appliquée sur un pokémon casanier pourrait retourner :

"Je suis le pokémon Salameche mon poids est de 12 kg, ma vitesse est de 3,9 km/h j'ai 2 pattes, ma taille est de 0,65m je regarde la télé 8h par jour"

Sur un pokémon des mers :

"Je suis le pokémon Rondoudou mon poids est de 45 kg, ma vitesse est de 3,6 km/h j'ai 2 nageoires"

Question 1. Réaliser un diagramme de classes permettant de gérer la hiérarchie des Pokémons.

Question 2. Programmer ces classes en VB.

Question 3. Programmer un module de test.

Exercice 3 :

Soit le diagramme de classe suivant :

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

2012/2013

ISTA HAY RYAD TDI 2012/2013 Créer la classe abstraite Personne. Créer la classe Ouvrier, la classe

Créer la classe abstraite Personne.

Créer la classe Ouvrier, la classe Cadre et la classe Patron qui héritent de la classe Personne. et prévoir les constructeurs (à 3 et à 0 arguments) de chacune des 3 classes, ces trois classes sont des classes finales.

Le patron a un salaire qui est égal à x% du chiffre d'affaire : salaire = cA*pourcentage/100

Le cadre a un salaire qui dépend de son indice :

E1 : salaire annuel brut 130.000,00 Dhs,

E2 : salaire annuel brut 150.000,00 Dhs,

E3 : salaire annuel brut 170.000,00 Dhs,

E4 : salaire annuel brut 200.000,00 Dhs,

L’ouvrier a un salaire qui est salaire = SMIG + ( dateCourante - dateEntree)*150. De plus, le salaire ne doit pas dépasser SMIG*2.

Ecrire la méthode float getSalaire() qui permet de calculer le salaire pour chacune des classes.

Ecrire la méthode affichier_Info() qui affiche le nom, le prenom, la société , le salaire et le poste occupé (On pourra utiliser la méthode afficher_Info() de classe mère et rajouter l'information du poste occupé).

Le programme principal devra créer 1 patron et 2 cadres aux indice E1 et E3 et 5 ouvriers. Tester les différentes fonctions.

Exercice 7 :

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

Partie I :

9- Créez la classe Salarie.

2012/2013

Cette classe possédera 5 propriétés de visibilité publique :

matricule

Matricule

Integer

nom

Nom

String

Prénom

Prénom

String

salaire

Salaire

Double

Taux Charges Sociales

TauxCS

Double

Ces propriétés doivent seulement être accessibles par le biais des accesseurs en lecture/écriture mis en œuvre par le biais de l’instruction Property.

10- Implémentez la méthode CalculerSalaireNet().

Elle doit calculer le salaire net d’un employé qui équivaut à :

Salaire (salaire*TauxCS) et retournera la valeur calculée.

Et renvoyer la valeur ainsi calculée.

11- Pour tester la définition de votre classe et son bon fonctionnement :

Créez un module et une procédure principale Main.

Déclarez 2 variables de type Salarie et créez 2 instances de type Salarie.

Renseignez les propriétés de ces deux salariés. Choisissez des valeurs significatives pour les salaires et le taux de charge sociale afin de tester correctement le calcul réalisé par la méthode CalculerSalaireNet.

Pour des salaires respectifs de 5 000 et 10 000 dirhams un taux de charges sociales de 25 % , vous devez trouver 3 750 et 7 500.

12- Le taux de charges sociales est en fait commun à tous les salariés. Pour éviter toute redondance de cette propriété, vous devriez donc la déclarer comme partagée au niveau de la classe Salarie et non comme une propriété spécifique des objets instanciés à partir de la classe.

Utilisez pour cela le mot clé Shared au niveau de la définition de la propriété TauxCS.

13- Testez de nouveau votre classe. 14- Implémentez deux nouveaux constructeurs d’initialisation :

Un qui permet de renseigner le matricule lors de l’instanciation

Un qui permet de renseigner le matricule et le nom

N’oubliez pas que le constructeur par défaut doit alors être défini explicitement.

15- Testez votre code : Instanciez deux nouveaux objets à l’aide de ces constructeurs. 16- Implémentez un constructeur de recopie pour faire un clone d’un objet de référence.

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

2012/2013

17- Implémentez la méthode ToString() qui renverra une chaîne constituée de la liste des propriétés de votre objet, avec le séparateur « ; » entre 2 propriétés. Pour tester le bon fonctionnement de la méthode, affichez la valeur retournée par celle-ci à la console. 18- Implémentez la méthode Equals() qui renverra True si les deux objets sont égaux, False sinon. Pour tester le bon fonctionnement de la méthode, affichez la valeur retournée par celle-ci à la console.

Partie II :

Créez une classe Commercial en dérivant la classe Salarie. Cette classe aura 2 propriétés supplémentaires pour calculer la commission :

chiffre d'affaire

chiffreAffaire

Double

commission en %

commission

Integer

Créez les deux constructeurs standards de la classe Commercial (par défaut et initialisation). Ne pas oublier d'appeler les constructeurs équivalents de la classe de base.

Créez les méthodes d'accès aux propriétés supplémentaires.

Surchargez la méthode CalculerSalaireNet pour calculer le salaire réel (fixe + commission).

Surchargez les autres méthodes de la classe de base pour lesquelles on jugera nécessaire de faire ainsi.

Testez la classe Commercial

Exercice 8 :

On veut construire un programme capable d’afficher les informations des figures géométriques colorées ( surfaces, périmètre et volume)

segment : définit par un codeFigure, une couleur, un centre, et une distance

Carre : définit par un codeFigure ,une couleur, un centre, et le côté, on peut calculer son périmètre, et sa surface .

Cercle : définit par un codeFigure, une couleur, un centre, et un rayon, on peut calculer son périmètre et sa surface.

Cylindre : définit par un codeFigure, une couleur, un centre, un rayon et une hauteur, on peut calculer sa surface et son volume

Cube : définit par un codeFigure, une couleur, un centre, et la valeur du côté, on peut calculer sa surface et son volume

La classe Figure est la classe principale, elle permet aussi d’afficher les informations figures.

Formatrice : BOUROUS Imane

des

ISTA HAY RYAD TDI

2012/2013

Le codefigure est un numéro qui s’incrémente automatiquement lors

figure.

de la création de la

Comme nous pensons devoir ajouter ultérieurement de nouveaux types de figures géométriques, nous décidons d’utiliser des interfaces pour décrire leurs comportements

communs.

1. Après avoir étudié les différences et les points communs entre les classes que nous avons distinguées, décrivez la ou les interfaces utiles et précisez les classes qui les implémenteront.

2. Créer les interfaces nécessaires

3. Créer la classe figure.

4. Créer les autres classes (constructeurs, propriétés, et les méthodes nécessaires)

5. Pour chacune de ces catégories de figures, on désire disposer d’une méthode toString qui retourne (dans une chaîne de caractères) les caractéristiques de chaque figure.

6. Créer un module de tests.

Exercice 9 Un fan de Musique désire gérer ces CDs musicaux. Un CD est caractérisé par son numéro,

son titre, son genre (Rock, Pop, Metal, On demande de gérer les CDs musicaux :

),

sa date d’édition et son artiste.

1.

Ecrire la classe CD avec le constructeur d’initialisation

2.

Ajouter les accesseurs et modificateurs

3.

Ajouter la méthode toString qui retourne la description d’un CD sous forme de chaine de

caractères.

4. Ecrire la classe GestionCDs qui utilise un ArrayList et gère les CDs.

Ajouter les méthodes :

a. AjoutCD

b. RechercherCD : La recherche peut se faire par numéro de CD ou par titre (prévoir deux méthodes pour la rechercher).

c. AfficherCDs

On souhaite gérer la répartition des modules entre les formateurs d’un institut de formation

professionnelle.

Exercice 10

I. Un étudiant est défini par son nom, son prénom, un ensemble de notes (un tableau de

double) et une moyenne (double). Ces caractéristiques constituent l’ensemble des données du type Etudiant.

a. Créer la classe étudiant

b. Ajouter une méthode qui permet de calculer la moyenne des notes de l’étudiant

c. Ajouter la méthode toString qui permet d’afficher pour chaque etudiant, son nom, prénom,

ces notes et sa moyenne. II. Afin de vérifier le bon fonctionnement de cette classe Etudiant, il est nécessaire de construire un programme principal.

III. Une classe ClasseE est définie par un ensemble d’étudiants, c’est-à-dire un ArrayList d’objets Etudiant.

a. Créer la classe ClasseE avec une méthode toString qui permet l’affichage des étudiants de la classe.

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

2012/2013

b. Ajouter une méthode classementEtudiants qui permet de classer les étudiants dans l’ordre

décroissant des moyennes. (On utilisera l’algorithme de tri par bulle). IV. Afin de vérifier le bon fonctionnement des deux classes modifier le programme principal pour qu’il offre un menu permettant de:

1. Ajouter un étudiant

2. Supprimer un étudiant

3. Modifier un étudiant

4. Afficher les étudiants

5. Afficher les informations d’un étudiant

6. Afficher le classement

Exercice 11 Reprendre la classe Etudiant de l’exercice 2. On modifie la classe ClasseE afin de :

Créer un objet de type Hashtable Stocker les étudiants dans cet objet en les associant à leur clé.

1. Dans la classe Etudiant, ajouter un numéro d’inscription.

2. Dans la classe ClasseE, créer un objet de type Hashtable appeler le liste.

3. Ajouter une méthode ajouterEtudiant qui ajoute un étudiant à la liste. La clé serait son

numéro d’inscription.

4. Ajouter une méthode supprimerEtudiant qui supprime un étudiant passé en paramètres.

5. Ajouter une méthode rechercherEtudiant qui cherche un étudiant dans la liste et l’affiche ou

affiche un message d’erreurs si l’étudiant n’existe pas.

6. Ajouter une méthode qui permet de parcourir la liste et afficher les étudiants.

Exercice 12 Soit la classe module qui modélise un module et qui comportera les attributs suivants :

- Reference

- intitule

Soit la classe Formateur qui modélise un Formateur et qui comportera les attributs suivants :

- matricule

- nom

- prenom

- echelle

- listeModule

1- Codage de la classe Module

a. Ecrire la classe Module avec un compteur des objets créés.

b. Ecrire un constructeur d’initialisations contenant tous les attributs de la classe et un constructeur par défaut.

c. Ecrire la méthode tostring permettant l’affichage des attributs.

2- Codage de la classe Formateur

a. Ecrire la classe Formateur avec un compteur des objets créés.

b. Ecrire un constructeur d’initialisations contenant tous les attributs de la classe et un constructeur par défaut.

c. Ecrire la méthode tostring permettant l’affichage des attributs.

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

2012/2013

3- Ajouter la méthode compare qui teste l’égalité de 2 objets Formateur (2 objets Formateur sont égaux s’ils ont le même matricule). 4- Ajouter une méthode ajouter_module() qui ajoute un module à la liste des modules pris en charge par un formateur. 5- Ajouter une méthode supprimer_Module qui supprime un module de la liste des modules d’un formateur. 6- ajouter une méthode afficher_module() qui affiche les modules affectés à un formateur. 7- ajouter une méthode vider_module() qui supprime tous les modules affectés à un formateur. 8- Ecrire un programme de test qui crée 4 formateurs et 5 modules.

Exercice 13 : (Les comptes bancaires et les Clients -Personne) :

Ecrire une classe Personne qui contient les éléments suivants : nom (une chaîne de caractères), date de naissance (trois entiers pour le jour, le mois, lannée). On écrira également un constructeur associé ainsi quune méthode daffichage public String toString() rudimentaire qui affiche les champs dune personne. On naffichera pas la date de naissance. On se propose de décrire simplement les informations nécessaires à la création dun compte bancaire. On distinguera deux types de comptes, les comptes courants et les comptes dépargnes qui seront implémentés par deux classes distinctes CompteCourant et CompteEpargne dérivant toutes les deux dune même classe abstraite Compte. Les comptes épargnes ont un montant minimal qui sera représenté par un champ depotMinimal. Dans la classe abstraite Compte, les champs seront :

- Une personne p de type personne

- Un entier numéro représentant le numéro du compte.

- Un entier long montant représentant le montant du compte.

Chaque nouveau client devra avoir un numéro de compte différent et un même client peut avoir plusieurs comptes. La classe abstraite Compte définira une méthode simulant le dépôt dune somme sur un compte. On disposera aussi dune méthode simulant le retrait dun compte. Sur un compte courant, le retrait ne sera effectué que si le compte ne devient pas négatif. Sur un compte épargne, le retrait ne sera effectué que si lopération namène pas en dessous de la valeur de dépôt minimal. Question 1:

Ecrire la classe abstraite Compte avec les déclarations des méthodes abstraites et définitions des méthodes concrètes. Question 2 :

Ecrire les classes CompteCourant et ComptEpargne qui dérivent de Compte avec leurs méthodes et leurs constructeurs. Pour les comptes courants, on écrira deux constructeurs, lun deux créant un compte de montant nul. Question 3 :

Ajouter aux classes CompteCourant, CompteEpargne, Compte une méthode public String toString( ) qui permet laffichage dun compte. On affichera pour chaque compte, la personne,

le numéro du compte et son type (courant ou épargne), puis le montant. Question 4 :

On crée maintenant une classe Banque qui contient une collection représentant lensemble des comptes. La classe Banque contiendra par exemple le champ Base de type Collection. Ecrire dans la classe Banque une méthode Void afficherComptesClient (Personne p) Qui permet dafficher tous les comptes dune personne donnée. Question 5 :

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

2012/2013

Le directeur de la Banque décide pour le nouvel an de créditer de 100 Dhs tous les comptes épargne des personnes âgées de moins de 28 ans (On prendra ceux dont la date de naissance est supérieur ou égale à 1985). Ecrire dans la classe Banque une méthode void incrementerNouvelAn( ) qui réalise cette faveur. Des méthodes pourront être ajoutées dans les autres classes.

Problème 1 EFM POO 2012 :(barême 20 pts)

On veut réaliser une application pour la gestion des formateurs, des classes et des stagiaires de votre établissement.

On suppose qu’un formateur est responsable sur plusieurs classes, et chaque classe contient plusieurs Stagiaires.

Un formateur est caractérisé par son matricule, nom, prénom, DateNaissance, SalairedeBase et poste qui est par défaut « Permanent », et la liste des classes qui lui est affecté (en utilisant une collection).

Pour une Classe, on trouve le code (auto), la filière, son responsable (qui est un stagiaire) et la liste des stagiaires (en utilisant une collection)

Chaque Stagiaire est caractérisé par son numéro d’inscription, nom et dateNaissance. Questions :

1)

Classe Stagiaire (6 pts)

a. Créer la classe Stagiaire, avec le constructeur qui initialise tous les paramètres et propriétés nécessaires. (2 pts)

b. Créer la méthode toString qui retourne sous forme de chaine de caractères les informations d’un employé. (1 pt)

c. Créer une méthode equals qui permet de comparer si deux stagiaires possèdent le même nom. (1 pt)

d. Gérer par une exception, le cas ou la date de naissance est postérieure à la date d’aujourd’hui. (2 pts)

2)

Classe Classe (7 pts)

a. Créer la classe Classe, avec le constructeur d’initialisation et propriétés nécessaires. (2 pts)

b. Créer la méthode ajouterStagiaire(….) qui ajoute un stagiaire à la classe. (1 pt)

c. Créer la méthode supprimerStagiaire(….) qui supprime un stagiaire à la classe (1 pts)

d. En déduire la méthode déplacerStagiaire(….) qui déplace un stagiaire d’une classe à une autre. (1 pts)

e. Créer la méthodeAfficherStagiaires(…) qui liste tous les Stagiaires de le classe. (2 pts)

3) Classe Formateur (7 pts)

a. Créer la méthode ajouterClasse(….) qui affecte une classe à un formateur. (1 pt)

b. Créer la méthode afficherStagiaire(…) permettant de lister tous les stagiaires assignés au formateur. (2 pts)

les

c. Créer la méthode afficherResponsableClasse(

)

permettant

d’afficher

tous

responsables des classes affectés au formateur. (2 pts)

d. Créer la méthoderechercherStagiaire(…) (1 pt)

e. Créer la méthode sauvegarderFormateur ( du formateur. (1 pt)

)

qui permet de sérialiser la liste des classes

Problème 2: Examen de Passage 2012 (Variante 1)

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

Dossier 2 : (15,25 pts)

2012/2013

L’objet de cette application est la gestion informatisée des voyages organisés par une société possédant des bus. Chaque voyage est assuré par un seul chauffeur.

Recommandation : utiliser des listes génériques (List<T> : listes typées) de préférence. Mais vous pouvez utiliser des ArrayList ou des Collections.

1-

Classe Chauffeur.

a. Définir une classe Chauffeur dont les caractéristiques sont : CIN, Nom, Prénom. (0,5 pt)

b. Écrire un constructeur avec tous les paramètres. (0,5 pt)

c. Écrire les accesseurs des champs et la méthode toString() qui renverra tous les champs séparés par tabulation. (0,5 pt)

2-

Classe Bus.

a. Définir une classe Bus dont les caractéristiques sont : Immatriculation, Marque, Type.

 

(0,5pt)

 

b. Écrire un constructeur avec tous les paramètres. (0,5 pt)

c. Écrire les accesseurs des champs. (0,5 pt)

d. Écrire la méthode toString() qui renverra les informations du bus séparées par tabulation. (0,5 pt)

3-

Classe Voyage

a. Définir une classe Voyage dont les caractéristiques sont : (0,75 pt) - Numéro voyage : le numéro du 1 er voyage créé est 1 et à chaque création d’un nouveau voyage, ce numéro doit être automatiquement incrémenté de 1. Faire le nécessaire (données+ code) pour y arriver.

- Vchauffeur : c’est le chauffeur qui a assuré le voyage courant.

- Vbus : C’est le bus conduit par Vchauffeur au cours de ce voyage.

- Date Voyage : date où a eu lieu ce voyage.

- Ville de départ.

- Ville d’arrivée.

- Nombre de voyageurs : nombre des personnes qui ont effectué ce voyage.

-

Prix du billet : prix payé par chaque voyageur de ce voyage (le même prix pour

 

tous).

 

b. Ecrire un constructeur sans aucun paramètre permettant de définir la valeur du numéro du voyage et d’affecter la date système à Date voyage. (0,75 pt)

c. Ecrire un constructeur permettant de définir les valeurs des autres champs. Ce constructeur doit faire d’abord appel au constructeur précédent. (0,75 pt)

d. Écrire les accesseurs des champs. (0,5 pt)

e. Ecrire la méthode toString() qui renverra le numéro du voyage, la date du voyage, le nom et le prénom du chauffeur, l’immatriculation et la marque du bus, ville de départ, ville d’arrivée et recette du voyage tous séparés par tabulation. (1 pt) La recette du voyage = Nombre de voyageurs * Prix du billet du voyage en cours.

4-

Programme principal

a. Déclarer une liste de chauffeurs, une liste de bus et une liste de voyages accessibles par toutes les méthodes du programme principal. (0,5 pt)

b. Ajouter une méthode rechercherChauffeur() qui recherche un chauffeur par son CIN. Si trouvé, elle retourne le chauffeur correspondant dans la liste des chauffeurs. Sinon, elle retourne la valeur null. (0,5 pt)

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

2012/2013

c. Ajouter une méthode rechercherBus() qui recherche un bus par son immatriculation. Si trouvée, elle retourne le bus correspondant dans la liste des bus. Sinon, elle retourne la valeur null. (0,5 pt)

d. Ajouter une méthode rechercherVoyage() qui recherche un voyage par son numéro. Si trouvé, elle retourne l’indice correspondant dans la liste des voyages. Sinon, elle retourne la valeur -1. (0,5 pt)

e. Ajouter par code (en mode conception) trois chauffeurs à la liste des chauffeurs. (0,5

pt)

f. Ajouter par code trois bus à la liste des bus. (0,5 pt)

g. Ajouter par code deux voyages à la liste des voyages. Utiliser certains constructeurs et certaines méthodes déjà conçus. (0,75 pt)

h. Concevoir le menu suivant : (en prenant en compte les indications ci-dessous)

1-

Ajouter bus. (0,75 pt)

2-

Ajouter voyage. (1 pt)

3-

Lister tous les voyages. (0,75 pt)

4-

Lister les voyages passés entre deux dates. (0,75 pt)

5-

Nombre de voyageurs de l’année en cours. (0,75 pt)

6-

Fin. (0,25 pt)

Indications concernant les traitements à réaliser dans le menu ci-dessus :

Ajouter bus :

Saisir les données nécessaires et faire le nécessaire pour que deux bus dans la liste n’aient pas la même immatriculation.

Ajouter voyage :

- Le numéro du nouveau voyage est automatiquement affecté par programme et la

date voyage correspond à la date système.

- Saisir le CIN du chauffeur qui doit correspondre à un chauffeur de la liste des

chauffeurs et si trouvé, le chauffeur ainsi trouvé correspond à Vchauffeur du voyage à ajouter, sinon le programme vous demandera de saisir un autre CIN.

- Saisir l’immatriculation du bus qui doit correspondre à un bus de la liste des bus et si trouvée, le bus ainsi trouvé correspond à Vbus du voyage à ajouter, sinon le programme vous demandera de saisir une autre immatriculation.

- Saisir les autres données restantes et chaque fois qu’une donnée saisie n’est pas

valide, le programme vous demandera de la saisir de nouveau.

Lister tous les voyages : Imprimer la liste de tous les voyages de la manière suivante :

/…. /

Date :

Date voyage

Nom

Prénom

Immatric.

Marque

Ville départ

Ville arrivée

Recette

 

/

/….

…….

………

………

……

……….

……

Indication : la date en haut à droite correspond à la date système.

Lister les voyages passés entre deux dates : Imprimer une liste des voyages semblable au niveau de la présentation à celle de la question précédente mais contenant uniquement les voyages qui se sont déroulés entre deux dates que l’utilisateur de

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

2012/2013

l’application devra saisir. En bas de la liste ainsi imprimée, indiquer le nombre des voyages listés.

Nombre de voyageurs de l’année en cours :

Le programme va calculer et afficher le nombre de voyageurs de l’année en cours (utiliser la date système pour récupérer l’année en cours). Ce nombre correspond au nombre total des voyageurs ayant utilisé les bus de la société pendant l’année en cours.

Problème 3 : Examen de Passage théorique 2011 :

Dans une application Windows tous les contrôles (fenêtres, boutons, zones de texte, cases à cocher ) sont caractérisés par un nom (de type chaines de caractères), une position haut et une position gauche (de type entier) de l’objet sur l’écran. Une fenêtre est un contrôle comme les autres, caractérisée en plus d’un titre et d’une couleur d’arrière-plan (de type entier). 1- Ecrire les classes Controle et Fenetre avec un constructeur d’initiation, un constructeur de copie, sachant que la classe Fenetre hérite de la classe Controle. 2- Doter la classe Controle par la méthode Display qui permet d’afficher la mention suivante :

« Le contrôle Texte1 est situé à la position 12x25 » Texte1 représente le nom du contrôle et 12,25 représentent respectivement la position gauche, haut du contrôle dans l’écran. 3- Redéfinir la méthode DISPLAY pour la classe Fenetre pour afficher la mention suivante :

« Le contrôle Texte1 est situé à la position 12,25, ayant comme titre « titre1 » et une couleur d’arrière- plan de 20 ». On souhaite ajouter à la classe Fenetre une propriété type collection qui permet de gérer une liste de contrôles que l’utilisateur peut ajouter sur une fenêtre (zones de texte, liste déroulante,…). 4- Donner les modifications à apporter à la classe Fenetre et la méthode AjoutControle qui permet d’ajouter un contrôle à la collection. 5- Implémenter pour la classe Fenetre la méthode RetireControle qui permet de supprimer un contrôle de la collection connaissant son nom. 6- Implémenter pour la classe Fenetre la méthode DisplayTout qui permet d’afficher tous les contrôles ajoutés à la fenêtre.

Problème 4 : Examen de Passage Pratique 2011 (v1)

L’objet de cette application est la gestion informatisée du cabinet médical. Elle doit procéder à la gestion informatisée des dossiers médicaux des patients et elle s’occupe également de la gestion des rendez-vous et des visites.

1- Classe Patient. a. Définir une classe clsPatient dont les caractéristiques sont : Code Patient (affecté de façon

incrémentale par rapport au nombre de patients), Nom, Prénom, Date de naissance, Adresse, Tél, E-

mail.

b. Ecrire un constructeur à deux paramétres : Nom et Prénom.

c. Ecrire un deuxième constructeur avec tous les paramètres.

d. Ecrire les accesseurs des champs et la méthode ToString() qui renverra les informations d’un

patient.

2- Classe Visites.

a. Définir une classe clsVistes dont les caractéristiques sont : Date visite, Heure visite, Code patient, Montant payé.

b. Ecrire un constructeur à deux paramètres : Date visite et Heure visite.

c. Ecrire un deuxième constructeur sans paramètres qui appelle le premier avec la date et l’heure

actuelle.

Formatrice : BOUROUS Imane

ISTA HAY RYAD TDI

2012/2013

d. Ecrire les accesseurs des champs et la méthode ToString() qui renverra les informations de cette

visite.

3- Classe RendezVous.

a. Définir une classe clsRendezVous dont les caractéristiques sont : Date Rendez-Vous, Heure Rendez-Vous, Code patient, Observation.

b. Ecrire un constructeur à trois paramètres : Date Rendez-Vous, Heure Rendez-Vous, Code patient.

c. Ecrire les accesseurs des champs et la méthode ToString() qui renverra les informations de ce

rendez-vous.

4- Classe CabinetMedical.

a. Définir une classe CabinetMedical dont les caractéristiques sont : une liste des patients, une liste des visites et une liste des rendez-vous (Collections ou tableaux). b. Ajouter une méthode AjouterPatient qui ajoute un patient à l’ensemble des patients du cabinet.

c. Ajouter une méthode PatientExistant ayant comme paramétre le nom et le prénom et qui retourne le code du patient s’il existe ou le chiffre -1 sinon.

d. Définir une classe ExceptionMedecinOccupe.

e. Ajouter une méthode AjouterRDV qui ajoute un rendez-vous, et lève l’exception définie en d) s’il coïncide avec un redez-vous.

f. Ajouter une méthode AfficherRDVduJour qui va, pour une date donnée comme paramètre, affiche la liste des rendez-vous de ce jour.

g. Ajouter une méthode PatientAyantDesVisites qui affiche la liste des patients (code, nom et prènom)

ayant visité le cabinet pendant la dernière semaine.

h. Ajouter une méthode SupprimerPatient qui permet de supprimer un patient ainsi que ses visites et

rendez-vous.

i. Ajouter une méthode EnregistrerPatients qui permet d’enregistrer la liste des patients dans un

fichier.

Formatrice : BOUROUS Imane