0% ont trouvé ce document utile (0 vote)
74 vues5 pages

Examen Principale 2425

Le document présente les détails d'un examen écrit pour le module de Conception par Objet et Programmation Java, incluant des questions à choix multiples et un problème de développement d'application. Les questions portent sur des concepts clés de Java, tels que les interfaces, les exceptions et la gestion des collections. La partie problème demande de concevoir des classes pour un sanctuaire de créatures magiques, en définissant leurs attributs et méthodes.

Transféré par

ezzedinechemak
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • système de soins,
  • affichage des créatures,
  • logique de programmation,
  • méthodes statiques,
  • système de points de vie,
  • conception de classes,
  • Stream API,
  • exceptions Java,
  • méthode use,
  • modélisation d'objets
0% ont trouvé ce document utile (0 vote)
74 vues5 pages

Examen Principale 2425

Le document présente les détails d'un examen écrit pour le module de Conception par Objet et Programmation Java, incluant des questions à choix multiples et un problème de développement d'application. Les questions portent sur des concepts clés de Java, tels que les interfaces, les exceptions et la gestion des collections. La partie problème demande de concevoir des classes pour un sanctuaire de créatures magiques, en définissant leurs attributs et méthodes.

Transféré par

ezzedinechemak
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Thèmes abordés

  • système de soins,
  • affichage des créatures,
  • logique de programmation,
  • méthodes statiques,
  • système de points de vie,
  • conception de classes,
  • Stream API,
  • exceptions Java,
  • méthode use,
  • modélisation d'objets

Année universitaire : 2024 - 2025

Examen Écrit

Semestre : 1 2

Module : Conception par Objet et Programmation Java Documents autorisés : Non


Internet autorisé : Non
Classes : 3A3 -> 3A65
Date : 14-01-2025
Durée : 1H30
Heure : 13H00
Nombre de pages : 5

Veuillez répondre sur la feuille d’examen. Ne rendez pas cette feuille.


Partie 1 : QCM (4 pts)
1. Parmi les affirmations suivantes, lesquelles sont vraies ?

I. Toutes les méthodes déclarées dans une interface sont abstraites.


II. Les interfaces autorisent les méthodes statiques.
III. Les méthodes avec le mot-clé default doivent fournir une implémentation
dans l'interface.
IV. Les champs déclarés dans une interface peuvent être modifiés.

a) I
b) I et IV
c) II et III
d) II, III et IV

2. Parmi les affirmations suivantes, lesquelles sont vraies concernant les exceptions
en Java ?

I. Une exception non capturée entraîne l'arrêt immédiat du programme.


II. Le mot-clé finally est toujours exécuté, qu'une exception soit levée ou non.
III. Une exception vérifiée doit être explicitement gérée ou déclarée dans la
signature de la méthode.
IV. Les exceptions sont hiérarchisées.

Page 1/5
a) I
b) I et IV
c) I, II, III et IV
d) II et III
3. Laquelle des interfaces fonctionnelles suivantes qui ne prend pas d'argument et
qui retourne un résultat ?

a) Predicate
b) Consumer
c) Supplier
d) BiFunction

4. Le code suivant présente une erreur de compilation, comment peut-on la corriger ?

public static void main(String[] args){


ArrayList<Employees> emp = new ArrayList<>();
Collections.sort(emp);
}

I. La classe "Employees" doit implémenter "Comparator"


II. La classe "Employees" doit implémenter "Comparable"
III. Implémenter un "Comparator" dans une classe séparée
IV. Implémenter un "Comparable" dans une classe séparée

a) II
b) II ou III
c) I ou IV
d) IV

Partie 2 : Problème (16 pts)


Vous êtes chargé de développer une application de gestion pour un sanctuaire de
créatures magiques. L’objectif est de suivre les créatures, leurs pouvoirs magiques et
leurs interactions.

Page 2/5
Classes principales :

L’interface Ability représente un pouvoir qu’une créature peut posséder. Elle a une
méthode use qui permet d'utiliser la capacité sur une créature cible. Il s'agit d'une
interface, ce qui signifie qu'elle doit être implémentée par des classes concrètes, comme
Heal ou Attack, qui définissent la logique spécifique du pouvoir.

La classe Attack modélise une attaque pouvant être utilisée par une créature pour infliger
des dégâts à une cible. Elle possède les propriétés et comportements suivants :

• Attributs :
o damage : Un champ représentant la quantité de dégâts que cette attaque
peut infliger.
• Méthodes :
o use(Creature target) : Cette méthode applique l'attaque à une créature cible
spécifiqtue (target). Lorsqu'elle est invoquée, elle réduit la santé (health) de
la cible (target) de la valeur du champ damage.

La classe Heal, déjà implémentée, représente un pouvoir de soin utilisé pour restaurer la
santé d'une créature cible.

• Attributs :
o amount : Un entier qui représente la quantité de points de santé restaurés
lorsque cette capacité est utilisée.
• Méthodes :

Page 3/5
o use(Creature target) : Applique l'effet de soin sur une créature cible en
augmentant sa santé (health) de la valeur définie par amount.

La classe Creature représente une entité vivante avec des caractéristiques et des
comportements spécifiques dans un écosystème donné.

• Attributs :
o name : Le nom de la créature.

o id : Un identifiant permettant de différencier chaque instance de créature.


o species : L'espèce à laquelle appartient la créature.
o abilities : Un ensemble de pouvoirs uniques, représentant les actions que la
créature peut exécuter.
o preyList : L’ensemble de proies est une collection d'autres créatures qu’une
créature peut chasser ou consommer.
o health : Un attribut représentant la santé ou la vitalité de la créature.
• Méthodes :
o addAbility(Ability ability) : Ajoute un pouvoir à la créature.
o removeAbility(Ability ability) : Supprime un pouvoir de la créature.
o isPredatorOf(Creature other) : Vérifie si la créature passée en paramètre fait
partie de ceux dans la liste de proies.
o addPrey(Creature creature) : Ajoute une créature à la liste des proies
(preyList) de la créature actuelle, avec les restrictions suivantes :
La créature ajoutée ne peut pas appartenir à la même espèce que la

créature actuelle (afin d'éviter la cannibalisation).
▪ Si la créature en paramètre appartient à la même espèce, une
exception de type InvalidInteractionException sera levée pour
signaler cette interaction invalide avec le message « Can’t hunt
creatures of the same species ».
o useAbility(Ability ability, Creature target) : Permet d'utiliser un pouvoir
spécifique (ability) sur une créature cible (target), ensuite:
▪ Si la santé (health) de la cible excède 100, elle sera réinitialisée à 100.
▪ Si la santé (health) de la cible atteint 0 après l'application, un
message est affiché indiquant que la créature est morte.

La classe Sanctuary dans le fichier représente un sanctuaire où des créatures peuvent


être hébergées.

• Attributs :

Page 4/5
o creatures : Une liste de créatures hébergées dans un sanctuaire.
• Méthodes :
o displayCreaturesNamesSortedByLength() : Affiche les noms de toutes les
créatures hébergées dans le sanctuaire triées par longueur (de leur nom).
(Avec Stream seulement)
o groupCreaturesBySpecies(String species) : Regroupe les créatures, non
redondants, du sanctuaire par espèce et retourne une structure de données
où chaque espèce est associée à la liste des créatures correspondantes.
o displayNumberOfCreaturesBySpecies() : Affiche le nombre de créatures
présentes pour chaque espèce hébergée dans le sanctuaire.
o returnNumberOfPredators(Creature target) : Retourne le nombre de
créatures hébergées dans le sanctuaire qui sont des prédateurs de la
créature cible (target) en paramètre.

TODO :
1. Créez l’interface Ability (1 pt)
2. Créez la classe Attack (3 pts)
3. Créez la classe Creature (7 pts)
4. Créez la classe Sanctuary (5 pts)

Page 5/5

Vous aimerez peut-être aussi