Gestion factures achats/ventes – Implémentation Java : constructeurs et méthodes pour Article & LigneFacture

Page 1 sur 6Lecteur de document UniversityLib

Gestion factures achats/ventes – Implémentation Java : constructeurs et méthodes pour Article & LigneFacture

Programming, Math, etc. · exam

Voir tous les documents en programmation

ECOLE SUPÉRIEURE D’ECONOMIE NUMÉRIQUE, UNIVERSITÉ DE MANOUBA EXAMEN : SESSION PRINCIPALE

Module

Prog. orientée objet

Enseignant

Chiheb-Eddine Ben N’Cir

Date

Durée

Janvier 2017

2h

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. private static int numArt // il peut ajouter =0 private Strring libelle

Déclaré les attributs (visibilité privée) de la classe Article.

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 ; }

Donner le code source de la méthode SaisirArticle() permettant de donner la main à l’utilisateur

3. pour saisir les informations relatives à un article. public void SaisirArticle (){

Scanner Sc=new Scanner(System,in) ; S.O.P(‘Donner le libellé de l’article’) ; libelle=sc,nextline() ;

}

Classe LigneFacture :

Donner le code source du constructeur de la classe LigneFacture qui permet de créer un objet

4. “LigneFacture” dont la valeur de ses attributs sont passées en paramètre. correctement la déclaration de l’article dans les paramètres

(Donner 0 s’il ne fait pas

public LigneFacture (Article article, double prix, int qte ){

this,article=article ; this,prix=prix ; this,qte=qte

Publicité

}

Donner le code source de la méthode AfficherLigFacture() permettant d’afficher les informations

5. relatives à une ligne facture. (donner 0 s’il ne fait pas appel à la méthode afficherarticle() )

public void AfficherLigFacture (){

article,AfficherArticle() ; S.O.P(‘le prix est ‘+prix) ; S.O.P(‘la quantité est ‘+qte) ;

}

6.

Donner le code source des accesseurs (get et set) des attributs de la classe LigneFactures

public void setQte( int qte){

this.qte=qte ;

} public void getQte(){

return qte ;

}

public void setArticle (Article article){this.article=article;} public void getArticle(){return article} meme chose pour prix

Classe Facture, Facture Vente, Facture Achat :

7.

Donner la déclaration de la classe abstraite Facture qui implémente l’interface OperationFacture.

Public abstract Facture implements OperationFacture

Est ce qu’on peut créer un constructeur à la classe abstraite Facture permettant d’initialiser les

8. 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,

Donner

9. informations relatives à une Facture. (Donner 0 s’il ne fait appel aux methodes afficherdatedate() et s’il ne fait pas correctement l’affiche des lignes factures)

le code source de la méthode AfficherFacture( ) permettant d’afficher les

Publicité

public void AfficherFacture (){ S.O.P(‘Le numéro de la facture est ‘+numFact) ; date,AfficherDate() ; for(i=0 ; i<ligneFact.length;i++) {ligneFact[i].AfficherLigFacture() ; } }

Donner

10. informations relatives à une Facture vente. (la note est divisée entre l’exactitude de la redéfinition et l’appel de la méthode afficherDetailclient())

le code source de la méthode AfficherFacture( ) permettant d’afficher les

public void AfficherFacture (){ super.AfficherFacture() ;

client.AfficherDetailclient()

}

Donner le code source de la méthode TotalFacture( ) permettant de retourner le montant total

11. de la facture. (la somme des prix * qte pour toute les lignes. (Donner 0 s’il ne fait pas appel aux methodes getprix() et getQte() ) Considerer juste s’il fait la somme des prix avec getprix() sans utiliser qte,

public Double TotalFacture (){

double Total=0 ; for(i=0 ; i<ligneFact.length;i++) {Total= Total+ (ligneFact[i].getPrix()*ligneFact[i].getQte() ) ; } return (Total) ;

}

Classe GestionFacture (contenant la méthode main) On suppose que nous avons une classe « GestionFacture » qui contient une méthode main().

En se basant sur le principe du Polymorphisme, donner le code source de la méthode main () qui permet :

12.

1- Déclarer un tableau « FACT » qui peut contenir 10 Factures (achats et ventes).

2- Pour chaque facture dans le tableau « FACT » :

2.1) demander à l’utilisateur s’il veut ajouter une facture vente ou achat

2.2) selon le choix de l’utilisateur : créer une nouvelle facture vide. 2.3) Saisir les informations relatives à la facture Vente ou Achat.

3- Pour chaque facture dans le tableau « FACT » afficher le nombre de lignes de chaque facture. 4- Afficher le nombre total de facture sans boucler sur les factures une par une.

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

public static void main()(String[] args){ Scanner M=new Scanner(System.in) ; int user ; Facture FACT[]= new Facture[10] ; (1point)

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() }

Publicité

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,

1) public class Calculator { int num = 100; public void calc(int num) { this.num = num * 10; } public void printNum(){ System.out.println(num); } Public static void main(String[] args) { Calculator obj = new Calculator (); obj.calc(2); obj.printNum(); } }

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

Quelle(s) est (sont) la (les) déclaration(s) juste(s) a) class F implements B,C{ } b) class F implements B{ } c) class F extends A,E{ } d) class F extends E{ } e) class F implements B,D{ }

// reponse correcte b, d, e

3) le langage Java est un langage :

a) Interprété b) compilé c) compilé et interprété

d) nécessite une machine virtuelle Java e) nécessite seulement netbeans pour s’exécuter

// reponse correcte c, d

4) 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); obj3=obj1; System.out.print(obj1.m); System.out.print(obj3.m); System.out.print(obj2.m); } }

4.1) Le programme affiche: a) 101010 b)10510 c) 5510 d) 10105

// réponse correcte a

4.2) a) if (obj1==obj2) retourne “Vrai” b) if (obj1==obj2) retourne “Faux” c) obj1.equals(obj3) retourne “vrai” d) obj1.equals(obj3) retourne “faux” e) obj1.equals(obj2) retourne “vrai”

// réponse correcte b,c,e

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