IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] Comment correctement programmer orienté objet ? [Débutant(e)]


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 164
    Points : 92
    Points
    92
    Par défaut [C#] Comment correctement programmer orienté objet ?
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    private string fichier = "AccountingLogFile.txt";
    		public LogError()
    		{
    		}
     
     
    		#region Method existFile =========================================================
    		/// <summary>
    		/// Verify is the file exist
    		/// </summary>
    		/// <param name="fichier">the file s name</param>
    		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 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    static void Main(string[] args)
    		{
    			LogError le = new LogError();
    			le.existFile();
    		}
    Vous l'aurez remarque je debute ...

    Merci et bonne semaine ...
    Christophe

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut Re: [debutant]Encapsulation + classe
    Salut .

    C'est normal qui te demande un parametre avec le nom du fichier vu que ta methode demande un parametre. La programmation Objet n'est pas miraculeuse (seulement un peu plus obscur au depart ). Ce n'est pas parce que tu donne le meme nom a ton argument de fonction que le compilateur va savoir qu'il doit utiliser la variable d'instance de ta classe.

    Ton code corrigé donne ça :

    Citation Envoyé par ChristopheOce

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    private string fichier = "AccountingLogFile.txt";
    		public LogError()
    		{
    		}
     
     
    		#region Method existFile =========================================================
    		/// <summary>
    		/// Verify is the file exist
    		/// </summary>
    		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 !");
    		}
    tout simplement.

    je te conseil d'aller voir les cours de la section dotnet et les cours sur la programmation objet
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 164
    Points : 92
    Points
    92
    Par défaut
    salut salut dev01,

    Ok je vois je vais lire la doc cela me fera le plus grand bien !


    Grand merci..pour ta rapidite ..


    Bonne semaine ...
    Christophe

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 164
    Points : 92
    Points
    92
    Par défaut
    euh...si je peux encore me permettre dev01,

    J'ai encore un p'tit souci !

    toujours avec la classe LogError!

    Dans mon fichier class1 fichier principal de l'application console !

    j'instance ici la classe LogError

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class Class1
    	{
    /************* Instantation LogError ******************/
    		LogError logE = new LogError();
    ok ca marche mais ou ca coince c'est quelques lignes plus bas en fait qd je veux acceder a mes methodes existFiles et autres se trouvant dans la classe LogError !

    je fais donc

    mais la rien ne s'affiche il ne me propose pas mes methodes disponibles !!!

    elles sont en public dans la classe LogError

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
    [STAThread]
    		static void Main(string[] args)
    		{
    			// TODO: Add code to start application here
    			do
    			{
    				valMenu = MainMenu();
     
    				switch(valMenu)
    				{
    					case 1:
    						chemin = entreePath();
    						Console.WriteLine(chemin + " [ Directory found ]");
    						Console.WriteLine();
    logE.   //Ca ne va pas !
    Si tu as une idée..

    Je te remercie

    Christophe

  5. #5
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Points : 6 017
    Points
    6 017
    Par défaut
    Salut .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class Class1
    {
           public static void Main(string[] args)
           {
                LogError logE = new LogError(); //On déclare la variable et on l'instancie dans la fonction car tu n'en pas besoin ailleurs.
                 ......
             }
    }
    ça c'est une possibilité .

    l'autre c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class Class1
    {
           static LogError logE;
           public static void Main(string[] args)
           {
               logE = new LogError(); //On instancie la variable statique logE dans la fonction . Elle doit etre statique car tu y accède à partir d'une fonction de classe ( static  ).
                 ......
             }
    }
    Encore une fois c'est pas pour méchant ou désagréable mais tu comprendras mieux tout ça après avoir lu la doc sur la POO
    - MVP C#
    -Tout problème a une solution, le vrai problème est de trouver la solution .....
    - Linux & mono : l'avenir

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 164
    Points : 92
    Points
    92
    Par défaut
    re dev01,

    Oui c'est clair mais tu peux me croire je l'ai lue !

    ma fois je n'ai pas tout assimile car tu l'as vu je debute c'est bien de lire la doc j'ai bien saisi les modificateurs private, public, etc..creation de classe, et de methode mais tout cela reste encore fort flou sans etre applique a un exercice !

    c'est ce que je fais donc !

    je viens de tester et j'arrive bien a avoir acces a toutes mes methodes de classe LogError partout et meme dans mes methodes de class1 donc c'est ce qu'il me fallait !

    enorme merci a toi !

    bonne semaine ..
    Christophe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/05/2013, 21h56
  2. Réponses: 8
    Dernier message: 21/02/2012, 18h21
  3. Programmation orientée objet ? Comment ?
    Par ..::snake::.. dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 27/05/2007, 21h05
  4. [POO] apprendre la programmation orientée objet
    Par Invité dans le forum Langage
    Réponses: 5
    Dernier message: 10/12/2005, 11h33
  5. [DEBUTANT] Conseil sur la programmation orienté objet
    Par etiennegaloup dans le forum Langage
    Réponses: 7
    Dernier message: 27/05/2005, 12h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo