begin process at 2010 02 10 04:57:50
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Système

 > 

Autre

 > 

Probléme de classe en C#


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

Probléme de classe en C#

lundi 17 décembre 2007 à 11:42:28 | Probléme de classe en C#

Romano58

Salut les codeurs !

je veux passer a la version 2 de mon crypteur Xblue (voir la source Xblue sur delphi-fr). Dans cette version 2 je souhaite améliorer le code source de la façon suivante : OBJET ! :)

Un probléme ce pose, je crée l'interface suivante (je simplifie un peux le code):


// Interface Icrypteur
public interface Icrypteur
{
   
public int crypte(...);
   
public int decrypte(...);
}

Ensuite, je crée différente classe (autant que je souhaite avoir de cryptage différent: xor, rsa, etc):

// classe crypteur xor
public classe crypt_xor : Icrypteur
{
    public int crypte(...);
    public int decrypte(...);
    ...
}

// classe crypteur rsa
public classe crypt_rsa : Icrypteur
{
    public int crypte(...);
    public int decrypte(...);
    ...
}

...

Icrypteur crypteur;

// ici je peux crée différent crypteur, grace a l'interface
Icrypteur = new crypt_xor();


Concrétement, l'erreur qui me chagrine, et que je ne comprend pas c'est que :
 1. Si je crée une methode dans la classe crypt_xor, qui n'est pas définit dans l'interface Icrypteur, je ne peux y accéder via mon objet "crypteur"...
       ex:
            crypteur.fonctionTruc(paramTruc); // Erreur de compilation

 2. Si j'ai une variable, ou une constante d'un type ou d'un autre, je ne peux pas y accéder
      ex:
          maVariable = crypteur.maVariableSpécifiqueXOR;

j'éspére que vous comprendrer mon probléme:
Je veux, a partir d' Icrypteur crée n'importe quel type de crypteur, ayant chacun leurs methode et champ spécifique. Mais je ne connais pas assé la programmation objets pour faire cela sans aide.

Au pire, je mettrai le code en ligne si je peux, car avec les ordis du bahu on est bridé de partout pour telecharger alors pour uploader c'est surement pareil...





..:: RomanOoo ::..
lundi 17 décembre 2007 à 12:03:59 | Re : Probléme de classe en C#

sebmafate

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
euh... pour les interfaces, il n'y a pas de spécification de la portée...

donc :
public interface Icrypteur
{
   
public int crypte(...);
   
public int decrypte(...);
}


ensuite... si une méthode est créée dans une classe qui hérite de l'interface, tu ne peux pas l'utiliser à partir de l'interface... puisqu'elle n'est pas commune à l'ensemble des classes qui l'implémentent

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
lundi 17 décembre 2007 à 12:43:10 | Re : Probléme de classe en C#

Nikoui

Réponse acceptée !
Je pense que tu prend le problème à l'envers :

Le but d'une interface est de définir ce qui est communs à plusieurs classes, un "contrat" que chaque implémentation va remplir : autrement dit, lorsqu'un objet implémente une interface, tu sais qu'il implémentera toutes les méthodes de l'interface. C'est par ce méchanisme que tu peux écrire du code "générique", qui va être utilisable sur n'importe quel "sous type" implémentant l'interface, par exemple une méthode qui prend en paramètre un objet du type de ton interface et qui va pouvoir travailler dessus en utilisant les méthodes déclarées dans l'interface, quelque soit leurs implémentations ou les spécificités de tes classes (c'est ce qu'on appelle le polymorphisme).

Or, dans ton cas, tu parles de méthodes ou de variables spécifiques, qui ne sont donc pas déclarée dans ton interface de base.

Ainsi, tu devrait plutot procéder comme suit :
- Lorsque tu as besoin d'appeler des méthodes spécifiques (ou d'accéder à des variables spécifiques), tu ne dois pas manipuler des "Crypteur", mais des "CrypteurA", "CrypteurB", etc.
- Lorsque tu as besoin d'appeler tes méthodes communes (déclarée dans l'interface) tu pourra passer indifférement un objet "CrypteurA", "CrypteurB", etc à ta méthode, qui elle ne manipulera que des "Crypteur".

Ensuite, tu peux aussi faire des choses comme celle là :
- Déclarer une variable de type "CrypteurA" :
    CrypteurA monCrypteurA = new CrypteurA();
- Apeler une méthode qui prend en paramètre un "Crypteur" :
    public void MaMethode(Crypteur crypteur)
- Dans ta méthode, si tu dois appeler une fonction spécifique et que tu sais que ton crypteur est bien d'un type spécifique, tu peux caster ton crypteur en CrypteurA :
    (crypteur as CrypteurA).MaMethodeSpecifiqueA();
- Pour tester le type de ta variable crypteur par exemple :
    if(crypteur is CrypteurA)
    {
        [...]
    }


Working as designed
www.nikoui.fr
jeudi 12 juin 2008 à 15:15:46 | Re : Probléme de classe en C#

Romano58

Mercie beaucoup. Cela m'a permis de poster un debut de sources sur csharp. Maintenant que ma formation de developpeur est terminer je comprend bien mieux la programmation Objet (en faite c'est carrément genial)... par contre le code du crypteur date un peux et pourrais être amélioré je pense, malheureusement je n'ai plus le temp de m'en occupé.

En tout cas, mercie bôcoup pour votre aide à tout les deux.

..:: R ::..


Cette discussion est classée dans : public, int, classe, crypteur, icrypteur


Répondre à ce message

Sujets en rapport avec ce message

Parsing dans un classe générique ??? [ par YOOP ] Bonjour tout le monde,J'ai un soucis concernant une classe générique. (c'est mon premier test avec ce genre de classe).Voici :public class Paramètre   utilisation des variables d'une classe [ par ggrug26 ] bonjour a tous,je débute dans le monde du C#, et je rencontre quelques difficultés, mes bases de C++ doivent être rouiller:j'ai créer une classe avec Xml et ma librairie Excel [ par kooroza ] Bonjour,Je veux lire et modifier un fichier XML qui a à peu près la forme suivante.       A1    H Récupérer un paramètre d'une classe mère [ par therainbow3 ] Bonjour, J'ai créé une classe mère de cette forme:public class Page    {        protected ArrayList textes;        protected ArrayList images;        creer une calendrier [ par asprog ] salut tout le monde qlq'un peut-il m'aider a creer une calendrier j'ai commencer par creer une classe date a l'interieur de cette classe j'ai creer un Tutoriel classes et programmation objet [ par olibara ] Bonjour Je developpe depuis qq semaine en Csharp et je trouve ce langauage tres agréable et puissant. Je pense maitriser déja pas mal de choses Cepe progresseBar en C# [ par dyder ] Bonjour à tous, j'ai besion d'aide..j'ai réalisé un programmae qui permet de lire des fichiers et de mettre à jour certaines tables de ma base de donn Serialization d'une classe [ par olibara ] Bonjour Je voudrais comprendre la methode la plus simple pour sauver le contenu d'une classe dans un fichier afin de la recuperer ensuite Bien sur Héritage, polymorphie et surcharge [ par Kleino ] Slt á ts,je suis nouveau et travaille les heritages, la polymorphie et les surcharges en c#Cependant je suis coincéet récolte cette erreur: Method mus Heritage et Constructeur [ par codefalse ] Bonjour à tous :)Voila, nouveau en C# je suis bloqué sur un problème d'héritage.J'ai une classe mère abstraite, AbsClass, qui contient un constructeur


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,343 sec (3)

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