8
votes

Comment puis-je améliorer ma programmation orientée objet?

Je comprends la programmation procédurale (Eh bien, qui n'a pas) et veulent avoir une bonne compréhension de l'OUP et après cette fonctionnalité. Je ne suis qu'un athléiste donc ça va me prendre un âge et une journée, mais c'est amusant.

Quelqu'un a-t-il des idées pour ce que je peux faire pour aider? Idées de projet? Exemple de code bien documenté thats sur leur?

J'utilise actuellement C ++ mais C # semble beaucoup plus agréable à travailler.


0 commentaires

12 Réponses :


11
votes

Il y a de superbes livres de OOP de tête d'abord couvrant Analyse et conception orientée objet et Modèles de conception orientés objet .


3 commentaires

IMO Meilleur ensemble de livres pour vous aider à rafraîchir les concepts qui diffèrent entre les langues.


Super car les livres sont, il suffit de lire sur OOP dans des livres ne vous en apprendra jamais vraiment à vous. Vous avez vraiment besoin d'une expérience pratique.


Certaines personnes pourraient ne pas aimer la première série de la tête parce qu'ils semblent ciblés aux novices. Les personnes avec même un modicum d'expérience semblent être offensées lorsque vous insiniez qu'un livre ciblé aux novices serait approprié pour eux, mais si vous êtes venu jusqu'à accepter que vous ayez plus à apprendre, ces premiers livres sont génial . Ils donnent des exemples concrets et indiquent les principes de manière claire et concise.



5
votes

Pour vraiment vous mettre à l'aise avec la programmation orientée objet, vous pouvez faire quelques choses.

  1. forcer vous-même pour modéliser un problème mondial réel avec des objets. Créez des cours pour représenter les objets et les méthodes pour représenter des choses qu'ils peuvent faire.

  2. Utilisez une langue et / ou un cadre qui oblige vraiment oop sur vous. Ce n'était pas avant que j'ai pris une classe Java et commençais à utiliser balancer fortement que j'ai vraiment grokked oop. Je n'ai pas beaucoup joué avec C # récemment, mais je pense que c # ou Java serait un bon moyen d'y aller.


0 commentaires

1
votes

Cela dépend de quelles langages vous connaissez. Personnellement, je recommanderais un type de langage de script OO. IE PHP ou Python, je crois que cela vous aidera à transition semi-doucement.


2 commentaires

Je suis fortement en désaccord. PHP et Python ont à la fois des systèmes d'objets très étranges. Python est un peu agréable, mais il fait un travail très médiocre à l'héritage et nécessite le paramètre "Self" explicite, qui peut être déroutant. Le système d'objet de PHP est correct, mais il a de nombreuses bizarreries à la suite d'un patrimoine quelque peu limité de PHP. De l'autre côté, Ruby a un excellent système d'objet et pourrait être un bon choix.


Hmm, je devrais jeter un coup d'œil à Ruby et je suis d'accord, Python a un moyen unique de manipuler des choses. La plupart des programmeurs de procédure continueront d'écrire leur code de cette manière même si elle est à Oo Terre. Merci pour la suggestion de rubis cependant.



2
votes

J'ai récemment converti de PHP en C # et aime chaque minute de celui-ci! Je dirais que je vous retrouve un nouveau projet avec une chronologie flexible et juste plonger. Obtenez un couple de livres aussi, en particulier sur les concepts et les modèles de conception de POOP.


0 commentaires

7
votes

Je vous recommande de lire pensant objet par < Un href = "http://polymorphicpodcast.com/shows/Objectthinking/" rel = "NOREFERRER"> David West . Il y a très peu de code dans le livre, mais beaucoup de discussions sur la façon de modéliser.

Quelques choses que je souhaite que quelqu'un m'aurait dit quand je commençais à partir:

  1. Lors de la modélisation d'objets, vous devez vous concentrer sur des comportements plus que la forme des données.
  2. Bien que de nombreux tutoriels oo modélisent des objets du monde réel tels que des animaux et des véhicules, bon nombre des éléments que nous modélisons dans les logiciels OO sont des concepts et des constructions (des choses qui n'ont aucune représentation physique dans le monde réel).

0 commentaires

7
votes

Je recommanderais de travailler principalement avec une langue fortement tapée comme C # ou Java, car tant de schémas de conception et de principes généraux d'OOP sont orientés vers une frappe forte ( gof , refactoring , oncle Bob ). Ruby est merveilleux mais beaucoup de principes communs d'OOP tels que le codage aux interfaces ne s'appliqueront pas.

Passez un peu de temps avec l'oncle Bob's Solid Principes. Allez lentement, accorder une attention particulière à une responsabilité unique. Si vous n'obtenez rien d'autre de oncle Bob, obtenez SRP dans votre tête et appliquez-le tôt et souvent.

J'aime aussi l'idée de Code Katas de Code de l'oncle Bob. Je recommanderais de travailler via le Kata .


0 commentaires

3
votes

Essayez d'apprendre SmallTalk - meilleure façon d'améliorer votre programmation OO.


0 commentaires

3
votes

Après avoir obtenu une idée de base pour les fondamentaux, le meilleur moyen est d'apprendre par exemple. Téléchargez des projets open source populaires et creusez-vous votre chemin. Quelques projets que j'ai beaucoup appris de:


0 commentaires

1
votes

Je pense que vous pouvez faire des recherches sur le développement dirigé par des tests. Cela oriente automatiquement vous obéissant aux règles des principes orientés objet. C'est la voie pratique mais ça marche. Vous pouvez également soutenir ce processus avec des problèmes thermiques d'apprentissage, tels que des principes solides et des modèles de conception. La lecture du code source des grands projets est également une bonne idée d'améliorer vos compétences orientées objet


0 commentaires

1
votes

Un conseil que je souhaite m'avoir été donné il y a longtemps est:

Ne pas sur-utiliser l'héritage.

C'est un piège vraiment facile pour un débutant (IMHO) tel qu'il est l'un des grands concepts de OOP que tout le monde parle.

Fondamentalement, vous devriez utiliser l'héritage uniquement là où il est vraiment logique - pense que les types de données, certains hiérarchies de widget, des trucs où la relation est si évidente que tout le monde aurait utilisé. Sinon, vous devriez vous injecter des objets dans d'autres et les appeler afin de modifier la fonctionnalité (composition).

Ne soyez pas tenté de définir simplement une charge de méthodes abstraites et de remplacer plusieurs fois pour les implémenter différemment lorsque vous pourriez avoir une seule classe et injecter (argument au constructeur) un objet implémentant une interface que vous appelez à faire quelle que soit la fonctionnalité variable. que vous auriez autrement mis dans les méthodes abstraites. Cela conduira à un code beaucoup plus simple et plus réutilisable (dans mon expérience) et plus testable aussi.


0 commentaires

1
votes

Afin de maîtriser vos compétences orientées objet, vous avez besoin beaucoup de pratique .

Essayez de penser à "Termes d'objet" pour tout ce que vous faites avec le code.

Appliquez-le:
  • dans votre langage côté serveur
  • Gardez votre objet de code de script Java orienté orienté
  • Pensez à garder votre code CSS facilement réutilisable et contient une faible duplicité.


0 commentaires

2
votes

Lire Bertrand Meyer's Oosc2 . C'est probablement le meilleur livre de tous les temps sur la programmation OO.


0 commentaires