Comment apprendre au mieux les concepts / principes de la POO? [fermé]

12

Je voulais apprendre un langage de programmation orienté objet, je ne le veux à aucune fin juste pour connaître tout le concept de POO. Alors, quelqu'un peut-il me dire quelle langue je dois commencer à apprendre?

Loup caféiné
la source
1
Quelles langues connaissez-vous déjà?
Mchl
C, VB.NET et C ++ mais pas la partie OOP
Caffeinatedwolf
1
choisissez ensuite VB.NET
Vinoth Kumar CM
Non, je ne veux pas de VB.NET Je veux que vous m'aidiez à choisir entre Java, C ++, Python etc ...
Caffeinatedwolf
3
Vous voulez pratiquement apprendre quelque chose sans but?
JeffO

Réponses:

13

Quelques suggestions supplémentaires:

  • Le meilleur livre que j'ai jamais lu sur la barre OOP aucun est la construction logicielle orientée objet de Bertrand Meyer . Ce n'est pas une lecture «facile» dans laquelle vous devrez réfléchir sérieusement par endroits. Mais il fait le meilleur travail que j'ai vu pour expliquer les principes d'OO.

  • Quant aux langages: je resterais loin du C ++. Tout simplement trop grand à des fins d'apprentissage. Si vous voulez un langage qui vous aidera vraiment à comprendre OO (par opposition à celui dans lequel vous écririez des applications grand public / obtiendriez un emploi), alors regardez smalltalk. Ou Eiffel (la langue dans le livre de Meyer ci-dessus).

  • Si vous voulez un langage un peu plus courant mais qui supporte toujours fidèlement les principes OO, alors Python est un bon pari. Java et C # sont également corrects si vous souhaitez une saisie statique.

Un mot d'avertissement cependant: la langue ne vous apprendra pas OO. Il ne peut qu'aider (ou gêner) la façon dont il prend en charge les concepts OO. Apprendre OO, c'est vraiment apprendre à penser en termes OO. Pour cela, je revenais au livre de Meyer.

hth.

sfinnie
la source
1
Les autres choses en C ++ sont importantes . Il est important de connaître l'héritage virtuel. Il est important de connaître une prise en charge générique solide au moment de la compilation, et il est important de connaître la valeur par rapport à la référence. Aller vers quelque chose comme Java, c'est simplement "LA LA LA JE NE PEUX PAS VOUS ENTENDRE C'EST LA SEULE FAÇON DE LE FAIRE".
DeadMG
2
Oui et non. La question du PO portait sur l'apprentissage, ce qui implique d'abord les bases. Je ne suis pas convaincu que le C ++ soit parmi les candidats comme le langage d' apprentissage le plus approprié . Cela dit: Meyer couvre les génériques et la valeur par rapport à la référence de toute façon, bien que comme des sujets plus avancés. Il entre également dans la co-et contre-variance, dans les dernières parties du livre. Mais il expose d'abord les bases. (Et Eiffel est typiquement typé btw).
sfinnie
1
Je ne vais pas être d'accord ou pas d'accord avec une recommandation d'Eiffel, car je n'ai jamais utilisé ni même vu ou lu quoi que ce soit à ce sujet. Cependant, je suis absolument en désaccord avec toute recommandation pour Java et C #, comme je l'ai dit.
DeadMG
12

Vous pouvez apprendre n'importe quel langage orienté objet tel que C ++, Java, C # etc. pour essayer OOPS.

Si vous voulez vraiment apprendre la POO, vous devez penser au-delà des langues et comprendre que c'est un paradigme qui aide à la complexité des mangas impliqués dans les logiciels, tout comme la façon dont nous les gérons dans ce monde réel. Ensuite, apprenez les concepts de base en OO comme le polymorphisme, l'héritage, l'encapsulation (PIE), etc.

Il y a de bons livres sur l'analyse et la conception trop orientées objet avec des applications (2e édition) par Grady Booch

En outre, vous pouvez essayer des blogs comme celui-ci que j'ai trouvé assez simple pour commencer - fascinatingoops.com

WinW
la source
3

Vous voulez apprendre la POO? Une réponse - Smalltalk.

C'est un langage élégant et est OO au cœur. Vous apprendrez la POO depuis le début et ne serez pas gêné par toutes les autres distractions que d'autres langues parviennent à intégrer.

Smalltalk gagne. Et il y a aussi de bons ebooks gratuits (voir: Stéphane Ducasse )

Simon Knights
la source
3

Vous devrez apprendre le C ++, ou peut-être l'un des ancêtres comme Smalltalk. C ++ offre une séparation nette entre des concepts tels que l'orientation d'objet, la gestion de la mémoire et la référence par rapport à la valeur, et il dispose d'un solide support générique.

N'apprenez pas Java ou un langage .NET comme C #. Lorsque vous apprenez un langage comme Java, vous apprenez des choses comme «Les objets sont toujours sur le tas et sont toujours des références», ce qui n'est vrai que pour Java et absolument pas vrai pour la POO en général. Cette confusion de concepts (orientation objet, gestion de la mémoire, référence vs valeur) est très dangereuse pour une première langue, car une fois que vous les avez coincés dans votre tête, il peut être très difficile de les retirer. C # est un peu mieux à cet égard, mais pas beaucoup. En outre, ils peuvent avoir une forte tendance à enseigner "L'héritage est un marteau et tout est un clou" avec un faible support de programmation générique.

DeadMG
la source
C'est très vrai. Je n'ai jamais pensé à cela auparavant, en fait lorsque vous traitez avec un langage qui est très concentré sur la POO et essaie de tout résoudre avec la POO, vous n'apprendrez jamais quels problèmes ne sont pas vraiment adaptés à la POO.
daramarak
1

La meilleure façon d'apprendre les concepts de la POO est d'écrire de plus en plus de code et de le faire réviser souvent. La pratique fait un bon programmeur.

Pensez à des scénarios réels, définissez un énoncé de problème - résolvez-le dans le code et faites-le réviser. Vous pouvez toujours obtenir l'aide de /codereview// pour les avis :)

Bon codage !!!

karthiks
la source
0

Pas

  1. Apprenez ce qu'ils signifient.
  2. Apprenez à les mettre en œuvre.
  3. Prenez un projet à développer, choisissez votre langage [qui devrait avoir le principe OOPS intégré comme VB.NET ou C # ou C ++ ou java etc]
  4. Réfléchissez à la façon dont vous pouvez simplifier la logique du projet par OOPS. [Remarque: ne vous contentez pas d'implémenter OOPS parce que vous vouliez les avoir, ils devraient résoudre votre objectif]
  5. N'oubliez pas: vous apprendrez aussi de vos erreurs .
Chris
la source
0

Mon premier contact avec le monde OO était C ++, ce qui n'était pas un mauvais début. Mais je me suis beaucoup amélioré lors de l'apprentissage de Python. La différence vient des langages: essayer des idées ('comment puis-je résoudre ce problème de façon OO?') En C ++ a besoin de plus de code à écrire et comprend beaucoup plus d'écueils que d'essayer la même idée en Python. Je recommanderais donc Python.

rockportrocker
la source
0

Je ne pense pas que vous devriez chercher dans une autre langue tout en essayant d'apprendre la POO. Pour moi, il est plus facile de saisir la théorie et d'apprendre à l'appliquer si je peux me rapporter à quelque chose que je connais déjà. Trouver une nouvelle syntaxe ne fait qu'empêcher.

Vous pouvez commencer avec n'importe quel livre OOP. Encore une fois, j'en aurais un dans la langue de mon choix. La lecture d'un livre sur le refactoring (style OOP) m'a aidé dans l'application de l'OOP. J'ai pris un projet existant (aucune distraction de la collecte des exigences) et trouvé de nouvelles façons de l'améliorer. Ce n'était pas seulement OOP pour OOP. Ensuite, vous pouvez apprendre à le faire du début à la fin d'un nouveau projet. La logique ici est que vous ne l'obtiendrez pas toujours dès le départ. Si vous pouvez reconnaître où cela est approprié, vous serez mieux. Comme la plupart des choses, cela ne résoudra pas tous les problèmes.

Il existe des limitations précises avec certaines langues. Si votre objectif est d'être le maître de l'héritage multiple, .NET est sorti.

JeffO
la source
0

Je vais aller à l'encontre de la pensée conventionnelle ici et suggérer que les langues les plus simples pour utiliser la POO ne sont pas nécessairement les meilleures langues pour l' apprendre . J'ai d'abord été exposé à OOP avec C ++, mais je ne l'ai pas "compris" avant d'avoir lu le chapitre du livre Camel de Larry Wall sur OOP avec Perl. Pour une raison quelconque, j'ai eu du mal à saisir la différence entre les classes et les objets jusqu'à devoir bénir explicitement un objet dans une classe. Je n'ai pas vraiment compris l'implémentation sous-jacente de la POO avant de le faire en C avec GObject, où aucun de ces détails ne vous est caché. Je n'ai pas vraiment compris les meilleures pratiques avant de suivre un cours en entreprise indépendant de la langue. C'est un très gros sujet,.

Karl Bielefeldt
la source