Encapsulation + classe

Résolu
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 - 6 févr. 2006 à 09:08
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 - 6 févr. 2006 à 13:44
Bonjour a tous,



J'ai un p'tit souci au niveau de la creation d'une classe de log !
J'ai cree un projet en mode console sous vs 2003 c# et cree aussi un fichier nommé LogError avec cette methode :



private string fichier = "AccountingLogFile.txt";
public LogError()
{
}



#region Method existFile =========================================================
/// <summary>
/// Verify is the file exist
/// </summary>
/// the file s name

public void existFile(string fichier)
{
//FileInfo fi = new FileInfo(log);


if(!File.Exists(fichier)) //(!fi.Exists)
{
FileStream fs = new FileStream(fichier,FileMode.CreateNew);
fs.Close();
Console.WriteLine("Fichier crée"+ fichier);
}
else
Console.WriteLine("Le fichier " + fichier + " " + "existe !");
}


bon donc dans mon fichier class1 et la methode void main j'appelle j'instancie diront les experts ma classe LogError avec ma variable le !


Ok ca marche sauf quand j'essayes d'appeller la methode existFile il me demande le parametre qui est le nom du fichier log !


Ce fichier je l'ai declare dans la classe LogError en champ prive !et ce afin de faire de l'encapsulation si je ne me trompe pas !


Donc ma question est celle ci comment dois je faire pour pouvoir avoir acces a mes methdes,+ variables de ma classe LogError dans mon fichier class1 ?

static void Main(string[] args)
{
LogError le = new LogError();
le.existFile();
}


Vous l'aurez remarque je debute ...


Merci et bonne semaine ...
Christophe

8 réponses

cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
6 févr. 2006 à 09:32
Ta méthode n'a pas besoin du paramètre fichier puisque tu utilise une variable privée déjà affectée à cet effet
public void existFile()

{

//FileInfo fi = new FileInfo(log);
if(!File.Exists(fichier)) //(!fi.Exists)
{
FileStream fs = new FileStream(fichier,FileMode.CreateNew);
fs.Close();
Console.WriteLine("Fichier crée"+ fichier);
}
else
Console.WriteLine("Le fichier " + fichier + " " + "existe !");
}



Théo
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
6 févr. 2006 à 13:21
private static LogError logE = new LogError();

/*
coq
MVP Visual C#
*/
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
6 févr. 2006 à 11:59
Salut,

Les méthodes statiques accèdent aux membres statiques uniquement, ou bien utilise une constante ( const ). Mais comme l'a dit RMI tu n'as pas besoin du paramètre "fichier" dans ton cas. C'est le paramètre "fs" que tu devrais mettre en champ privé plutôt, et le fermer dans le destructeur et dans Dispose.
0
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
6 févr. 2006 à 12:03
salut theo,

J'ai un autre p'tit souci qd j'instancie cette classe dans ma classe1 en faisant

LogError logE = new LogError();

je fais quelques traitements ensuite j'essayes d'acceder a mes methodes de classe LogError mais y'a pas moyen !

quand je fais logE point quelque cose il ne m'affiche rien alors que mes methodes sont publiques !!!!!

j'ai instancier LogError ici :


class Class1


{


/************* Instantation LogError ******************/


LogError logE =
new LogError();

et dans le main j'essayes donc d'acceder a une methode qui se nomme existFile mais qd je tape le . il ne me l'a propose pas !!!elle est en publique dans LogError et logerror est publique aussi !

donc ma question est celle ci comment faire pour avoir acces a ces methodes publique d'une classe donnee partout dans la classe principale !!!!


/// <summary>



/// The main entry point for the application.



/// </summary>


[STAThread]



static
void Main(
string[] args)


{


logE.existFile();

Merci

Christophe
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
6 févr. 2006 à 12:15
Main est statique et pas ta variable logE !
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
6 févr. 2006 à 12:26
Un brin de lecture sur le modifier static est peut être nécessaire...

/*
coq
MVP Visual C#
*/
0
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
6 févr. 2006 à 13:13
Salut vous deux,

Je viens de lire la doc et ce que j'"en retire ...c'est un peu flou pour moi !

Ce que j'ai modifie ds le prog j'ai mis public pour ma class1

donc


/// <summary>



/// The main entry point for the application.



/// </summary>


[STAThread]



public
static
void Main(
string[] args)


{

plus haut j'instancie ma classe logerror avec


class Class1


{


/************* Instantation LogError ******************/


LogError logE =
new LogError();

mais ca ne fonctionne toujours pas !!!

qd je veux acceder a une de ces methodes au sein de la classe 1 qd je fais le . rien ne se passe !

j'ai du rate un episode

je voudrais tout simplement avoir acces a mes methodes de ma classe logerror partout dans la class 1 !

Merci
Je comprends vite mais faut m'expliquer ...tres longtemps :-) !

Christophe
0
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
6 févr. 2006 à 13:44
Ok ca tourne j'ai acces a mes methodes de logerror partout dans ma classe class1 !

c'est parfait !!!!!

merci et bonne semaine !

Christophe
0
Rejoignez-nous