[Mainly C#]Mon apprentissage de l'objet (et du C#)

Heu non ca c’est du code a la porc. Y a des bouquins tres bien sur la prog objet, qui expliquent les notions d’encapsulation et d’heritage, et d’interface, de classe abstraite et tout. Tu fais pas un cours d’object en trois posts :smiley:

A nouveau, je plussoie 1000x Glop. Désolé LoneWolf mais la POO ce n’est pas qqch que tu réussiras à apprendre sur le tas. Ce sont des concepts compliqués et je sais qu’ils sont souvent très difficile à comprendre pour des gens qui ont fait beaucoup de développement procédural.

Tu as l’impression que tu perds du temps mais c’est vraiment parce que tu as de la peine à appréhender les concepts. Si la POO faisait perdre du temps personne n’y serait passé et on développerait toujours en procédural. Mais à nouveau, ça demande de vraiment penser ses projets en orienté objet et d’oublier et perdre ses habitudes procédurales. Il ne faut pas oublier qu’en OO l’idée est de créer un système qui décrivent des objets “de la vraie vie” jusqu’à un certain niveau d’abstraction.

T’as raison, c’est difficile d’expliquer des notions qui prennent des années a les comprendre et a assimiler.

Et dire que la POO est deja depassée pour pas mal de gens…

C’est jamais vraiment depasse, c’est evolue…

My two cents d’ex développeur qui est passé du procédural à l’objet :

Lone, ne cherche pas a faire rentrer ce que tu connais dans l’objet. C’est la mauvaise démarche. C’est comme les gens qui disent « ouais, le C++ c’est du C avec des classes en plus ». C’est super réducteur, et c’est surtout complétement faux.

C’est des concepts différents. Et la bonne manière de les apprendre, c’est de la théorie à la pratique. �?a ne marche pas dans l’autre sens.

J’ai beaucoup développé en C et même en Pascal dans ma jeunesse, et je reviendrai au procédural pour rien au monde :smiley: Et même pour mes petits projets bidon a moi que je fais pour moi, je préfère développer en objet. Je suis passer du C++ au Java, et je reviendrai pas en arrière. Puis du Java au C#, et même chose, je reviendrai pas en arrière.
Parce que même au sein de l’objet, les concepts évoluent. C#, c’est clairement un langage objet d’une génération plus aboutie que Java, qui lui même apportait des raffinements qu’on avait pas en C++.

Bin toi, la marche est encore plus grande : c’est deux univers. La fait de maîtriser la programmation procédurale te permet de comprendre la notion d’algorithme, et c’est déjà bien. Mais la programmation objet, c’est une approche complétement différente, avec des notions d’événements.

Si tu le prends de bas en haut (pratique → théorie), tu vas rater tout l’intérêt du truc, parce que faut d’abord piger les concepts pour bien l’utiliser.
C’est cool de t’intéresser a autre chose, mais cherche pas a faire rentrer au chausse pieds les concepts objets dans ce que tu connais en procédural …

Donc, a ta place, je commencerai pas un bon bouquin d’introduction au concept objet, qui va mettre en avant les avantages et les inconvénients, ce qu’il faut faire et ce qu’il faut surtout éviter (fear les héritages multiples du C++ ^^), et tu pourras ensuite réfléchir à la conception de ton logiciel, et tout va bien s’imbriquer.

Mais sinon oui, tu as raison, créer un objet et faire du procédural dedans, ca sert a rien. Mais c’est pas de l’objet :smiley:

Oula j’ai pas dit ca :smiley: Je fais du C# donc l’objet est nécessaire.

Je prends le post de glop parce qu’il resume pas mal les suivants.
Je pense que j’ai mal exprime le but du thread: Je concois bien que c’est pas en 3 posts de forum que je vais capter par magie la POO. J’ai lu des explications sur tout ces concepts, déjà. Mais aucun qui soit capable de me montrer l’intérêt (ou l’obligation) de privatiser les variables, de s’imposer une interface (je trouve ca assez dangereux, au debut en tout cas, car tu peux te retrouver avec une interface qui ne fait pas ce que tu veux au final, alors que creer, tester la classe et en sortir une interface (une fois la classe stabilisee), c’est plus logique - mais je me trompe peut etre). Bon pour les classes abstraites, la je connais pas.
Même si j’ai lu la théorie, je n’ai pas encore réussi a l’assimiler pour l’utiliser dans mon code, et c’est pour ca que j’ai fait le thread. Obtenir des réponses de gens expérimentés en POO pour comprendre pourquoi on fait comme ca, etc. Si j’avais voulu continuer a faire du C# en procedural, j’aurais pas fait de post ici :smiley:

Pourtant ce que j’ai fait en procédurale reste une base qui marche bien, donc forcement, la première démarche est de continuer comme ca. Maintenant j’estime avoir assez de recul sur ce que je fais pour voir que, meme si ca fonctionne, c’est pas la bonne methode « state of the art » et comme je suis un peu perfectionniste, je cherche a comprendre comment faire mieux.

Désolé mais ici je suis pas d’accord. J’ai besoin de la théorie mais si je la comprends pas, ca sert a rien. Je vais toujours rester bloquer sur un truc que je n’arrive pas a appliquer. C’est idiot. Je préfère faire l’inverse, passer a la pratique en ayant en tête les concepts de la POO, qui restent bien flou parce que je vois pas encore l’intérêt, plutôt que de rabâcher la théorie pour arriver nulle part (et c’est dangereux car je peux rejecter tout le concept si je me prends trop la tete avec).

[quote=« cben76, post:26, topic: 50983 »]J’ai beaucoup développé en C et même en Pascal dans ma jeunesse, et je reviendrai au procédural pour rien au monde :slight_smile: Et même pour mes petits projets bidon a moi que je fais pour moi, je préfère développer en objet. Je suis passer du C++ au Java, et je reviendrai pas en arrière. Puis du Java au C#, et même chose, je reviendrai pas en arrière.
Parce que même au sein de l’objet, les concepts évoluent. C#, c’est clairement un langage objet d’une génération plus aboutie que Java, qui lui même apportait des raffinements qu’on avait pas en C++.[/quote]
Perso j’ai rien contre les autres langages objets, j’ai choisi C# parce qu’a mon sens, c’est un langage d’avenir, c’est tout. C’est juste du pifometre hein. Les autres ne m’intéressent pas pour le moment.

[quote=« cben76, post:26, topic: 50983 »]Bin toi, la marche est encore plus grande : c’est deux univers. La fait de maîtriser la programmation procédurale te permet de comprendre la notion d’algorithme, et c’est déjà bien. Mais la programmation objet, c’est une approche complétement différente, avec des notions d’événements.

Si tu le prends de bas en haut (pratique → théorie), tu vas rater tout l’intérêt du truc, parce que faut d’abord piger les concepts pour bien l’utiliser.
C’est cool de t’intéresser a autre chose, mais cherche pas a faire rentrer au chausse pieds les concepts objets dans ce que tu connais en procédural …[/quote]
Justement, pour piger les concepts, il faut les utiliser et en avoir besoin, sinon ca marche pas. Enfin je fonctionne comme ca moi.
Et je fais pas rentrer le procédural dans l’objet. J’ai fait un plan global de l’appli en objet (avec des objets et des méthodes) et en cours de route, je me rends compte qu’il me manque des trucs, donc je crée d’autres objets pour palier au problème.
Comme dirait glop, c’est du code a la porcasse mais ca a le mérite de me faire prendre le mur et de voir pourquoi on doit faire comme ca et pas autrement. Il faut justement que je profite de ces petits developpement pour me planter car ca n’a que peu de conséquence (je rappelle que je suis passe de int offsets=new int[8] a un veritable objet propre, justement parce que ca n’allait pas dans la direction objet). C’est plus long que de rabacher la theorie mais c’est en faisant des conneries qu’on apprends.

C’est rigolo que tout le monde me propose de lire un bouquin mais qu’on me donne pas d’exemple :stuck_out_tongue:
J’ai déjà lu un truc sur l’objet en C# (cf premier post), je veux bien en lire un autre au besoin mais il faut qu’il soit au maximum pratique, sinon ca ne marchera pas (avec moi)

Ah oui, un truc important.
Je ne prétends pas être capable de devenir un super programmeur C#. Je fais déjà de l’administration système sous linux, j’apprends aussi a le faire sous windows, pas mal de réseau dans les deux monde et sur internet, et je fais de la programmation, version apprentissage de C#/POO et en bonus de la mise en place de linux sur de l’embarqué. Je cherche a être polyvalent donc, mais j’ai bien conscience que je serais jamais un specialiste dans l’un des domaines. Mais j’attache une grande importance a faire les choses dans les règles de l’art, y compris pour le C#/POO. Même si je serais toujours moins efficace qu’un vrai programmeur.

Et merci a tous pour les avis :slight_smile:

LoneWolf
Bon, j’ai toujours un problème de duplicate file avec ma gentoo, avec tout ca.

[quote=“LoneWolf, post:27, topic: 50983”][quote=“cben76, post:26, topic: 50983”]C’est des concepts différents. Et la bonne manière de les apprendre, c’est de la théorie à la pratique. �?a ne marche pas dans l’autre sens.[/quote]Désolé mais ici je suis pas d’accord. J’ai besoin de la théorie mais si je la comprends pas, ca sert a rien. [/quote]C’est clair que moi je ne pourrai jamais me satisfaire de théorie pure sans commencer la pratique en parallèle: il faut que j’applique assez rapidement pour comprendre. J’ai lu dans un bouquin chez moi les concepts de base (héritage, surcharge, etc…), mais comme je n’ai pas appliqué en même temps ça m’a pas servi à grand chose autre d’appréhender le concept général.

Lone, je t’échange des cours d’orienté objet contre des cours d’admin Linux :smiley:

dans mon ancien taf, j’etais formateur linux/apache/mysql/php/whateva donc c’est quand tu veux :smiley:

LoneWolf
Et j’suis content d’etre parti tiens!