Question de débutant [C#] - C#/.NET managed - Programmation
Marsh Posté le 31-10-2007 à 14:41:20
déjà je pige pas de quoi tu parles.
tu modifies ton OBJET (instance) et tu veux que ce soit récupéré dans ta CLASSE ????????
ça veut rien dire.
sinon, histoire de comprendre un peu les notions de références en C#, exécute ce petit exemple pour comprendre les mécanismes :
(roulé à la main sous les aisselles, c'est juste pour montrer comment ça marche)
Code :
|
Marsh Posté le 31-10-2007 à 14:58:24
mais non, il a pas lu les bases sur les valuetype, les objets, l'allocation dynamique, etc
Marsh Posté le 31-10-2007 à 16:02:25
Taz a écrit : mais non, il a pas lu les bases sur les valuetype, les objets, l'allocation dynamique, etc |
bah ouais, mais justement, avec l'exemple que je file, il va commencer à comprendre qu'il a besoin de lire un minimum de doc sur le sujet avant de chercher à aller plus loin
ceci dit, je dois dire que moi j'ai mis un bout de temps à vraiment comprendre le principe du truc (surtout à savoir m'en servir et prévoir le comportement spa évident -mais bon j'ai pas d'excuse, j'ai jamais acheté de bouquin -)
Marsh Posté le 31-10-2007 à 16:03:26
MagicBuzz a écrit : |
100 lignes d'exemple ne peuvent pas remplacer 3 lignes de définition.
Marsh Posté le 31-10-2007 à 16:05:41
ça dépend, moi j'arrive à apprendre que par la pratique.
la doc ça aide, mais pour moi, c'est qu'une fois que je sais ce que j'attends de la doc : en gros j'ai un cas précis que je ne comprends pas, et là je lis la doc pour voir pourquoi. j'arrive pas à faire l'inverse
m'enfin bon spa nouveau, je fais tout à l'envers
le meilleur exemple, c'est en ce moment : je fais une appli de consultation d'un catalogue situé dans une base.
le client est fini fignolé et tout ça.
et là je suis en train de me rendre compte que j'ai aucun outil pour allimenter/maintenir la base, chuis en train d'en coder un
Marsh Posté le 31-10-2007 à 16:17:00
MagicBuzz a écrit : ça dépend, moi j'arrive à apprendre que par la pratique. |
foutaise. Comme disait je-sais-plus-qui (Pascal / Descartes / Kamoulox) tu peux regarder autant que tu veux une flamme sans jamais arriver à saisir ce qui se passe.
Marsh Posté le 31-10-2007 à 16:18:31
Rebonjour,
Alors pour essayer d'un peu plus vous expliquez mon problème:
Le code de mon Binom:
Code :
|
Sur cette ligne: public void SetTestStudent(Student S1, Student S2) { TabStudent[0] = S1; TabStudent[1] = S2; }//Ecrase les deux etudiant d'un binom
je duplique l'étudiant et je voudrais que l'étudiant "pointe" sur la case du tableau comme on le ferait naturellement en C++
Ps:Vous occupez pas des commentaires, de la doc j'en ai j'ai regardé dedans et rien ne parle de ce que je veux faire donc je demande conseil...
Marsh Posté le 31-10-2007 à 16:21:43
(déjà les bool ça existe)
Et non, tu n'écrases pas des étudiants, tu modifies des références. TabStudent est un tableau de référence à des Student.
Marsh Posté le 31-10-2007 à 16:31:33
D'ac sauf que si je modifie l'étudiant S1, le même étudiant contenu dans TabStudent[0] n'est pas modifié et c'est à ça que j'aimerais arrivé.
(j'ai pas utilisé de bool
Edit: Dsl taz j'ai mal lu ta réponse sur les bools)
Marsh Posté le 31-10-2007 à 17:22:48
Plop.
Déjà, une petite remarque.
Tes méthodes Getxxx et Setxxx n'ont rien à faire sous forme de méthodes. Utilise des propriétés avec accesseurs :
Code :
|
Ensuite, plutôt que de retourner un int sur ton "SetStudent" (que je renommerais "AddStudent" ) lève une exception quand il n'y a plus de place. Plus propre je trouve.
Code : |
Ou comme dit Taz, retourne un bool. Dans tous les cas, le int porte à confusion, on peut croire que c'est l'index où est inserré l'étudiant dans ton binome.
Sinon, ta phrase là, c'est une question ou ce qu'il se passe ? Parceque ça se comporte pas comme ça normalement.
Marsh Posté le 31-10-2007 à 17:37:10
Merci MagicBuzz c'est très sympa les propriétés d'accesseurs c'est bien sympa!
Pour le SetStudent je suis entièrement d'accord mais mon prof est un peu...et il veut que des get et des set dans les class mais je send que je vais faire comme je le send il me saoule un peu avec ses principes à la c**
Marsh Posté le 31-10-2007 à 17:54:19
Bah d'autant qu'utiliser les mécanismes du C# pour faire justement proprement des Get/Set, c'est quand même mieux que de multipliser les méthodes qui nuisent à la lisibilité de la classe (imagine une classe genre Form() avec que des propriétés accessibles par 2 méthodes à chaque fois...
Sinon, si tu as besoin de faire des copies complètes de tes objets (et donc ne plus bosser sur des références), voici un exemple :
Code :
|
Marsh Posté le 31-10-2007 à 21:51:09
Saubin a écrit : |
ridicule ce prof... les properties existent depuis le début dans C#, je vois pas pourquoi il ne veut pas les utiliser... encore un qui ne jure surement que par Java tiens...
Marsh Posté le 31-10-2007 à 22:55:56
Harkonnen a écrit : |
Oui exactement il jure que pars java, d'ailleurs il ramène tout à java...
Marsh Posté le 31-10-2007 à 23:05:00
faut lui dire que C# pallie à un truc assez pénible de Java : l'obligation de définir des getters et setters pour les variables membres (les fameux setMachin() et getMachin() bien lourdingues). les properties sont bien plus intuitives à lire que les accesseurs made in Java
et si jamais la suite du programme consiste à utiliser des interfaces pour la programmation évenementielle (par exemple, comme Java et ses interfaces listeners à implémenter), alors parle lui donc des delegates...
y'a des jours ou j'ai envie de vitrifier le corps enseignant moi....
Marsh Posté le 01-11-2007 à 16:02:25
^^, pas de soucis, on utilise des interfaces oui! Mais qu'est ce que tu apelles de la prog évenementielle? Je vais voir ce que c'est que les delegates
Marsh Posté le 01-11-2007 à 17:36:51
j'aimerais bien éxécuter FXCop sur ton code, ca doit etre rigolo
Marsh Posté le 01-11-2007 à 19:00:54
ReplyMarsh Posté le 01-11-2007 à 19:03:13
Ouki je vois ce que c'est, désolé y a un début à tout ça peut pas être parfait de suite
Marsh Posté le 02-11-2007 à 09:35:35
Lamarmotte a écrit : oh il serait sûrement très bavard.... |
En parlant de ça.
Dans mon dernière exemple, j'avais fait hériter "ObjClonable" de "ObjDeBase" et de "IClonable".
Mais cet empaffé n'a jamais rien voulu compiler, comme quoi il n'avait pas de constructeur sans argument, après comme quoi il n'avait pas de constructeur avec deux arguments. Si je les créait, il plantait sur l'instanciation du truc en râlant que le type de base était merdé aussi ou je sais pas quoi... Du coup j'ai laissé tomber, mais ça me fends l'anus en deux ce truc.
J'ai oublié un truc ?
Code :
|
=> Aucune idée de pourquoi ça veut pas compiler ! Une idée ?
Marsh Posté le 02-11-2007 à 15:51:10
bonjour g un gros pb je comprend rien au tableau qqn peut m'expliquer pourquoi ce prog par exempl ne foncionne pas c'est un programme qui est cense saisir des donnéé au clavier dans un tableau et apres on peux chercher l'adresse d'une valeur ou pas #include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i,x,Case;
int Tab[10];
for(i=0;i<10;i++)
{
printf("Valeur %d :\n",i+1);
scanf("%d",& Tab[i]);
}
printf("entrez la valeur du nombre a rechercher:\n" );
scanf("%d",&x); /**X=...**/
for(i=0;i<10;i++);
{
if(Tab[i]==x)
{
Case=i;
printf( "la valeur est presente en posisition%d\n",Case);
}
else
{printf("le nombre est absent\n" );}
}
system("pause" );
return 0;
}
Marsh Posté le 02-11-2007 à 15:57:36
Multipost
Marsh Posté le 02-11-2007 à 17:52:09
greg0488 a écrit : bonjour g un gros pb je comprend rien au tableau qqn peut m'expliquer pourquoi ce prog par exempl ne foncionne pas c'est un programme qui est cense saisir des donnéé au clavier dans un tableau et apres on peux chercher l'adresse d'une valeur ou pas #include<stdio.h> |
quelle est ta question sur le C# ?
Marsh Posté le 11-11-2007 à 11:01:08
Reply
Marsh Posté le 31-10-2007 à 13:48:10
Bonjour à tous,
Je débute en C# et j'ai un petit soucis. Je dois faire un prog de gestion de note et de personne et j'ai une classe binom qui est composé de deux objet Student. Pour l'instant je pense avoir écrit une grosse connerie j'ai mi codé le lien comme ceci:
private Student []TabStudent = new Student[2];
J'ai fait du C++ et si j'avais eu à utiliser ce langage j'aurais mi des pointeurs...Apparemment en C# il n'y pas besoin de ces pointeurs MAIS dans mon cas je ne vois pas comment lier correctement un binom et deux Student. Pour l'instant comme je l'ai écrit il n'y a pas de lien entre les deux, je re-cré deux objets Student indépendant, je voudrais que quand je modifie le student cela soit répercuté dans la classe binom...j'attends donc vos avis pour m'éclairer un peu...J'ai essayé de faire avec des pointeurs mais apparemment ce n'est pas la bonne méthode à suivre...
Merci d'avance