C# écrire objet de dessin

cs_thib89 Messages postés 9 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 6 avril 2011 - 24 mars 2011 à 09:11
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 25 mars 2011 à 15:47
Bonjour,

Je débute en C#, et j'ai un souci pour écrire des objets de dessin générique. Sous visual Studio 2010, j'ai effectué un diagramme de classe,avec mes différents objets, il me faut écrire le code de ceux-ci, mais je ne trouve pas d'exemple... Pouvez-vous me donner un exemple s'il vous plait, si quelqu'un c'est?

Merci d'avance.

Thib89

10 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
24 mars 2011 à 12:21
Salut,

c'est quoi un "objet de dessin" ?
Pour ce qui est de l'écriture de classe en C# tu devrais trouver environ 5 980 000 tuto sur le web (résultat google) ^^
0
cs_thib89 Messages postés 9 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 6 avril 2011
24 mars 2011 à 15:41
public class dessin // dessin est le nom de notre classe
{
float posX;
float posY;
int etat;

dessin silo; // silo désigne un objet de la classe dessin
silo = new dessin (); // création (instanciation) de l'objet
}

j'ai crée une classe dessin et j'ai ensuite instancier un objet (silo) de la classe.

Cependant une erreur persiste,
'Sogem_2.dessin.silo' est un 'champ' mais est utilisé comme un 'type'!

Merci d'avance si tu sais d'ou cela peut venir.

Thib89
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
24 mars 2011 à 16:02
Ton erreur ne correspond pas à la classe que tu as écrites ici (qui d'ailleurs est mauvaise, mais je pense que t'as tapé un peu vite).

Pourrais-tu mettre le code exacte que tu utilises stp ?

A noter qu'il faut éviter d'instancier un objet dans sa propre classe. Au cas où le code que tu as filé est celui que tu utilises, voici une petite correction :

public class dessin {
  public float posX; 
  public float posY; 
  public int etat; 
}

public class autreclasse {
  public void unfonction {
    // on instancie un objet de type dessin
    dessin instance_de_dessin = new dessin();
    // on lui assigne quelque valeur
    instance_de_dessin.posX = 12f;
    // et le reste de tes manip' ...
  }
}


Et je te conseillerais alors fortement d'aller regarder quelques tuto sur le sujet ;)
0
cs_thib89 Messages postés 9 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 6 avril 2011
24 mars 2011 à 16:33
le code que j'utilise, c'est celui que tu m'as corrigé.
merci en fait, j'ai plusieurs objets (silo, vannes, vis ...) je dois écrire les objets de ces classes, elles ne contiennent que des champs.

Je me suis aidé du livre sur le C# pour débuter.

En fait,j'ai instancier l'objet dans sa classe car si je l'instance dans une classe autre (comme ton code) le mot "dessin" ne se met pas en bleu comme il devrait s'y mettre.

Thib89
0

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

Posez votre question
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
24 mars 2011 à 16:51
Si tes classes sont définies en tant que public, et dans le même namespace, tu devrais les voir afficher de la bonne couleur ;)
0
cs_thib89 Messages postés 9 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 6 avril 2011
24 mars 2011 à 16:58
bah elles sont bien définies en tant que public puisque j'ai changé avec ta correction et c'est bien dans le même namespace, (namespace Sogem_2)
mais dessin ne s'affiche pas correctement, j'étudie la chose.

merci de ton aide et de tes rapides réponses ;)

Thib89
0
cs_thib89 Messages postés 9 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 6 avril 2011
24 mars 2011 à 17:18
Je te laisse regarder mon début de code.


namespace Sogem_2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
  
    public class dessin                    // dessin est le nom de notre classe
    {
        public float posX;
        public float posY;
        public int etat;
    };

    public class prog
    {
        static void main
    {
   
      dessin silo = new dessin();
      silo.posX = 15
    }
        }
    }
}


Merci de ta patience et de ton aide.

Thib89
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
24 mars 2011 à 17:32
oki, y'a effectivement des soucis dans ton code
Petite question : tu développes sur quel EDI ?
As-tu un fichier qui s'appelle Program.cs ?

Bon je dois partir, j'essaierai de passer dans la soirée pour voir tes réponses, mais rien de sûr.

Rapidement quelques erreurs visibles :
- tu définies tes classes à l'intérieur de ta classe Form1. C'est pas un souci en soi, sauf pour ta class prog,
- il manque les parenthèses sur la définition de la fonction main.
0
cs_thib89 Messages postés 9 Date d'inscription jeudi 11 mars 2010 Statut Membre Dernière intervention 6 avril 2011
24 mars 2011 à 17:40
Merci =) les parenthèses est un oubli de ma part.

je développe sous visual C# express mais je peux sous Visual Studio 2010 aussi.

J'ai essayé de définir ma class prog en dehors de la Form1 est "dessin" ne se trouve plus en bleu, alors que que dans la classe form 1 il se trouve en bleu...

Merci en tout cas de ton aide !:) ;)
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
25 mars 2011 à 15:47
Re,

Alors pour info, un petit topo. Pour un programme WinForm, tu as au minimum (et hors cas bizarre) 2 classes :

- une classe Program (tu l'appelles comme tu veux, mais VS les créera en auto sous ce nom) qui contient une fonction main() (ça c'est obligatoire) dans laquelle on instancie un objet de la 2ème classe. En général pas besoin d'y toucher.

- une classe Form1 (nom par défaut donné par VS) qui dérive de la classe Form. VS joue avec des partial class, qui consiste simplement à dispatcher le code d'une même classe sur plusieurs fichiers (Form1.cs et Form1.Designer.cs).

Si ces classes peuvent appartenir à un même namespace, il reste étrange de définir Program en classe interne de Form1 (ce qui m'a choqué dans ton code).

D'où ma question sur ton EDI, pour savoir s'il avait pu te créer l'archi "singulière" que tu m'as présentée ;)

NB : pour plus de clarté je mettrais ma(mes) classe(s) métier, dans ton cas la classe dessin, dans un (ou plusieurs) fichiers en-dehors de ces 2 classes. ça aura l'avantage d'être plus lisible/maintenable, mais aussi portable. En effet, si tu veux passer en WebForm (pour un intranet par exemple), il te suffira de récupérer ces fichiers et de les coller dans un projet ASP.NET, au lieu de devoir soit tout retaper, soit nettoyer ton Form1 pour virer la partie interface.
0
Rejoignez-nous