Vous êtes sur la page 1sur 21

Rapport

Cration dune Agenda Numrique


en JAVA

Ralis Par :

Imane MSADFA
Abdelkawi MOURADI
Jamal ALAIBI
Elhaj Aissa DIOP

Encadr Par :
Mr : Said El KAFHALI

Table des matires


Prsentation de lapplication ..........................................................................3
1. Description de lappliaction ............................................................................................. 3
2. Schma UML de lapplication ........................................................................................... 4

Partie I Realisation des Classes ........................................................................5


1. Spcification des diffrentes Classe de lapplication..5
1.1 La Classe Date5
1.2 La Classe Tranchehoraire..7
1.3 La Classe Activite.8
1.4 La Classe Cours.9
1.5 La Classe Reunion...10
1.6 La Classe Agenda..13
1.7 La Classe AgendaExeception......15

Partie II Instanciation des Classes.16


1. Test des diffrents Classes .16
2. La Classe ExecuteAgenda.16

Partie III Interface Graphique de lapplication.18


Code de linterface graphique....18

Prsentation de Projet
1. Description de lapplication

Lapplication raliser est un agenda lectronique simplifi.


Cet agenda stocke un certain nombre dactivits qui sont caractrises par un but
(reprsent laide dune chaine de caractres) et une tranche horaire prvue pour la
ralisation de celles-ci.
Une sparation des activits laide dun lien hritage prvues sont les cours et les
runions.
Ce sont deux cas particuliers dactivits qui doivent pouvoir tre stockes dans notre
agenda.
Un cours est caractris par un lieu, un professeur et une matire enseigne. Ces trois
attributs sont mmoriss dans des chanes de caractres. Une runion est caractrise
par un lieu, un initiateur de la runion et une liste de participants la runion. Les
deux premiers attributs sont mmoriss dans des chanes de caractres.
Pour la liste des participants, il est demand dutiliser une structure de donnes Java,
la classe Vector (packagejava.util).
La dfinition dune tranche horaire se fait par la dtermination dune date de dbut et
une date de fin. La dure dune tranche horaire est calcule automatiquement. La
date reprsente dans le systme tient compte du jour (anne, mois et jour dans le
mois) et de lheure (heure et minute).Certains choix dimplmentation induisent un
certain nombre de contraintes :
Une tranche horaire ne peut exister quau sein de la mme journe (une
tranche ne pas dbuter un jour et se terminer le lendemain).
La date de dbut dune tranche est ncessairement infrieure sa date de fin.
Lagenda ne peut stocker deux activits dont les tranches horaires se
chevauchent etc

2. Schma UML de lapplication


Notre Application aura le diagramme suivant :

Le Travail de cette application sera ralis au sein de la classe ExecuteAgenda.java.

Partie I

Ralisation des Classes

Cette partie abordera la ralisation des diffrentes classes Java permettant limplmentation
de la description prcdente.

1. Spcification des diffrentes Classe de Lapplication


Ces spcifications montrent les constructeurs et les mthodes des classes.
Ces spcification ne sont pas compilables, elles constituent seulement une vue documentaire en
indiquant la signature des mthodes ainsi que les attributs.

1.1 La Classe Date


Le diagramme de cette classe est le suivant :

o Attribut de Classe :
Comme dj spcifier dans la description de lapplication la classe Date va reprsenter le
(jour, mois, anne) et (heurs, minute) de lactivit.
Donc cette classe va contenir les attributs suivant :

Heurs ; minute ; jour ; mois ; anne : ces attributs seront stock dans des variables de
type Entier.

o Mthodes de Classe :

Comme dj signaler dans la reprsentation de lapplication cette dernire doit respecter


certain contrainte :
1. Une activit ne peut exister avec une date de dbut suprieur la date de fin.
2. Une tranche ne peut pas se dbuter un jour et se terminer le lendemain.
3. Deux activits ne peuvent pas avoir lieu au mme temps.
Pour cela on va implmenter les mthodes sur la classe Date qui vont permettre de tester la
validit avant dajouter une activit.

Boolean avant (Date d)


// retourne vrai si la Date pass en paramtre avant la
date appelante
Boolean apres (Date d)
// retourne vrai si la Date pass en paramtre aprs la
date appelante
Boolean identique (Date d) // retourne vrai si la Date pass en paramtre est identique
la Date appelante.
Boolean memejour (Date d) // retourne vrai si La Date pass en paramtre est dans
Le mme avec la Date appelante.
String to String //retourne une chaine de caractre dcrivant la classe Date
Les accesseurs des diffrents attributs // permettent daccder et appeler les
attributs de la classe Date
o Corps de La Classe Date

La classe Date va avoir la spcification suivante :

1.2 L a Classe TrancheHoraire

La classe TrancheHoraire cest la classe qui va dfinir pour chaque activit stock la
tranche horaire de sa ralisation.

o Attribut De Classe :

Cette classe va contenir les attributs suivant :

Deux instances de lObjet Date : Date Dbut et Date Fin qui vont limiter la tranche horaire
de chaque activit.
Une Dure stock dans une Variable de type entier ; cette dure va tre calcul
automatiquement

o Mthodes de Classe :

Cette classe va contenir les mthodes suivantes :

Une mthode qui veillera a respect lordre des dates cest dire
dateDebut < dateFin
Une mthode toString( ) retourne une chaine de caractre dcrivant la classe .
Une mthode boolean chevauche (TrancheHoraire th) retourne vrai si la tranche
horaire pass en paramtre est identique a la tranche horaire appelante de la fonction.

o Corps de la Classe Tranchehoraire

1.3

L a Classe Activite

Comme spcifier dans UML de lapplication , la classe Activite est une classe mre de deux
classes filles reprsentant deux cas particuliers des activits Cours , Reunion
Chaque activit quelque soit sa nature est caractris par un
but et une tranche horaire
Cette classe aura le diagramme suivant :

o Attribut de classe
Cette classe va contenir les attributs suivants :
but : stock dans une chaine de caractre
Tranchehoraire : Un objet de la classe tranchehoraire indiquant la tranche
horaire de chaque activit.

o Mthodes de Classe
Cette classe va contenir les mthodes suivantes :
Une Mthode toString //retournant une description sur lactivit
Des accesseurs pour tranchehoraire et le but.
o Corps de la Classe
La classe Activite sera sous la forme suivante

1.4

La classe Cours :

Un cours est caractris par un lieu, un professeur, et une matire enseigne. Cest un cas
particulier dactivit, donc Cours est une fille de la classe Activite, elle va en plus hriter ses
mthodes et ses attributs.

o Attributs de Classe
Attributs hrits
: Tranchehorraire, but.
Attribut propre la classe : lieu, professeur, matiere
Ces trois attributs seront mmoriss dans des String.
o Mthodes de Classe
Cette classe va contenir les mthodes suivantes :
Les accesseurs qui permettent daccder aux diffrents attributs de la classe.
Une mthode String to String permet de raliser laffichage de la classe.

10

o Corps de la Classe

1.5 La classe Reunion:


Une Runion est caractrise par un lieu, un initiateur, de runion et une liste de participants
la runion.
Cest un cas particulier dactivit, donc Reunion est une fille de la classe Activite, elle va en
plus hriter ses mthodes et ses attributs.

11

o Attributs de Classe
Attributs hrits :
o Tranchehorraire
o but
Attribut propre la classe :
o lieu, un initiateur : mmoriss dans des String
o participants : mmoris dans une structure de donne de type
Vector (package java.util)
o Mthodes de Classe
Cette classe va contenir les mthodes suivant :
Les accesseurs des attributs.
Une Mthode AjouterParticipant qui va nous permettre dajouter un participant
la structure de donne Vector
Une mthode to String qui va retourner une description sur la classe
o Corps de la Classe :
La Classe aura le corps suivant

12

1.6 La Classe Agenda


La classe Agenda va contenir les activits, donc on va implmenter une classe capable
dajouter les Objets Activite (toute en respectant les contraintes) , de lafficher ou de les
supprimer.
La description de cette classe est reprise dans le diagramme ci-dessous :

13

o Attributs de Classe

Contenu : //sous forme dune structure de donnes de type Hashtable, dans laquelle
on va stocker les activits mapp avec leurs Date.

o Mthodes de Classe
Cette classe va contenir les mthodes suivantes :

Une mthode ajouteActivite () //permet dajouter une activit respectant les


//contraintes dans lagenda.

Une mthode supprimeActivite () //permet de supprimer une Activit.


Une mthode afficheContenu () //permet dafficher le contenu de lagenda

o Corps de La classe
La classa Agenda sera donc de la forme suivante :

14

1.7 La Classe AgendaExeception :


Dans la classe TrancheHoraire on a implment une mthode qui permet de vrifier si la
tranche horaire de lactivit entrer respecte les critres si ce nest pas le cas une
exception sera lanc, donc il faut dfinir la classe AgendaExeception qui hrite de la
classe Exeception
o Corps de la classe

15

Partie 2 : Instanciation des Classes


Dans cette partie on va tester les diffrentes classes de lapplication.
Le travail a t test dans la classe ExecuteAgenda.java, cette classe ne comprend que deux
mthodes :
La mthode main : cette mthode est ncessaire au lancement dune classe excutable. Son
unique rle est dappeler le constructeur.
Le constructeur de la classe (public ExecutionAgenda() throws AgendaException)

o Test des diffrents classes :


public class ExecuteAgenda
{
//----------------------------------------------------------------private Agenda agenda;
//-----------------------------------------------------------------public ExecuteAgenda() throws AgendaException
{
// Instantiation de l'agenda
agenda = new Agenda();
// Instantiation des activits
Activite a = new Activite("DS d'analyse",new TrancheHoraire(new
Date(18,0,8,10,2002),new Date(19,0,8,10,2002)));
Cours c = new Cours("GRT", new TrancheHoraire(new Date(9,40,7,10,2014), new
Date(12,40,7,10,2014)),"Salle B2","M.KAFIDI"," Java");
Reunion r=new Reunion("Conseil des tudiants",new TrancheHoraire(new
Date(9,30,8,10,2002),new Date(11,30,8,10,2002)),"ENSA","Mouhamed");
r.ajouterParticipant("ehad");
// Insertion des activits dans l'agenda
agenda.ajouteActivite(a);
agenda.ajouteActivite(c);
agenda.ajouteActivite(r);
// Affichage de l'agenda
agenda.afficheContenu();
agenda.supprimeActivite(a);
agenda.afficheContenu();
} //----------------------------------------------------------public static void main(String[] args)

16

{
try
{
ExecuteAgenda executeAgenda1 = new ExecuteAgenda();
}
catch(AgendaException ae)
{
ae.printStackTrace();
}
}
//-----------------------------------------------------------------}

Notre Programme fonctionne trs Bien :

17

Partie 3 Interface Graphique de lapplication


Dans cette partie on va donner notre programme un affichage graphique permettant
dafficher les diffrents boutons grant cette application.
1. Code de limplmentation de cette interface :
import javax.swing.*;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.*;
import java.awt.*;
public class GraphiqueAgenda extends JFrame implements ActionListener{
private Agenda agenda;
JButton b1,b2, b3,b4,b5,b6;
JButton jrb1,jrb2,jrb3;
JPanel p1,p2,p3;
JLabel lab1;
public GraphiqueAgenda() {
agenda=new Agenda();
//Cration de la fenetre
setTitle("Agenda Electronique");
setSize(600, 200);
//Cration des panneaux
p1 =new JPanel();
p1.setLayout(new FlowLayout());
add(p1,BorderLayout.NORTH);//ajout du panneau p1 en haut de la fenetre
p2 =new JPanel();
p2.setLayout(new FlowLayout());
add(p2,BorderLayout.SOUTH);//ajout du panneau p2 en bas de la fenetre
p3 =new JPanel();
p3.setLayout(new FlowLayout());
add(p3,BorderLayout.WEST);
ButtonGroup gr = new ButtonGroup();
//Cration des bouttons
jrb1=new JButton("Ajouter Activit");
jrb1.addActionListener(this);//Association du button a l'interface ActionListener pour effectuer
une action
gr.add(jrb1);
p1.add(jrb1);
jrb2=new JButton("Supprimer Activit");
jrb2.addActionListener(this);
gr.add(jrb2);

18

p1.add(jrb2);
b1= new JButton("Activit simple");
p2.add(b1);
b1.setVisible(false);
this.setVisible(true);//Montrer la fenetre
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==jrb1){
//Montrer ces bouttons
b1.setVisible(true);
b2.setVisible(true);
b3.setVisible(true);
//Masquer ces boutons
b4.setVisible(false);
b5.setVisible(false);
b6.setVisible(false);
}
else if(e.getSource()==jrb2){
//Montrer ces bouttons
b4.setVisible(true);
b5.setVisible(true);
b6.setVisible(true);
//Masquer ces boutons
b1.setVisible(false);
b2.setVisible(false);
b3.setVisible(false);
}
try {
//instantiation des Activits
Activite a = new Activite("DS d'analyse",new
TrancheHoraire(new Date(18,0,8,10,2002),new Date(19,0,8,10,2002)));
Cours c = new Cours("GRT", new TrancheHoraire(new
Date(9,40,7,10,2014), new Date(12,40,7,10,2014)),"Salle B2","M.KAFIDI"," Java");
Reunion r=new Reunion("Conseil des
tudiants",new
TrancheHoraire(new Date(9,30,8,10,2002),new Date(11,30,8,10,2002)),"ENSA","Mouhamed");
r.ajouterParticipant("ehad");
//association des bouttons avec les actions correspondantes
if (e.getSource()==b1){
agenda.ajouteActivite(a);
agenda.afficheContenu();

19

}
else if (e.getSource()==b2){
agenda.ajouteActivite(c);
agenda.afficheContenu();
}
else if (e.getSource()==b3){
agenda.ajouteActivite(r);
agenda.afficheContenu();
}
else if (e.getSource()==b4){
agenda.supprimeActivite(a);
System.out.println("Activite supprimm");
}
else if (e.getSource()==b5){
agenda.supprimeActivite(c);
System.out.println("Cour supprimm");
}
else if (e.getSource()==b6){
agenda.supprimeActivite(r);
System.out.println("Reunion supprimm");
}
} catch (AgendaException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

public static void main(String[] args) {


new GraphiqueAgenda();

}
}

20

Linterface graphique de notre application sera comme suit :

21

Vous aimerez peut-être aussi