begin process at 2012 02 11 20:04:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Divers

 > 

probleme heritage (objet)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

probleme heritage (objet)

vendredi 8 février 2008 à 17:11:16 | probleme heritage (objet)

djmanu78

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 personnes

staticint nbtot;

// attributs d'instance : prénom, nom, âge

privatestring prenom;

privatestring nom;

privateint age;

// constructeurs

public personne(string N, string P, int age)

{

// une personne de plus

nbtot =nbtot + 1;

// construction

prenom = P;

nom = N;

this.age = age;

// suivi

Console.WriteLine("Construction personne");

}

// méthode de classe : get_nbpersonne

publicstaticint get_nbpersonne() { return nbtot;}

// méthodes d'instance : get_nom, get_prenom, get_age, set_age, affiche

publicstring 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é"};

// attributs

privatestring 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

{

// attributs

protectedstring nom;

protected ArrayList Tpers;

// constructeur

public 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 , ajouter

publicvoid 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) personne

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

else

return -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
mardi 12 février 2008 à 01:36:25 | Re : probleme heritage (objet)

nickydaquick

Membre Club
Salut,

poste ton code sur le forum JAVA , ca devrait deja t'aider
conseil : tu veux faire de l'heritage avec le mot cle virtual ==> En java par defaut toutes les methodes sont VIRTUAL , so le mot cle virtual n'est pas necessaire ici (ni meme d'ailleurs le mot cle override) juste a redefinir la meme fonction et c'est correct.

je suis heureux de faire partie d'une grande famille ...!


Cette discussion est classée dans : int, age, console, get, prenom


Répondre à ce message

Sujets en rapport avec ce message

Erreur conversion from `Sportif*' to non-scalar type `Sportif' requested [ par lordskyser1 ] Bonjour,je débute en C++ et je tente de compiler ma première classe sans y arriver, car je n'arrive pas à comprendre le message d'erreur de dev c++.he un pti prob ... :s help [ par meksoft002 ] Bonjour, c'est ma première participation en vue que vous pourrez resoudre mon problème ..voila...je vouderais mettre en oeuvre un tableau d'objets "pe je debute : probleme [ par ace89 ] Alors voila je debute en c++je lit beaucoup de tuto mais la j'ai un probleme qui me prend la tete.J'utilise dev c++la j'ai mon code#include using name Calcul des combinaisons des chaines de caracteres [ par boualiasma ] Bonsoir, J'ai un fichier texte "exemple.txt" qui contient dans chaque une seule chaine de caractère(attribut). On sait en avance le nombre d'attribut Problèmes de pointeur pour un tableau de structure [ par fantaorange ] Bonjour à tous,Me voilà débutant en C, et je galère un peu avec les pointeurs pour un tableau de structure...Je me suis fixé un petit exercice qui con Tableau de caractères, problème de récupération de valeurs [ par Arkael ] Bonjour à tous.J'ai un souci actuellement sur un de mes programmes professionels. Je vous expose le maximum d'information en esperant qu'un dieu du C/ Probleme de preprocesseur [ par alphaone ] Bonjour, j'ai un fichier d'en tête .h inclut partout ou il y as:#ifndef INCLUDE_ENV_H#define INCLUDE_ENV_H//debug level, 0: no debug, 10 critical and tableau dans une fonction [ par meksoft002 ] salut, je vouderais mettre la dimension d'un tableau a partir d'une fonction mais..l'éxecution ne se termine pas quand je la lance void creer(Personn comparer deux fichiers [ par boualiasma ] Bonjour, J'ai deux fichiers "exemple.txt" et "essai.txt" J'aime afficher les lignes qui existent dans "exemple.txt" et qui n'existent pas dans "essai reservation de la memoire [ par khalid_trunks ] salut ts le monde.je debute en c++,j'ai fais une petite simple application( gestion d'appelles)....je sais po grand chose en c++.ben j'ai fais mon pro


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales