OOP est trop impliqué pour expliquer dans une réponse StackOverflow, mais l'objectif principal est la suivante:
La programmation procédurale est d'écriture de code qui exécute des actions sur les données. La programmation orientée objet consiste à créer des données qui effectuent des actions sur elle-même.
En programmation procédurale, vous avez des fonctions et vous avez des données. Les données sont structurées mais passives et vous écrivez des fonctions qui effectuent des actions sur les données et les ressources.
Dans la programmation orientée objet, les données et les ressources sont représentées par des objets possédant des propriétés et des méthodes. Ici, les données ne sont plus passives: la méthode est un moyen d'ordonner aux données ou à la ressource d'effectuer une action sur elle-même.
La raison pour laquelle cette distinction est importante est que dans la programmation procédurale, toute donnée peut être inspectée ou modifiée de manière arbitraire par n'importe quelle partie du programme.Vous devez faire attention aux interactions inattendues entre différentes fonctions qui touchent les mêmes données, et vous devez modifier un tas de code si vous choisissez de changer la façon dont les données sont stockées ou organisées. Mais en programmation orientée objet, lorsque l'encapsulation est utilisée correctement, aucun code sauf celui de l'objet ne doit savoir (et ne dépendra donc pas de) comment l'objet de données stocke ses propriétés ou se mute lui-même. Cela contribue grandement à modulariser votre code, car chaque objet a maintenant une interface bien définie, et tant qu'il continue à supporter cette interface et que d'autres objets et fonctions libres l'utilisent via cette interface, les fonctionnements internes peuvent être modifiés sans risque.
De plus, les concepts d'objets, ainsi que l'utilisation de l'héritage et de la composition, vous permettent de structurer structurellement vos données dans votre code. Si vous avez besoin de données représentant un employé, vous créez une classe Employee
. Si vous devez travailler avec une ressource d'imprimante, vous créez une classe Printer
. Si vous devez dessiner des boutons-poussoirs dans une boîte de dialogue, vous créez une classe Button
. De cette façon, non seulement vous obtenez une plus grande modularisation, mais vos modules reflètent un modèle utile des choses du monde réel avec lesquelles votre programme est censé fonctionner.
En fonction de votre description, vous n'avez pratiquement pas effectué de * OOP *. Mettre du code réutilisable dans des méthodes, quand tout est dans le même objet (MainForm) est juste une programmation procédurale régulière. –
@Tyler McHenry: "juste une programmation procédurale régulière" avec des décorations de classe. –
Ces autres questions peuvent vous aider à démarrer: http://stackoverflow.com/questions/2235986/how-can-i-think-in-oop http://stackoverflow.com/questions/2688910/learning-to-think -in-the-orient-way-way http://stackoverflow.com/questions/293152/best-way-to-learn-net-oop-best-practices – Jeff