Nom:…………………………………………………………………
Prénom: ……………………………………………………………
Salle: …………………………………………...……………………
Code apogée:……………………………….……………………
Examen Java Session de Printemps 2024
SMI S6
Pr. Abdessamad Belangour
ous souhaitons réaliser une petite application très simplifiée de gestion des publications
N
scientifiques d’un chercheur. Ainsi, lorsqu’un chercheur arrive à des résultats scientifiques
importants, il rédige un article et le publie soit dans une conférence, sois dans un journal
scientifique(revuescientifique).Poursimplifiernousallonsconsidérerqu’unepublicationne
dispose que d’un seul auteur.
Pour qu’une publication soit le plus visible possible, des sites bibliographiques spéciaux
(appelés Indexeurs) répertorient, organisent et indexent ces publications provenant de
diversesconférencesetjournauxàtraverslemonde.Ainsichaquechercheurestidentifiéet
sontravailestdiffuséetévaluéàtraversunensembled’indicateurs(nombredepublications,
nombredecitations,H-indexetautres).Unchercheuràunh-indexde10,parexemple,siau
moins 10 de ses publications ont été cités 10 fois.
Le diagramme de classe de cette application est comme suit :
Compléter le code qui manque :
ublic class Indexeur {
p
private String nom;
private Map<Integer, Publication> articles;
public Indexeur(String nom) {
[Link] = ……………………………………………………………………………………………………….…………….;
[Link] = ………………………………………………………………………………………………………………… ;
}
public Indexeur(String nom, Map<Integer, Publication> articles) {// founi}
public Publication recupererPublication(int doi) {
………………………………………………………………………………………………………………..……………………. ;
}
Page 1 sur 5
public boolean ajouterPublication(Publication p) {
…………………………………………………………………………………..………………………………………………………..
…………………………………………………………………………………..………………………………………………..……..
……………………………………………………………………..……………………………………………………………..……..
…………………………………………………………………..……………………………………………………………..………..
………………………………………………………………..………………………………………………………………..………..
……………………………………………………………..………………………………………………………………..………….. }
@Override
public String toString() {
return "Nom Indexeur=" + nom + ", Nombre articles=" + …………..……………………………………..;
}
}
/ / on suppose que les getters et setters sont fournis à part ceux qui sont
demandéspublic abstract class Publication implements
Comparable<Publication>{
private int doi;// document object identifier
private String titre;
private LocalDate année;
private Chercheur auteur;
private int nombreCitations;
private Map<Integer,Publication> citations;
// nouvelle publication non encore citée
public Publication(int doi, String titre, LocalDateannée, Chercheur auteur)
{ [Link] = doi;
[Link] = titre;
[Link]ée = année;
[Link] = auteur;
[Link] =……………………………….………………………………………………….. ;
[Link]=…………………………………………………………………………………………………..;
}
// nouvelle publication citée
public Publication(int doi, String titre, LocalDateannée, Chercheur auteur, Map<Integer,
Publication> citations) {
[Link] = doi;
[Link] = titre;
[Link]ée = année;
[Link] = auteur;
[Link] = ……………………………………………………………………………………. ;
[Link] = ………………………………………………………………………………………………….. ;
}
public void setCitations(Map<Integer, Publication> citations) {
………………………………………………………………………………………………….. ;
………………………………………………………………………………………………….. ;
}
public boolean ajouterCitation(Publication pub){
…………………………………………………………………………………..………………………………………………………..
…………………………………………………………………………………..……………………………………………………..
……………………………………………………………………..…………………………………………………………………..
…………………………………………………………………..……………………………………………………………………..
………………………………………………………………..………………………………………………………………………..
Page 2 sur 5
…………………………………………………………..…………………………………………………………………………..
…
}
public boolean supprimerCitation(Publication pub){//fournie en cas de
besoin}//retourne le titre l’année et le nombre decitations
@Override
public String toString() {
………………………………………………………………..………………………………………………………………………..
……………………………………………………………..…………………………………………………………………………..
}
// comparer par nombre de citations, sinon par année sinon par titre
@Override
public int compareTo(Publication autrePublication) {
…………………………………………………………………………………..………………………………………………………..
…………………………………………………………………………………..……………………………………………………..
……………………………………………………………………..…………………………………………………………………..
…………………………………………………………………..……………………………………………………………………..
………………………………………………………………..………………………………………………………………………..
……………………………………………………………..…………………………………………………………………………..
…………………………………………………………………………………..………………………………………………………..
…………………………………………………………………………………..……………………………………………………..
……………………………………………………………………..…………………………………………………………………..
…………………………………………………………………..……………………………………………………………………..
………………………………………………………………..………………………………………………………………………..
……………………………………………………………..…………………………………………………………………………..
}
}
public class ArticleConference extends Publication {
private String conference;
private String ville;
private String pays;
public ArticleConference(String conference, String ville, String pays, int doi, String
titre, LocalDate année) { // fourni en cas de besoin}
ublic ArticleConference(String conference, String ville, String pays, int doi, String
p
titre, LocalDate année, Chercheur auteur) {
……………………………………………………………..………………………………………………………………………
…..
……………………………………………………………..………………………………………………………………………
…..
……………………………………………………………..………………………………………………………………………
…..
……………………………………………………………..………………………………………………………………………
….. }
public ArticleConference(String conference, String ville, String pays, int doi, String
titre, LocalDate année, Chercheur auteur, Map<Integer, Publication> citations) {//
fourni} //retourne le nom de la conférence, le titrel’année et le nombre de citations
@Override
public String toString() {
…………………………………………………………………………..………………………………………………………………………
…..
………………………………………………………………………..………………………………………………………………………
…
….. }
}
Page 3 sur 5
public class ArticleJournal extends Publication {
private String journal;
private int volume;
private int nombre;
// tout est fourni pour cette classe (Constructeurs,getters et setters, toString())}
/ / on suppose que les getters et setters sont fournis
public class Chercheur {
private String nom;
private String prenom;
private String laboratoire;
private String université;
private int nombrePublications;
private int totalCitations;
private int h_index;
private Set<Publication> publications;
// nouveau chercheur sans publications
public Chercheur(String nom, String prenom, Stringlaboratoire, String université) {//
fourni} // nouveau chercheur avec publications
public Chercheur(String nom, String prenom, Stringlaboratoire, String
université, Set<Publication> publications) {
……………………………………………………………..…………………………………………………………………………….……
…..
……………………………………………………………..……………………………………………………………………….…………
…..
……………………………………………………………..………………………………………………………………………………..
……………………………………………………………..…………………………………………………………………………………
…..
……………………………………………………………..…………………………………………………………………………………
…..
……………………………………………………………..…………………………………………………………………………………
…..
……………………………………………………………..……………………………………………………………………………..
……………………………………………………………..……………………………………………………………..…………………
….. }
public void ajouterPublication(Publication nouvellePublication) {
……………………………………………………………..……………………………………………………………………………..
…..
……………………………………………………………..………………………………………………………………………..……
…..
……………………………………………………………..…………………………………………………………………………..
……………………………………………………………..…………………………………………………………………..…………
…..
……………………………………………………………..………………………………………………………………………………
….. }
public void ajouterArticleJournal(String journal, int volume, int nombre, int doi, String
titre, LocalDate année, Chercheur auteur, Map<Integer, Publication> citations) {
……………………………………………………………..………………………………………………………………………………
…….
……………………………………………………………..…………………………………………………………………………….…
……
……………………………………………………………..…………………………………………………………………………………
….
……………………………………………………………..…………………………………………………………………………….…
…..
……………………………………………………………..…………………………………………………………………………………
…. }
//donner le code de cette méthode en utilisant les streams
public void ajouterArticleConference(String conference,String ville, String pays, int doi,
String titre, LocalDate année, Chercheur auteur, Map<Integer, Publication> citations){
Page 4 sur 5
…………………………………………………………..…………………………………………………………………………………..
…
…..
……………………………………………………………..……………………………………………………………………..……………
…..
……………………………………………………………..…………………………………………………………….……………………
….. }
public int nombrePublications()
{……………………………………………………………………………………….. ;} private int
nombreCitations() {
……………………………………………………………..……………………………………………………………………………………
…..
……………………………………………………………..…………………………………………………………………………..………
……
………………………………………………..………………………………………………………………………………………………..
…..
……………………………………………………………..………………………………………..……………….…………………………
…..
……………………………………………………………..……………………………………………………………………………………
….. }
public int nombreArticlesJournaux() {
……………………………………………………………..……………………………………………………………………………………
..
……………………………………………………………..…………………………………………………………………………..………
……
………………………………………………..………………………………………………………………………………………………..
…..
……………………………………………………………..……………………………………………………………………………………
..
……………………………………………………………..…………………………………………………….……………………………
…..
……………………………………………………………..……………………………………………….…………………………………
…..
……………………………………………………………..……………………………………………..……………………………………
….. }
public int nombreArticlesConferences() {// fournie}
/ * retourne le nom du chercheur, le nombre de publications, le nombre total de citations,
le h-index, le nombre d’article journaux et le nombre d’articles conférences */@Override
public String toString() {
……………………………………………………………..…………………………………………………………………………
.. ;
……………………………………………………………..…………………………………………………………………………
.. ;
……………………………………………………………..…………………………………………………………………………
.. ;
……………………………………………………………..…………………………………………………………………………
.. ;
……………………………………………………………..…………………………………………………………………………
.. ;
……………………………………………………………..…………………………………………………………………………
.. ; }
ublic int calculerHindex() {
p
……………………………………………………………..………………………………………………………………………………
.. ;
……………………………………………………………..………………………………………………………………………….. ;
……………………………………………………………..………………………………………………………………………….. ;
……………………………………………………………..………………………………………………………………………….. ;
……………………………………………………………..………………………………………………………………………….. ;
……………………………………………………………..………………………………………………………………………….. ;
……………………………………………………………..………………………………………………………………………….. ;
……………………………………………………………..………………………………………………………………………….. ;
……………………………………………………………..………………………………………………………………………….. ;
……………………………………………………………..………………………………………………………………………….. ;
……………………………………………………………..………………………………………………………………………….. ;
……………………………………………………………..………………………………………………………………………….. ;
}
}
Page 5 sur 5