bonjour tout le monde,
j'ai quelques difficultées à trouver la solution à mon problème.
je m'explique :
j'ai creer une classe macollec qui regroupe dans une arraylist des personnes.
j'ai donc une classe personne , ainsi qu'une classe enseignant qui heritage de la classe personne.
Voici mon probleme :
Lorsque je souhaite creer une methode d'ajout de personne et/ou de enseignant celle ci doit etre appeler par ne methode de saisie dans personne, or je ne vois pas comment creer cette methode (celle de la classe macollec)..
je ne sais pas trop si mon explication est clair..
je vous laisse donc mon code ci dessous :
public
class personne{
// 1 attribut de classe : nombre total de personnesstaticint nbtot;// attributs d'instance : prénom, nom, âgeprivatestring prenom;privatestring nom;privateint age;// constructeurspublic personne(string N, string P, int age){
// une personne de plusnbtot =nbtot + 1;
// constructionprenom = P;
nom = N;
this.age = age;// suiviConsole.WriteLine("Construction personne");
}
// méthode de classe : get_nbpersonnepublicstaticint get_nbpersonne() { return nbtot;}// méthodes d'instance : get_nom, get_prenom, get_age, set_age, affichepublicstring get_nom() { return nom;}publicstring get_prenom() { return prenom;}publicint get_age() { return age;}publicvoid set_age(int a) { age = a ;}virtualpublicvoid affiche() {
Console.WriteLine("\n nom : "+
this.get_nom() +"\n prenom : "+this.get_prenom()+"\n age : "+this.get_age());}
virtualpublicvoid ajouter(){
Console.WriteLine("Veuillez saisir le nom : ");
nom = Console.ReadLine();
Console.WriteLine("Veuillez saisir le prenom : ");
prenom = Console.ReadLine();
Console.WriteLine("Veuillez saisir le prenom : ");
age =
int.Parse(Console.ReadLine());
}
publicoverridestring ToString(){
returnstring.Format("nom : " + nom + "\nprenom : " + prenom + "\nage : " + age);}
virtualpublicbool est_enseignant() {returnfalse;}
}
// Nous créons une classe enseignant héritant de la classe personne :
// avec comme attributs supplémentaires : la matière enseignée et le grade (certifié ou agrégé)
public
class enseignant : personne{
privatestaticstring[] Tmat={"inconnue","maths","anglais","français","éco-droit","informatique"}; privatestaticint[] Tpoint = {0,10,12,13,14,15};privatestaticstring[] Tgrad={"inconnu","certifié","agrégé"};// attributsprivatestring matiere;privatestring grade;privateint point;
publicstring get_matiere() { return matiere;}publicstring get_grade() { return grade;}publicint get_point() { return point;}publicint[] get_Tpoint() { return Tpoint;}publicvoid set_point(int p) { point = p ;}// constructeur (prenom, nom, age numero de matiere dans le tableau Tmat, numero de grade dans le tableau Tgrad)public enseignant(string N, string P, int age,int M,int G) : base( N,P,age){
matiere = Tmat[M];
grade = Tgrad[G];
point = Tpoint[M];
}
overridepublicbool est_enseignant() {returntrue;}// méthodes : affiche overridepublicvoid affiche(){
base.affiche();Console.WriteLine("\n matiere : "+matiere+"\n grade : "+grade+"\n point :"+point);
}
overridepublicvoid ajouter(){
base.ajouter();int nbmat,nbgrad,nummat,numgrad;nbmat = Tmat.Length;
nbgrad = Tgrad.Length;
for (int cpt = 0; nbmat <= cpt;cpt++){
Console.WriteLine("Saisir le N°"+cpt+" pour la matière : "+Tmat[cpt]);
}
nummat =
int.Parse(Console.ReadLine());
for (int cpt = 0; nbgrad <= cpt;cpt++){
Console.WriteLine("Saisir le N°"+cpt+" pour le grade : "+Tgrad[cpt]);
}
numgrad =
int.Parse(Console.ReadLine());
matiere = Tmat[nummat];
grade = Tgrad[numgrad];
}
class
macollec{
// attributsprotectedstring nom;protected ArrayList Tpers;// constructeurpublic macollec(string n){
nom = n;
Tpers=
new ArrayList();}
public macollec(){
nom = "";
Tpers =
new ArrayList();}
~macollec()
{
Console.WriteLine("Destruction de: " + nom);
}
public ArrayList get_Tpers() { return Tpers;}// méthodes : affiche , ajouterpublicvoid affiche(){
personne pers;
Console.WriteLine("\n"+ Tpers.Count + " personne(s) dans la collec : " + nom);
for(int i=0; i <= Tpers.Count - 1; i++ ) {
pers =(personne)Tpers[i];
pers.affiche();
}
}
publicstatic macollec operator+ (macollec m ,personne p){
m.ajouter(p);
return m;}
// recherche d'un élément du tableau (méthode privée) personneprivateint index (string nom,string prenom, int age){
int cpt=0;while (cpt < Tpers.Count - 1 && ((personne)Tpers[cpt]).get_nom()!= nom && ((personne)Tpers[cpt]).get_prenom() != prenom && ((personne)Tpers[cpt]).get_age() != age )cpt++;
if (Tpers.Count !=0 && (((personne)Tpers[cpt]).get_nom() == nom && ((personne)Tpers[cpt]).get_prenom() == prenom && ((personne)Tpers[cpt]).get_age() == age) ) return cpt;elsereturn -1;}
publicbool existe (personne pers){
return (Tpers.Contains(pers));}
publicvoid ajouter(personne p){
int num = -2;
num = index(p.get_nom(),p.get_prenom(),p.get_age());
if (num != -1){
Console.WriteLine("Personne deja existante");
}
else{
Tpers.Add(p);
}
}
publicvoid supprimer(personne p){
int num = -2;
num = index(p.get_nom(),p.get_prenom(),p.get_age());
if (num == -1){
Tpers.Remove(p);
}
else{
Console.WriteLine("Personne non existante");
}
}
publicvoid ajouter() C'EST ICI QUE CE SITUE MON PROBLEME....(je ne sais pas comment faire ){
Console.WriteLine("que voulez-vous ajouter? 1/personne , 2/enseignant , 3/ technicien");
int test;test =
int.Parse(Console.ReadLine());switch (test){
case 0 : break;case 1 :personne p ;
p.ajouter();
this.ajouter(p);
break;case 2 :enseignant e;
e.ajouter();
this.ajouter(e);
break;case 3 : technique t;
t.ajouter();
this.ajouter(t);break;}
}
publicint Compte_Enseignant(){
int z = 0;for(int i = 0; i <= Tpers.Count-1; i++){
if ( ((personne)Tpers[i]).est_enseignant()){ z++;}
}
return z;}
}
}
voila, je vous remercie de votre aide...

mman