Académique Documents
Professionnel Documents
Culture Documents
UNIVERSITÉ DE MANOUBA
EXAMEN : SESSION PRINCIPALE
Exercice 1 : (15pts)
On propose de construire une petite application pour la gestion des factures achats et des factures ventes pour
une petite société commerciale. Soit la conception objet suivante d’une partie de l’application. Répondre aux
questions ci-dessous en utilisant le langage JAVA sachant que la visibilité de tous les attributs est privée.
Remarque: vous pouvez utiliser n’importe quelle méthode affichée dans ce diagramme sans donner son
code source (supposer que la méthode est déjà définie).
Classe Article :
1. Déclaré les attributs (visibilité privée) de la classe Article.
private static int numArt // il peut ajouter =0
private Strring libelle
2. Donner le code source du constructeur Article (String libelle) sachant que le numéro article doit être
géré en séquentiel lors de la création. (Libellé est la désignation de l’article)
public article (String libelle){
numArt=NumArt+1 ;
this,libelle=libelle ;
}
Classe LigneFacture :
4. Donner le code source du constructeur de la classe LigneFacture qui permet de créer un objet
“LigneFacture” dont la valeur de ses attributs sont passées en paramètre. (Donner 0 s’il ne fait pas
correctement la déclaration de l’article dans les paramètres
}
6. Donner le code source des accesseurs (get et set) des attributs de la classe LigneFactures
8. Est ce qu’on peut créer un constructeur à la classe abstraite Facture permettant d’initialiser les
valeurs des attributs passées en paramètre ? Si oui quel est son utilité ? sinon pourquoi ?
oui on peut créer un constructeur pour la classe abstraite. on ne peut pas faire appel à ce constructeur
directement mais son utilité est de ne pas refaire le code de d’initialisation des paramètres dans les
classes qui héritent de la classe Facture,
chaque sous question est sur 1 points (total 4 points pour cette question)), s’il y a des erreurs de
syntaxe donner la moitié de la note
for(inti=0, i<FACT.length;i++)
{
SOP(’ taper 1 pour facture vente ou 2 pour Facture achat ’)
user=M.nexInt() ; //lire la valeur donner par l’utilisateur 1point
if(user==1) { FACT[i]=new FactureVente() ; }
else if (user==2) { FACT[i]=new FactureAchat() ; }
else SOP(‘Erreur’) ;
FACT[i].saisirFacture()
}
for(inti=0 ; i<FACT.length;i++)
{
int nbligne=FACT[i].getLigneFact().length ; 1 point //il faut utiliser méthode get de l’attribut
ligneFact sinon c’est faux)
SOP(‘ le nombre de ligne de la facture’+i + ‘est ‘ + nbligne) ;
}
SOP (‘le nombre total de facture est’ +getnumFact() ) ; 1 point //il faut utiliser méthode get de
l’attribut statique numFact sinon c’est faux)
}
Exercice 2 (5pts) : Donner la(s) bonne(s) réponse(s). Pour chaque question donner le numéro de la
question et les lettres correspondant aux bonnes réponses. // chaque question est sur 1 point sauf
question 4 il y a deux sous question sur 0,5 chacun. S’il y plusieurs réponses justes, l’etudiant peut
donner des réponse manquantes on donne la moitié de la note, s’il a une réponse juste avec des
réponses non correctes considérer 0 pour cette question,
Le résultat est :
a) 20 b) 100 c) 1000 d) 2 // reponse correcte a
2) Etant donnée :
- A et E sont des classes
- B et D sont des interfaces
- C est une classe abstraite
5) public class C1 {
public int m ;
public c1 (int m) {
this.m = m; }
public static void main(String[] args) {
C1 obj1 = new C1 (10);
C1 obj2= new C1(10) ; C1 obj3=new C1(5); obj1=obj3;
System.out.print(obj1.m); System.out.print(obj3.m); System.out.print(obj2.m); } }
Le programme affiche:
a) 101010 b)10510 c) 5510 d) 10105
// reponse correcte c