[amélioration] Critique de mon programme
Bonjour
J'ai fait un petit programme et j'aimerai avoir vos avis et vos critiques sur ce qui est bien et sur ce qui pourrait être amélioré vu que je suis débutant :aie:
Voici les codes sources :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| import java.util.ArrayList;
import java.util.*;
public class Classe {
private ArrayList<Eleve> tab = null;
public Classe() {
tab = new ArrayList<Eleve>();
}
public void addEleve(Eleve eleve) {
// Vérifier que l'élève n'existe pas déjà
Boolean test = false;
for(int i = 0; i < tab.size() && test == false; ++i) {
if((tab.get(i)).compare(eleve) == true) {
test = true;
}
}
if(!test) {
tab.add(eleve);
}
}
public void delEleve(Eleve eleve) {
// Vérifier que l'élève existe
Boolean trouver = false;
for(int i = 0; i < tab.size() && trouver == false; ++i) {
if((tab.get(i)).compare(eleve) == true) {
trouver = true;
tab.remove(i);
}
}
}
public void delEleve(int emplacement) {
tab.remove(emplacement);
}
// Trouver un eleve
public int findEleve(Eleve eleve) {
Boolean trouver = false;
for(int i = 0; i < tab.size() && trouver == false; ++i) {
if((tab.get(i)).compare(eleve) == true) {
trouver = true;
return i;
}
}
return -1;
}
public Eleve getEleve(int i) {
return tab.get(i);
}
public int getNbEleve() {
if(tab == null)
return 0;
else
return tab.size();
}
public void sortList() {
Collections.sort(tab);
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| import java.io.*;
public class EcrireObjet {
private String nomFichier = "";
private ObjectOutputStream ecriture = null;
public EcrireObjet(String nom) {
setNomFichier(nom);
try {
ecriture = new ObjectOutputStream(new FileOutputStream(nom));
}
catch(FileNotFoundException e) {
System.out.println("Fichier introuvable");
System.exit(1);
}
catch(IOException e) {
System.out.println("Erreur d'E/S");
System.exit(1);
}
}
public void write(Eleve Objet) {
try {
ecriture.writeObject(Objet);
}
catch(IOException e) {
System.out.println("Erreur d'E/S");
System.exit(1);
}
}
public void close() {
if(ecriture != null) {
try {
ecriture.flush();
ecriture.close();
}
catch(IOException e) {
System.out.println("Erreur d'E/S");
System.exit(1);
}
}
}
public String getNomFichier() {
return this.nomFichier;
}
public void setNomFichier(String nomFichier) {
this.nomFichier = nomFichier;
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| import java.util.ArrayList;
import java.io.Serializable;
import java.util.*;
public class Eleve implements Serializable, Comparable {
private String nom = "";
private String prenom = "";
ArrayList<Double> note = new ArrayList<Double>();
double moyenne = -1;
public Eleve(String nom, String prenom) {
setNom(nom);
setPrenom(prenom);
}
public Eleve(String nom, String prenom, double note[]) {
setNom(nom);
setPrenom(prenom);
for(int i = 0; i < note.length; ++i) {
addNote(note[i]);
}
}
public void calculMoyenne() {
if(note.size() > 0) {
double somme = 0;
for(int i = 0; i < note.size(); ++i) {
somme += note.get(i);
}
this.moyenne = (somme / note.size());
}
}
public Boolean compare(Eleve eleve) {
if(this.nom.equals(eleve.getNom()) && this.prenom.equals(eleve.getPrenom()))
return true;
else
return false;
}
public int compareTo(Object eleve) {
String nomEleve1 = nom + prenom;
String nomEleve2 = ((Eleve)eleve).getNom() + ((Eleve)eleve).getPrenom();
int comparaison = nomEleve1.compareTo(nomEleve2);
if(comparaison > 0)
return 1;
else if(comparaison == 0)
return 0;
else
return -1;
}
public String getNom() {
return nom;
}
public String getPrenom() {
return prenom;
}
public double getMoyenne() {
return moyenne;
}
public ArrayList<Double> getNote() {
return note;
}
public void setNom(String nom) {
this.nom = nom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public void setMoyenne(double moyenne) {
this.moyenne = moyenne;
}
public void addNote(double note) {
this.note.add(note);
}
public String toString() {
calculMoyenne();
String str = nom + " " + prenom;
if(moyenne > -1) {
str += " |" + String.valueOf(((double)(int)(moyenne*100))/100);
str += "| ";
}
else {
str += " ";
}
for(int i = 0; i < note.size(); ++i) {
str += String.valueOf(note.get(i)) + " ";
}
return str;
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| import java.io.*;
public class LireObjet {
private String nomFichier = "";
private ObjectInputStream lecture = null;
public LireObjet(String nom) {
setNomFichier(nom);
try {
lecture = new ObjectInputStream(new FileInputStream(nomFichier));
}
catch(IOException e) {
System.out.println("Erreur d'E/S");
System.exit(1);
}
}
public void close() {
try {
lecture.close();
}
catch(IOException e) {
System.out.println("Erreur d'E/S");
System.exit(1);
}
}
public Eleve getObjet() {
Eleve personne = null;
try {
personne = (Eleve)lecture.readObject();
}
catch(EOFException e) {
return null;
}
catch(IOException e) {
System.out.println("Erreur d'E/S");
System.exit(1);
}
catch(ClassNotFoundException e) {
System.out.println("Objet inconnu");
System.exit(1);
}
return personne;
}
public void setNomFichier(String nomFichier) {
this.nomFichier = nomFichier;
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
| import java.io.*;
import java.util.*;
public class zEcole {
public static void main(String[] args) {
LireObjet source = null;
EcrireObjet cible = null;
// Teste si le fichier existe
// S'il n'existe pas on le crée
try {
if(!new File(args[0]).exists()) {
cible = new EcrireObjet(args[0]);
cible.close();
cible = null;
}
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Nombre d'argument incorrect");
help();
}
//Chargement du fichier
try {
source = new LireObjet(args[0]);
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Nombre d'argument incorrect");
help();
System.exit(1);
}
// Charger les objets dans le tableau de la classe
Classe classe = new Classe();
Eleve eleve = null;
while((eleve = source.getObjet()) != null) {
classe.addEleve(eleve);
}
// On ferme le fichier
source.close();
String option = "";
try {
option = args[1];
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Nombre d'arguments incorrect");
help();
}
if(option.equals("-l")) {
classe.sortList();
for(int i = 0; i < classe.getNbEleve(); ++i) {
System.out.println(classe.getEleve(i));
}
}
else if(option.equals("-a")) {
eleve = null;
try {
eleve = new Eleve(args[2], args[3]);
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Nombre d'arguments incorrect");
help();
}
classe.addEleve(eleve);
}
else if(option.equals("-d")) {
eleve = null;
try {
eleve = new Eleve(args[2], args[3]);
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Nombre d'arguments incorrect");
help();
}
classe.delEleve(eleve);
}
else if(option.equals("-n")) {
int nbArgument = args.length - 4;
if(nbArgument <= 0) {
help();
}
eleve = null;
try {
eleve = new Eleve(args[2], args[3]);
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Nombre d'arguments incorrect");
help();
}
int retour = classe.findEleve(eleve);
if(retour == -1) {
for(int i = 4; i < args.length; ++i) {
eleve.addNote(Double.valueOf(args[i]));
}
classe.addEleve(eleve);
eleve = null;
}
else {
eleve = classe.getEleve(retour);
for(int i = 4; i < args.length; ++i) {
eleve.addNote(Double.valueOf(args[i]));
}
classe.delEleve(retour);
classe.addEleve(eleve);
eleve = null;
}
}
else {
help();
}
cible = new EcrireObjet(args[0]);
// On écrit l'intégralité de la classe
for(int i = 0; i < classe.getNbEleve(); ++i) {
cible.write(classe.getEleve(i));
}
//On ferme le fichier
cible.close();
}
// On défini l'aide du programme
public static void help() {
System.out.println("Usage : zEcole file <option>");
System.out.println(" <option> :");
System.out.println(" -a nom prénom : Ajoute un élève\n"
+ " -d nom prénom : Supprime un élève\n"
+ " -l : Liste les élèves\n"
+ " -n nom prénom note note ... : Ajoute des notes");
System.exit(0);
}
} |
Voilà :D