Série d'exercices Java sur la programmation orienté objet POO

Exercice conception de structure des classes méthodes d'un programme

Cet exercice a pour but de réfléchir sur la conception d’un programme, sa structuration en classes. Il ne s’agit pas pour le moment de réaliser ce programme, mais juste de concevoir son architecture.
On fait des cocktails avec différents liquides (alcools, sodas, jus de fruits). On a un bar avec des bouteilles qui peuvent être pleines ou àmoitié vides. On a des shakers qui ont une contenance donnée. Il y a des recettes de cocktails qui indiquent seulement les proportions. Ces recettes peuvent s’appliquer à des quantités plus ou moins grandes selon les besoins du moment.
Les cocktails se font en déversant une partie du contenu des bouteilles dans des shakers. Après, il faut secouer. Les shakers sont ensuite vidés (dans les verres, mais on ne tiendra pas compte des verres dans cette application). Il faut les laver après usage.
Question : quelles classes faut-il créer ? Quelles informations faut-il dans chaque classe ? Quelles méthodes faut-il écrire, et dansquelle classe les mettre ? Pour chaque méthode, précisez le type des paramètresvet de la valeur de retour.

Exercice JAVA POO sur les classes et l' heritage - volaille -

Programme JAVA - programmation orienté objet

Un éleveur de volaille reçoit d’un fournisseur de jeunes canards et de jeunes poulets qu’il élève jusqu’à ce qu’ils aient la taille nécessaire à leur commercialisation.

Une volaille est caractérisée par son poids et un numéro d’identification reporté sur une bague qu’elle porte a sa petite patte. Les volailles arrivent à l’élevage à l’âge de trois semaines. Elles sont baguées et enregistrées dans le système informatique.

Il y a deux sortes de volailles : des canards et des poulets. Le prix du canard et celui du poulet sont deux prix différents, exprimés en euros par kilo. En revanche, le prix est le même pour tous les individus de la même espèce. Ce prix varie chaque jour. Le poids auquel on abat les bêtes est différents pour les canards et les poulets, mais c’est le même pour tous les poulets (respectivement, tous les canards).

Ecrivez une classe des volailles avec deux sous-classes des poulets et des canards. Il faut pouvoir enregistrer les prix du jours, les poids d’abbatage, le poids d’une volaille donnée.

Ecrivez une classe permettant de représenter l’ensemble des animaux de l’élevage au moyen d’un tableau.

Des méthodes doivent permettrent de trier les animaux à abattre et d’évaluer le prix obtenu pour ces animaux. Il faut également pouvoir enregistrer les jeunes animaux qui arrivent.

Les boucles imbriquées -triangle étoile - évaluation puissance

Exercice 1: boucles imbriquées

Ecrire un programme qui affiche un carré composé de caractères ’*’, dont la taille est entrée par l’utilisateur. Par exemple, pour une taille 4, ce sera:

****
****
****
****

Il y a plusieurs façons de réaliser cela. Une d’elle consiste à utiliser une seule boucle, une autre utilise deux boucles imbriquées l’une dans l’autre. Vous privilégierez la méthode qui utilise deux boucles, l’une qui réalise les lignes, l’autre les colonnes du dessin.

Exercice 2: triangle

Dans la lignée de l’exercice 1, il s’agit de dessiner cette fois un triangle avec la pointe tournée vers le haut. Pour le triangle, on demandera à l’utilisateur de rentrer le nombre de lignes. Pour chaque ligne, il faudra afficher un certain nombre d’espaces, puis un certain nombre d’étoiles, puis un New_Line. Vous devrez mettre en évidence une relation entre le numéro de ligne , la taille et le nombre d’espace et une autre relation entre le numéro de ligne , la taille et le nombre d’étoiles.
*
***
*****
*******

Exercice 3: premiers nombres pairs

Ecrire un programme qui affiche les n premiers nombres pairs où n est un entier entré par l’utilisateur. Par exemple, les 4 premiers nombres pairs sont: 2, 4, 6 et 8.

Exercice 4: nombre à l’envers

Ecrire un programme qui saisit un nombre entier et l’affiche à l’envers. Par exemple, si on rentre le nombre 78151, le programme affichera 15187. Vous utiliserez pour cela une boucle qui extrait un chiffre à afficher.

Les opérations de division et de modulo ou reste de la division entière (opérateur %) vous aideront.

Exercice 5: élévation à la puissance

Le but de l’exercice est de calculer x
y où x et y sont deux entiers entrés au clavier. On utilisera la multiplication pour calculer cette puissance, en partant de la formule: x puissance y = 1 * x * x . . . * x / y fois

Exercices Java POO programme mari et femme - notion de référence , exception

Exercice 1 : comptes bancaires (suite)

Cet exercice reprend et développe l’exercice precedent. Pour le réaliser, on utilisera le corrigé de cet exercice.
Nous allons développer cet exemple en introduisant une nouvelle notion : celle de procuration. En plus des comptes dont elle est titulaire, une personne peut avoir une procuration sur le compte d’une autre personne. Cela lui permet de faire des opérations sur le compte (par exemple des dépôts et des retraits), mais elle n’a pas le droit de donner à son tour procuration sur ce compte. Seul un des titulaires peut donner procuration sur un compte.

Exercice 2 : mari et femme

Il est possible en java d’avoir une variable d’instance, dans un objet, qui est du même type que l’objet qui la contient. Cela est possible grâce à la notion de référence : la variable ne contient pas l’objet lui-même mais un moyen de le retrouver. Par ailleurs, la valeur null permet de créer le premier objet de la classe en question. Sa variable ne peut pas être initialisée (sauf éventuellement par lui-même, ce qui est possible). Nous allons utiliser cette possibilité pour créer une classe UnePersonne, qui contiendra comme informations
le nom, l’âge et le sexe de la personne et le conjoint (mari ou femme).

Question 1

Faites une première version du programme où seul le nom du conjoint apparaît dans la classe UnePersonne. La classe comportera une méthode pour marier la personne à quelqu’un (un autre objet instance de la classe UnePersonne) et une autre pour faire divorcer la personne. Il y aura des exceptions pour empêcher que les mineurs de moins de 18 ans se marient, pour empêcher que les gens déjà mariés ne se remarient et pour empêcher les gens non mariés de divorcer.

Question 2

Changez le classe obtenue à la question 1 en remplaçant dans la classe le nom du conjoint par une référence à l’objet qui représente le conjoint. On a beaucoup plus d’information sur le conjoint, ce qui permet de vérifier notamment que les deux personnes sont de sexe opposés. Vous traiterez cela avec une exception.

Question 3

On cherche à présent à assurer que les informations de mariage et de divorce soient cohérentes, c’est à dire que quand a a pour conjoint b, il faut que b ait pour conjoint a. D’autre part, si a divorce de b, alors b ne doit plus avoir pour conjoint a. Il faut pour cela que les méthodes de mariage et de divorce changent non seulement l’objet sur lequel elles sont appelées, mais aussi leur paramètre.

Méthodologie de conception avec rappel

Rappel de Cours : méthodologie de conception

Pour écrire un programme il faut suivre les étapes suivantes :
1. Déterminer les informations nécessaires pour résoudre le problème. Ce sont les données ou encore les entrées du programme
2. Déterminer ce que l’on veut calculer. Ce sont les résultats ou sorties du programme
3. Etre capable soi-même de calculer les sorties a partir d’exemples de données. Ceci est une étape de compréhension
du problème.
4. Décrire comment on calcule les sorties par rapport aux entrées.
5. Coder en Java.

Pour ce qui est de la dernière étape, nous apprendrons dans les prochains cours comment la réaliser. Pour cette première
séance d’exercice, nous allons nous arrêter a l’étape 4. Nous n’avons pas vu suffisamment de Java pour réaliser le
codage. Prenons d’abord un exemple.

Exemple

Soit le problème : testé si trois nombres entiers sont tries dans l’ordre croissant. Les réponses aux quatre premières
étapes de conception sont :
1. entrées : 3 entiers que nous appellerons (a) , (b) et (c)
2. Sorties : la réponse au problème est de nature booléenne : soit la propriété testée est vraie (la valeur calculée
par le programme sera alors true) soit elle est fausse (valeur false). En résume, la sortie du programme sera un
booléen que nous appellerons (cr)
3. Voici quelques exemples :

a

b

c

cr

explication

6

6

6

10

7

3

45

4

2

true

false

false

6

4

3

4. Si a

Exercice méthodologie de conception 

Faire les étapes 1, 2 et 3 et 4 pour chacun des problèmes suivants :
– Calculer la note finale de la valeur APA étant données la note du partiel et celle de l’examen et sachant que :
– une note inferieure a 7 a l’examen est éliminatoire
– on prend la moyenne des deux notes si elle avantage l’étudiant.
– Tester si un entier appartient a l’intervalle donne par deux nombres entiers.

– Tester si une année est bissextile. On sait qu’une année divisible par 4 est bissextile sauf si elle est divisible par
100, cependant les années divisibles par 400 sont également bissextiles.
– Calculer puis afficher le plus grand parmi trois nombres entiers.
– Tester si trois nombres entiers sont tries dans l’ordre croissant ou décroissant.

TP Java POO : programme Hôpital 

On reprend le code donné pour l’exemple de réalisations des statistiques dans un hôpital. On aimerait compléter les classe Hopital, Chambre et Patient avec des fonctionnalités nouvelles. Méthodologie : pour chaque méthode ajoutée, vous ajouterez des tests de cette méthode dans le programme main afin de vous assurer qu’elle fonctionne correctement.

Question 1

Exécutez la méthode main fournie dans ce code. Modifiez ce programme afin d’ajouter un patient dans une chambre choisie par vous et où il reste de la place. Effectuez des affichages afin de vérifier que le patient a été bien ajouté. Faîtes de même avec un patient et une chambre où il n’y a plus de place. Comment se comporte le programme ?

Question 2

Ajoutez des méthodes dans les classes appropriées permettant d’afficher toutes les chambres avec de la place en indiquant à chaque fois le nombre de places libres dans chacune. Ajoutez des tests de cette méthode dans le main.

Question 3

Ajoutez une méthode afin de saisir les données d’un patient. Cette méthode doit retourner un patient en résultat. Quelle est son entête ? S’agit-il d’une méthode statique ou dynamique ? Dans quelle classe la placez vous ?

Question 4

Modifiez le main afin de proposer (en boucle) 4 options à l’utilisateur : afficher toutes les chambres où il reste de la place ; saisir les données d’un patient et l’ajouter dans une chambre donnée ; saisir les données d’un patient et l’ajouter dans une des chambres les plus remplies ; quitter.

Question 5

Ajoutez des méthodes dans les classes appropriées permettant de trouver le numéro de chambre où se trouve un patient, donné par son nom, ou signaler son absence s’il n’est pas trouvé.

Question 6

Ajoutez des méthodes dans les classes appropriées permettant de sortie d’un patient donné par son nom, ou signaler son absence s’il n’est pas trouvé. Vous devrez vous assurer que le nombre de lits occupés, de chambres vides et de chambres pleines sont correctement mis à jour après une sortie.

Question 7

Ajoutez un constructeur dans la classe Hopital permettant de construire un hôpital ayant un nombre de list différent par chambre. On suppose que seulement des chambres de 1, 2, 3 ou 4 lits sont possibles. Faut-il changer d’autres méthodes suite à ce changement ?

Question 8

On souhaite ajouter une date d’entrée et une date de sortie pour chaque patient, ainsi qu’un prix de la nuit dans chaque chambre. Onconsidère que ce prix est le même pour toutes les chambres. Lors de la sortie d’un patient, on souhaite calculer et afficher le montant à régler pour son séjour. Quelles sont les modifications que vous devez réaliser et dans quelles classes ?

Exercices java programmes - condition - moyenne d'une classe - Tables de vérité

Exercice 1 : Moyenne d'une classe

Question 1

Ecrire un programme de gestion de notes. Ce programme lit un nombre d’élèves et les notes de cesélèves. Il doit ensuite calculer et  afficher la moyenne des notes et le nombre de notes >= 10.

Question 2

Améliorer le programme précédent en introduisant les vérifications suivantes : le nombre d’élèves doit être compris entre 5 et 40 et les notes doivent être comprises entre 0 et 20.

Exercice 2 : branche inaccesible

Sous quelle condition le message “C” est-il affiché par la conditionnelle suivante ? Peut-on simplifier cette co nditionnelle ? Expliquez le problème avec cette instruction.

12345678if (a) {Terminal.ecrireStringln("A");} else if (!a) {Terminal.ecrireStringln("B");} else {Terminal.ecrireStringln("C");}

Exercice 3 : Tables de vérité

Montrez, à l’aides de tables de vérité, les équivalences suivantes :

1. p _ (p ^ q) = p
2. ¬(p _ q) = ¬(p) ^ ¬(q)
3. p _ (q ^ r) = (p _ q) ^ (p _ r)

Les Boucles - programme manipulation des tableau

Exercice 1: tableau d’entiers

Dans cet exercice, on va travailler avec un tableau d’entiers initialisé:
1  i n t [ ] t a b = {12 , 15 , 13 , 10 , 8 , 9 , 13 , 1 4 } ;
On peut représenter graphiquement ce tableau comme suit:
0    1   2     3   4   5    6    7
12 15 13 10   8   9   13  14

Question 1 {sidebar id=1}

Ecrire un programme qui saisit un entier au clavier et qui recherche si cet entier appartient au tableau(réponse de type oui/non).

Question 2

Ecrire un programme qui saisit un entier au clavier et qui recherche si cet entier appartient au tableau. Au cas où la réponse est positive, l’indice de cet entier dans le tableau est affiché. S’il y a plusieurs occurrences,le dernier indice est affiché.

Question 3

Même question, mais s’il y a plusieurs occurrences, le premier indice est affiché.

Question 4

Ecrire un programme qui saisit un entier et un indice et met cet entier dans le tableau à cet indice. Il faudra vérifier que l’indice correspond bien à une case du tableau (par exemple 0 ou 3 sont corrects, mais -1 ou 123 ne sont pas des indices corrects pour ce tableau). Le programme affichera le contenu du tableau avant et après cette transformation.

Question 5

Ecrire un programme qui saisit deux indices et échange les valeurs contenues dans le tableau à ces deux indices. Le programme affichera le contenu du tableau avant et après cette transformation. Par exemple, si les deux indices saisit sont 1 et 5, le tableau après échange est:
0   1    2    3    4     5     6    7
12 9   13  10  8   15   13  14

Exercice 2: tableau entré au clavier

Question 1

Ecrire un programme qui saisit 6 entiers et les stocke dans un tableau, puis affiche le contenu de ce tableau une fois qu’il est rempli.

Question 2

Reprendre la partie saisie du programme précédent pour écrire un nouveau programme qui recherche et affiche le plus grand élément du tableau.

Question 3

Même question, c’est à dire saisie d’un tableau et recherche du plus grand élément, mais cette fois pour un tableau contenant des caractères.

Question 4 

Ecrire un programme qui saisit un tableau de 6 entiers puis calcule la moyenne de ces six entiers. Attention, la moyenne des entiers n’est pas un entier.{sidebar id=8}

Question 5

Ecrire un programme qui saisit d’abord un nombre n, puis ensuite saisit n caractères et les place dans un tableau.

Exercice 3: nombre de lettres dans un tableau

Ecrire un programme qui saisit 10 caractères au clavier, puis ensuite, calcule le nombre de majuscules, et le nombre de lettres dans ce tableau. Un caractère n’est pas forcément une lettre: ce peut être un chiffre, un signe de ponctuation, un caractère spécial. Une majuscule est un caractère compris entre ’A’ et ’Z’ parce que l’ordre des caractères (utilisé notamment par les opérateurs , =) assure que toutes les lettres majuscules sont successives. De même une minuscule est un caractère compris entre ’a’ et ’z’. Pour cet exercice, pour simplifier le problème, on ne comptera pas les caractères avec des accents comme des lettres.

Article publié le 20 Mars 2010 Mise à jour le Jeudi, 12 Août 2021 15:55 par Salim KHALIL